如何判断jekyll是在本地运行还是在生产站点运行?

时间:2013-05-21 21:55:09

标签: jekyll

jekyll中有一个名为production_url的配置参数。我找不到有关如何使用它的任何信息。

理想情况下,我希望能够在使用serve param运行时使用本地URL生成固定链接,并在使用build param运行时使用生产URL生成固定链接。

我怎么能这样做?

4 个答案:

答案 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选项指定开发的配置文件。

Jekyll Documentation

您的生产配置变量在_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