我的jekyll博客模板包含资源和页面的链接,如下所示:
{{ site.url }}/my-page.html
这在部署中很有效,但是当我jekyll serve
在开发中运行时,所有链接都指向实时页面而不是开发页面.
my-site-url/my-page.html # But I want this in development localhost:4000/my-page.html
有没有办法让jekyll {{ site.url }}
在开发中使用不同的东西?
这是不同Jekyll环境之间的常见问题.
我们需要了解site.url
并且site.baseurl
在哪种情况下我们需要它们.这些变量不能用于同一目的.
site.url
默认情况下,此变量仅在canonical
页眉中用于标题和RSS link
.它也在xml提要中用于指向站点资源,因为管理此提要的软件不知道资源的URL.
此变量仅对外部系统是必需的.
site.baseurl
此变量指示Jekyll站点的根文件夹.默认情况下,它设置为""
(空字符串).这意味着你的Jekyll网站是其根源http://example.com
.
如果你的Jekyll网站存在http://example.com/blog
,你必须设置site.baseurl
为/blog
(注意斜线).这将允许资产(css,js)正确加载.
了解资产如何加载到您的头脑中:
<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
也可以是:
<link rel="stylesheet" href="{{ site.baseurl }}/css/main.css">
现在,您必须在本地测试您的站点并将其部署到生产环境中.有时,它baseurl
是不同的,并且jekyll build
在其中一个环境中可能无法开箱即用.
这里我们有两个解决方案:
jekyll serve
让我们假设您的网站位于github存储库中,并在其中提供服务https://username.github.io/myProject
.
您可以设置baseurl
为/myProject
.并在本地测试您的网站jekyll serve
,您的网站将在http://127.0.0.1:4000/myProject/
如果由于某种原因导致您无法使用jekyll serve
,则可以为两个环境设置配置文件,jekyll build
具体取决于您的部署位置.
假设我们有本地网站服务,http://localhost
生产网站服务于https://username.github.io/myProject
.
我们离开_config.yml
与url: https://username.github.io
和baseurl: /myProject
我们_config_dev.yml
只用url: https://localhost
和创造一个新的baseurl: ""
现在在本地测试:
jekyll build --config _config.yml,_config_dev.yml
要么
jekyll build --config _config.yml,_config_dev.yml --watch
按下生产时,该jekyll build
命令将使用默认值_config.yml
.