有没有办法检查jekyll网站是否在本地提供?

pep*_*ico 4 liquid jekyll

我想head.htmljekyll serve本地运行时添加以下行:

  <script src="http://127.0.0.1:35729/livereload.js?snipver=1"></script>
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*uel 10

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

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

{% if jekyll.environment == "development" %}
  <script src="http://127.0.0.1:35729/livereload.js?snipver=1"></script>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

如果要在另一个服务器上运行jekyll,使用其他environment值,可以将JEKYLL_ENV 系统环境变量设置为您想要的任何值.

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

JEKYLL_ENV=production jekyll serve
Run Code Online (Sandbox Code Playgroud)

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


Chr*_*cht 8

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

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

environment: prod
Run Code Online (Sandbox Code Playgroud)

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

environment: dev
Run Code Online (Sandbox Code Playgroud)

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

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

jekyll build --config _config.yml,_config_dev.yml
Run Code Online (Sandbox Code Playgroud)

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

然后你可以按照David的回答中描述的那样做:

{% if site.environment == "dev" %}
  <script src="http://127.0.0.1:35729/livereload.js?snipver=1"></script>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

您可以在我的博客的源代码中看到一个示例: