这是不同的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
用onlyurl: https://localhost
和baseurl: ""
现在要在本地测试:
jekyll build --config _config.yml,_config_dev.yml
要么
jekyll build --config _config.yml,_config_dev.yml --watch
在正式投入生产时,该jekyll build
命令将使用默认值_config.yml
。
site.url
添加css / js资源。这是一个坏主意吗?我应该将所有内容都更改为site.baseurl
,并且site.url
仅用于规范链接和xml feed吗?