有没有办法在Jekyll的_config.yml文件中使用我的bash环境变量(比如$FOO)?
_config.yml
$FOO
我试过使用:
foo = <%= ENV['FOO'] %>
但它不起作用,因为Ruby代码没有被解释。
使用的版本:
f45qwnt81#
如果您的目标是将环境变量用作流动项目{{ site.something }},则可以在您的Gemfile中执行以下操作:
{{ site.something }}
Gemfile
gem 'jekyll-environment-variables', group: :jekyll_plugins
然后,您将能够使用{{ site.env.HOME }},并期望在输出的HTML中将其转换为类似/home/ubuntu的内容。
{{ site.env.HOME }}
/home/ubuntu
爆料:我是the gem的所有者,很早就开始个人使用了。
euoag5mw2#
@elryco给出的答案很接近,但并不完全正确,至少对我的设置来说是这样。它经过了一些试错,但最终还是奏效了。注意:这只适用于Content插件支持的某些env变量。
请注意,您需要gem jekyll-contentful-data-import(v1.7.0或更高版本)才能使此解决方案实际工作。
jekyll-contentful-data-import
Bash环境(例如,~/.bash_profile):
~/.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文档中的内容相同。
js81xvg63#
我最近不得不试着自己做这件事。原来您不能将环境变量直接放到Jekyll配置文件中,但您可以*编写一个rake任务,该任务将获取环境变量并将它们应用到您的配置中。
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
3条答案
按热度按时间f45qwnt81#
如果您的目标是将环境变量用作流动项目
{{ site.something }}
,则可以在您的Gemfile
中执行以下操作:然后,您将能够使用
{{ site.env.HOME }}
,并期望在输出的HTML中将其转换为类似/home/ubuntu
的内容。爆料:我是the gem的所有者,很早就开始个人使用了。
euoag5mw2#
@elryco给出的答案很接近,但并不完全正确,至少对我的设置来说是这样。它经过了一些试错,但最终还是奏效了。注意:这只适用于Content插件支持的某些env变量。
请注意,您需要gem
jekyll-contentful-data-import
(v1.7.0或更高版本)才能使此解决方案实际工作。Bash环境(例如,
~/.bash_profile
):在
_config.yml
中,将它们引用为:这与Github文档中的内容相同。
js81xvg63#
我最近不得不试着自己做这件事。原来您不能将环境变量直接放到Jekyll配置文件中,但您可以*编写一个
rake
任务,该任务将获取环境变量并将它们应用到您的配置中。下面是一个例子: