15

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

理想情况下,我希望能够在使用参数运行时使用本地 url 生成永久链接,并在使用serve参数运行时使用生产 url生成永久链接build

我怎么能那样做?

4

4 回答 4

28

当您构建 Jekyll 网站时,可以使用JEKYLL_ENV环境变量指定它用于构建的环境:

$ JEKYLL_ENV=production jekyll build

如果您没有JEKYLL_ENV明确设置,则默认为开发。

{% if jekyll.environment == "production" %}
    // Production environment.
{% endif %}

Github Pages 自动将环境设置为生产环境。

于 2016-07-18T22:12:44.433 回答
25

我在当前版本(v1.4.1)中看不到变量 production_url,所以这可能是一个过时的问题——但我自己只是在寻找这个答案。有一个 baseurl 属性可以设置一个标志,以便更改文件的路径,但它只调整相对路径。

jekyll serve --baseurl '/blog'

您可以做的是使用 -config 选项指定用于开发的配置文件。

Jekyll 文档

您的生产配置变量在 _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
于 2013-12-14T19:22:05.693 回答
4

jekyll serve将调用jekyll build,因此您不能真正使用这两个作为输出不同 URL 方案的方式。

我构建了一个 Jekyll 插件,它使用Liquid 过滤器和一个用户定义的变量在您_config.yml调用的mode.

您将其设置mode开发生产,插件会处理模板中的其余部分。

因此,在您的模板中,您可以有一个 URL,例如:

<img src="{{ '/img/dog.jpg' | to_absurl }}" />

mode什么时候development,在 Jekyll build/serve 时,你会得到一个相对URL:

<img src="/img/dog.jpg" />

在本地,这将被访问为:http://0.0.0.0:4000/img/dog.jpg

何时生产,在 Jekyll 构建/服务时,您将获得一个mode绝对URL

<img src="http://www.domain.tld/img/dog.jpg" />

http://www.domain.tld是您在_config.yml->url变量中设置的内容。

您可以在此处查看有关插件的更多详细信息:

http://jhaurawachsman.com/2013/jekyll-url-helper-filter-plugin/

于 2013-05-26T20:49:25.410 回答
3

这也对我有用:

$ JEKYLL_ENV=production jekyll serve
于 2016-11-20T23:54:29.740 回答