这是不同的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吗?