jekyll中有一个名为production_url的配置参数。我找不到有关如何使用它的任何信息。
理想情况下,我希望能够在使用serve
param运行时使用本地URL生成固定链接,并在使用build
param运行时使用生产URL生成固定链接。
我怎么能这样做?
答案 0 :(得分:24)
当您构建Jekyll网站时,可以使用JEKYLL_ENV
环境变量指定用于构建的环境:
JEKYLL_ENV
如果您未明确设置{% if jekyll.environment == "production" %}
// Production environment.
{% endif %}
,则默认为开发。
aggregate
Github Pages自动将环境设置为生产环境。
答案 1 :(得分:23)
我没有在当前版本(v1.4.1)中看到变量production_url,所以这可能是一个过时的问题 - 但我自己只是在寻找这个答案。有一个baseurl属性可以使用标志设置,因此可以更改文件的路径,但它只调整相对路径。
jekyll serve --baseurl '/blog'
您可以使用-config选项指定开发的配置文件。
您的生产配置变量在_config.yml中定义。一种选择是为开发创建单独的配置文件。
--config _config-dev.yml
您也可以(像我一样)覆盖第二个配置文件中定义的变量。
--config _config.yml,_config-dev.yml
如果您使用液体模板进行以下网站链接:
<link rel="stylesheet" href="{{ site.base_url }}/stylesheets/blog.css">
然后你可以在本地开发期间覆盖base_url属性
base_url: http://localhost:4000
在“开发”中运行jekyll
jekyll serve -w --config _config.yml,_config-dev.yml
答案 2 :(得分:4)
jekyll serve
会调用jekyll build
,因此您无法将这两者用作输出不同网址方案的方法。
我构建了一个Jekyll插件,使用 Liquid Filter 和_config.yml
中一个名为mode
的用户定义变量来执行此操作。
您将mode
设置为开发或生产,插件会处理模板中的其余部分。
因此,在您的模板中,您可以使用以下网址:
<img src="{{ '/img/dog.jpg' | to_absurl }}" />
当mode
开发时,根据Jekyll构建/服务,您将获得相对网址:
<img src="/img/dog.jpg" />
在本地,这将被访问为:http://0.0.0.0:4000/img/dog.jpg
当mode
生产时,在Jekyll构建/服务时,您将获得绝对网址:
<img src="http://www.domain.tld/img/dog.jpg" />
http://www.domain.tld
是您在_config.yml
- &gt;中设置的内容url
变量。
您可以在此处查看有关插件的更多详细信息:
http://jhaurawachsman.com/2013/jekyll-url-helper-filter-plugin/
答案 3 :(得分:2)
这对我也很有用:
$ JEKYLL_ENV=production jekyll serve