在jekyll本地开发期间将site.url更改为localhost
我的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
有没有办法让{{ site.url }}
在开发中使用不同的{{ site.url }}
?
这是不同的Jekyll环境之间的共同问题。
一些解释
我们需要了解site.url
和site.baseurl
以及我们在哪种情况下需要它们。 这些variables不能达到同样的目的。
site.url
默认情况下,这个variables只在canonical
头和RSS link
页头中使用。 它也被用在xml提要中指向站点资源,因为pipe理这个提要的软件不知道资源的URL。
这个variables只对外部系统是必需的。
site.baseurl
这个variables表明你的Jekyll站点的根文件夹。 默认情况下它被设置为""
(空string)。 这意味着您的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">
在不同的环境中工作
现在,您必须在本地testing您的站点并将其部署到生产环境中。 有时, baseurl
是不同的,在这样的环境之一, baseurl
jekyll build
可能不能在箱子外面工作。
这里我们有两个解决scheme:
使用jekyll serve
假设您的网站位于github存储库中,并在https://username.github.io/myProject
。
您可以将baseurl
设置为/myProject
。 并使用jekyll serve
在本地testing您的网站,您的网站将在http://127.0.0.1:4000/myProject/
使用多个configuration文件
如果由于某种原因,您无法使用jekyll serve
,则可以根据您部署的位置为环境和jekyll build
设置configuration文件。
假设我们在http://localhost
上提供了本地站点,在https://username.github.io/myProject
上提供了生产站点。
我们离开_config.yml
与url: https://username.github.io
baseurl: /myProject
和baseurl: /myProject
我们只用url: https://localhost
创build一个新的_config_dev.yml
url: https://localhost
和baseurl: ""
现在在本地testing:
jekyll build --config _config.yml,_config_dev.yml
要么
jekyll build --config _config.yml,_config_dev.yml --watch
在生产中推送时, jekyll build
命令将使用默认的_config.yml
。