如何在Jekyll配置文件中使用环境变量?

gopyfrb3  于 2022-09-21  发布在  Ruby
关注(0)|答案(3)|浏览(199)

有没有办法在Jekyll的_config.yml文件中使用我的bash环境变量(比如$FOO)?

我试过使用:

foo = <%= ENV['FOO'] %>

但它不起作用,因为Ruby代码没有被解释。

使用的版本:

  • Ruby:2.1.2
  • Jekyll:2.5.3
f45qwnt8

f45qwnt81#

如果您的目标是将环境变量用作流动项目{{ site.something }},则可以在您的Gemfile中执行以下操作:

gem 'jekyll-environment-variables', group: :jekyll_plugins

然后,您将能够使用{{ site.env.HOME }},并期望在输出的HTML中将其转换为类似/home/ubuntu的内容。

爆料:我是the gem的所有者,很早就开始个人使用了。

euoag5mw

euoag5mw2#

@elryco给出的答案很接近,但并不完全正确,至少对我的设置来说是这样。它经过了一些试错,但最终还是奏效了。注意:这只适用于Content插件支持的某些env变量。

请注意,您需要gem jekyll-contentful-data-import(v1.7.0或更高版本)才能使此解决方案实际工作。

Bash环境(例如,~/.bash_profile):

export CONTENTFUL_ACCESS_TOKEN=foo
export CONTENTFUL_SPACE_ID=bar

_config.yml中,将它们引用为:

contentful:
  spaces:
    - example:
        space:        ENV_CONTENTFUL_SPACE_ID
        access_token: ENV_CONTENTFUL_ACCESS_TOKEN

这与Github文档中的内容相同。

js81xvg6

js81xvg63#

我最近不得不试着自己做这件事。原来您不能将环境变量直接放到Jekyll配置文件中,但您可以*编写一个rake任务,该任务将获取环境变量并将它们应用到您的配置中。

下面是一个例子:


# Rakefile

require 'jekyll'

task default: %w[build]

desc "Build the site"
task :build do
  config = Jekyll.configuration({
    url: ENV["SITE_URL"],
  })
  site = Jekyll::Site.new(config)
  Jekyll::Commands::Build.build(site, config)
end

相关问题