当我运行jekyll --server
我的网站在http://localhost:4000/
时可用,但当我部署到GitHub项目页面时,它可以在http://username.github.com/projectname/
处获得。
这意味着在引用样式表和其他资源时我不能使用绝对URL。当相同的布局被例如使用时,相对URL中断。 index.html
和2012/01/01/happy-new-year.html
。将样式表和其他资源添加到GitHub项目页面存储库的接受/好方法是什么?
交叉发布到GitHub Issues。
答案 0 :(得分:29)
出现此问题的原因是根目录始终是用户和项目页面中的用户URL(user.github.com)。我找到了一个解决方案:将url
文件中的_config.yml
变量配置到github项目页面:
safe: true
...
url: "http://user.github.io/project-name"
然后,在布局中,使用绝对引用,使用site.url
变量来执行此操作:
<link rel="stylesheet" href="{{ site.url }}/css/styles.css">
使用以下命令运行服务器:
$jekyll --server --url=http://localhost:4000
命令行选项以本地模式覆盖配置文件中的设置。通过这些设置,我可以获得指向正确位置的所有链接,这些链接都以github和本地模式托管。
更新:Jekyll 1.0 由于Jekyll达到1.0,上述选项server
和url
及其各自的命令行选项--server
和--url
已被弃用。新版本的说明:
在_config.yml
文件中,添加变量baseurl
(不带斜杠):
baseurl: "http://user.github.io/project-name"
在布局或页面中,使用绝对引用,使用site.baseurl
变量:
<link rel="stylesheet" href="{{ site.baseurl }}/css/styles.css">
然后,运行本地服务器(baseurl选项有意为空):
$ jekyll serve --watch --baseurl=
有关docs的更改的详细信息。
答案 1 :(得分:4)
由于命令行中的--url
已被弃用,因此还有另一种解决方案。
假设您{J} {1}}中的网址路径为repo
。现在在所有链接中使用绝对URL,如
http://name.github.io/repo
或链接
<link rel="stylesheet" href="/repo/css/syntax.css">
现在您只需要在本地运行命令行时将<a href="/repo/license/">License</a>
添加到命令行。
--baseurl
答案 2 :(得分:2)
在最新版本的jekyll(1.1.2)中,我发现最好从原始版本创建一个单独的配置文件。唯一的区别? url(或baseurl变量)。
默认的_config.yml有:
url: myurl.com
新配置(让我们称之为_preview_config.yml):
url: localhost:4000
这将根据您使用的配置重新分配所有绝对链接。现在使用预览配置运行服务器:
jekyll serve -w --config _preview_config.yml
我的blog上有完整的解释。
答案 3 :(得分:2)
简要回答您的问题:在baseurl: '/project-name'
_config.yml
对于CSS / JS链接:{{ site.baseurl }}/css/styles.css
对于所有其他链接:{{ site.baseurl }}{{ post.url }}
官方的Jeykll GH-Pages答案在这里:http://jekyllrb.com/docs/github-pages/
有时在将gh-pages
分支推送到GitHub之前预览您的Jekyll网站会很不错。但是,GitHub用于项目页面的子目录式URL结构使URL的正确解析变得复杂。这是一种利用GitHub项目页面URL结构(username.github.io/project-name/
)的方法,同时保持在本地预览Jekyll站点的能力。
在_config.ym
l中,将baseurl
选项设置为/project-name
- 请注意前导斜杠和缺少尾部斜杠。例如:baseurl: '/my-proj'
在引用JS或CSS文件时,请执行以下操作:{{ site.baseurl}}/path/to/css.css
- 请注意紧跟在变量之后的斜杠(就在“路径”之前)。
执行永久链接或内部链接时,请执行以下操作:{{ site.baseurl }}{{ post.url }}
- 请注意两个变量之间没有斜杠。
最后,如果您想在使用jekyll serve
提交/部署之前预览您的网站,请确保将空字符串传递给--baseurl
选项,以便您可以查看所有内容通常在localhost:4000
开头(开头没有/project-name
):例如:jekyll serve --baseurl ''
通过这种方式,您可以从localhost上的站点根目录本地预览您的站点,但是当GitHub从gh-pages分支生成您的页面时,所有URL都将以/project-name
开头并正确解析。
答案 4 :(得分:0)
我使用jekyll-bootstrap并在端口4000本地部署,但我的github页面url是user.github.com ...我认为这取决于你最初创建repo的方式。最初我使用了github提供的自动页面构建器,它以非常向导的方式创建了repo。
我只是按照以下步骤操作:
希望有所帮助