如何确定jekyll是在本地运行还是在生产现场运行?

如何确定jekyll是在本地运行还是在生产现场运行?,jekyll,Jekyll,jekyll中有一个名为production\u url的配置参数。我找不到任何关于如何使用它的信息 理想情况下,我希望能够在使用serviceparam运行时使用本地url生成永久链接,在使用buildparam运行时使用生产url生成永久链接 我该怎么做呢?jekyll-serve将调用jekyll-build,因此您不能真正使用这两种方法来输出不同的URL方案 我构建了一个Jekyll插件,它使用一个液体过滤器和一个用户定义的变量来实现这一点,该变量位于\u config.yml中,名为模

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

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


我该怎么做呢?

jekyll-serve
将调用
jekyll-build
,因此您不能真正使用这两种方法来输出不同的URL方案

我构建了一个Jekyll插件,它使用一个液体过滤器和一个用户定义的变量来实现这一点,该变量位于
\u config.yml
中,名为
模式

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

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

<img src="{{ '/img/dog.jpg' | to_absurl }}" />
在本地,可通过以下方式访问:
http://0.0.0.0:4000/img/dog.jpg

模式
生产时,在Jekyll构建/服务后,您将获得一个绝对URL:

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

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

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


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

jekyll serve --baseurl '/blog'
您可以使用-config选项指定用于开发的配置文件

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

生产配置变量在_config.yml中定义。一个选项是为开发创建单独的配置文件

--config _config-dev.yml
您还可以(像我一样)覆盖第二个配置文件中定义的变量

--config _config.yml,_config-dev.yml
如果您将liquid模板用于以下站点链接:

<link rel="stylesheet" href="{{ site.base_url }}/stylesheets/blog.css">
在“发展”中经营杰基尔


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

$ JEKYLL_ENV=production jekyll build
如果不显式设置
JEKYLL_ENV
,则默认为开发

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

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

这对我来说也很有效:

$ JEKYLL_ENV=production jekyll serve

为什么不能使用相对链接?这相当复杂。Tommsy64检查jekyll.environment==“production”的答案非常好,而且是干净的。使用覆盖配置文件的好主意。我创建了一个_config-dev.yml覆盖文件,将“mode:development”放在其中,它可以完美地定义我处于开发模式的时间。谢谢请注意,Netlify不会自动设置此选项;您需要将其添加到“站点设置”中→ 构建和部署→ 环境如果您在
netlify.toml
中定义了自定义build.command,例如
sh netlify.sh
,那么您可以按照
jekyll_ENV=…
的建议,轻松地预先设置jekyll命令。
$ JEKYLL_ENV=production jekyll serve