有没有办法检查本地是否提供 jekyll 站点服务?

Is there a way to check whether a jekyll site is being served locally?

我想仅在 运行 jekyll serve 本地时将以下行添加到我的 head.html 中:

  <script src="http://127.0.0.1:35729/livereload.js?snipver=1"></script>

如果可能的话,我正在考虑使用一些简单的液体检查。

当您在本地执行 jekyll serve 时,默认 {{ jekyll.environment }} 变量设置为 "development"

然后你可以做一个简单的:

{% if jekyll.environment == "development" %}
  <script src="http://127.0.0.1:35729/livereload.js?snipver=1"></script>
{% endif %}

如果你想在另一台服务器上运行 jekyll,使用另一个environment值,你可以设置一个JEKYLL_ENV 系统环境变量随心所欲。

在 运行 时设置这个变量可以像这样完成:

JEKYLL_ENV=production jekyll serve

注意:在 Github 页上,jekyll.environment 设置为 production

替代解决方案(例如,如果您将 Jekyll 站点托管在自己的服务器上而不是 GitHub 页面上):

您可以在配置文件 _config.yml 中设置一个值,如下所示:

environment: prod

然后,你可以有另一个覆盖相同值的配置文件,我称之为 config_dev.yml:

environment: dev

当您调用 jekyll build 时,它将使用真实配置文件中的值 prod

但是当您在本地计算机上构建站点进行测试时,您将按以下顺序传递两个配置文件:

jekyll build --config _config.yml,_config_dev.yml

第二个配置文件的值将覆盖第一个配置文件的值,因此 environment 将设置为 dev

然后您可以按照 David 的回答中所述进行相同操作:

{% if site.environment == "dev" %}
  <script src="http://127.0.0.1:35729/livereload.js?snipver=1"></script>
{% endif %}

你可以在the source code of my blog中看到一个例子:

To preview your site with drafts, run jekyll serve or jekyll build with the --drafts switch. Each will be assigned the value modification time of the draft file for its date, and thus you will see currently edited drafts as the latest posts.

你试过这个吗?

https://jekyllrb.com/docs/posts/