在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 。