站点根目录:Github页面vs.`jekyll--server`

站点根目录:Github页面vs.`jekyll--server`,jekyll,github-pages,Jekyll,Github Pages,当我运行jekyll--server时,我的站点位于http://localhost:4000/,但当我部署到GitHub项目页面时,可以在http://username.github.com/projectname/ 这意味着在引用样式表和其他资源时不能使用绝对URL。例如,index.html和2012/01/01/happy new year.html使用相同布局时,相对URL会中断。向GitHub项目页面存储库添加样式表和其他资源的公认/最佳方法是什么 交叉发布到。我使用jekyll引导

当我运行
jekyll--server
时,我的站点位于
http://localhost:4000/
,但当我部署到GitHub项目页面时,可以在
http://username.github.com/projectname/

这意味着在引用样式表和其他资源时不能使用绝对URL。例如,
index.html
2012/01/01/happy new year.html
使用相同布局时,相对URL会中断。向GitHub项目页面存储库添加样式表和其他资源的公认/最佳方法是什么


交叉发布到。

我使用jekyll引导并在端口4000上本地部署,但我的github页面url是user.github.com…我认为这取决于最初创建repo的方式。最初,我使用github提供的自动页面生成器,它以非常类似于向导的方式创建了repo

我只是按照以下步骤:


希望对您有所帮助

出现此问题是因为在用户和项目页面中,根目录始终是用户url(user.github.com)。我找到了一个解决方案:将
\u config.yml
文件中的
url
变量配置到github项目页面:

safe: true
...
url: "http://user.github.io/project-name"
然后,在布局中,使用绝对引用,使用
site.url
变量执行此操作:

<link rel="stylesheet" href="{{ site.url }}/css/styles.css">
命令行选项在本地模式下覆盖配置文件中的设置。通过这些设置,我可以获得指向正确位置的所有链接,无论是在github中还是在本地模式下


更新:Jekyll 1.0自从Jekyll达到1.0以来,上述选项
server
url
及其相应的命令行选项
--server
--url
已被弃用。新版本的说明:

\u config.yml
文件中,添加变量
baseurl
(不带尾随斜杠):

在布局或页面中,使用
site.baseurl
变量使用绝对引用:

<link rel="stylesheet" href="{{ site.baseurl }}/css/styles.css">
由于命令行中的
--url
已被弃用,因此有另一种解决方案

假设您的URL路径在您的
http://name.github.io/repo
。现在在所有链接中使用绝对URL,如

<link rel="stylesheet" href="/repo/css/syntax.css">

在最新版本的jekyll(1.1.2)中,我发现最好从原始版本创建一个单独的配置文件。唯一的区别是什么?url(或baseurl变量)

默认的_config.yml具有:

url: myurl.com
新配置(我们称之为_preview_config.yml):

这将根据您使用的配置重新分配所有绝对链接。现在要使用预览配置运行服务器,请使用:

jekyll serve -w --config _preview_config.yml

我的简历上有详细的解释

简单回答您的问题:在
\u config.yml

对于CSS/JS链接:
{{site.baseurl}}/CSS/styles.CSS

对于所有其他链接:
{{site.baseurl}}{{post.url}}

Jeykll GH Pages的官方答案如下:

摘录: 项目页面URL结构 有时候,在将
gh页面
分支推到GitHub之前预览你的Jekyll站点是很好的。然而,GitHub用于项目页面的类似子目录的URL结构使URL的正确解析变得复杂。下面是一种利用GitHub项目页面URL结构(
username.GitHub.io/Project name/
)的方法,同时保持在本地预览Jekyll站点的能力

  • \u config.ym
    l中,将
    baseurl
    选项设置为
    /project name
    –注意前面的斜杠和后面没有斜杠。例如:
    baseurl:'/my proj'

  • 当引用JS或CSS文件时,请这样做:
    {{site.baseurl}/path/to/CSS.CSS
    –注意紧跟在变量后面的斜杠(就在“path”之前)

  • 当执行永久链接或内部链接时,请按如下方式执行:
    {{site.baseurl}}{{post.url}}
    ——请注意,这两个变量之间没有斜杠

  • 最后,如果您想在使用
    jekyll-serve
    提交/部署站点之前预览站点,请确保将空字符串传递给
    --baseurl
    选项,这样您就可以正常查看
    localhost:4000
    上的所有内容(开始时没有
    /project-name
    ):例如:
    jekyll-serve--baseurl'


  • 这样,您可以从localhost上的站点根本地预览站点,但是当GitHub从gh pages分支生成页面时,所有URL都将以
    /project name
    开头并正确解析。

    使用相对URL?如果/index.html和/2012/01/01/happy new year/使用相同的布局,则相对URL会中断。如果项目根目录中有资产目录,
    /assets/whatever.js
    将在任何地方工作。有关更多详细信息,请参阅我的答案。我指的是GitHub项目页面,而不是GitHub用户页面。此
    --url
    已被弃用。我不知道如何解决这个问题。有相同的问题。它禁用自定义插件。如果使用github页面,所有插件都将被禁用。虽然这可能会起作用,但我认为使用--baseurl选项的预期方式实际上类似于@SergeyRomanov。在两个答案中,该选项的使用方式相同,即指定项目的基本url。这个问题是关于如何在本地和github中处理项目页面使用github页面的问题。我在文档中找不到对
    url
    命令行选项的弃用,但我认为这个解决方案更好。你能为此提供一个参考吗?你可以在关于
    --url
    的文档中看到,甚至没有提到。lifesaver。我整个上午都在办公桌上,你的回答是唯一有效的。需要有更多的文档/简单的例子来使用它。谢谢大家!+1,除非你
    <link rel="stylesheet" href="/repo/css/syntax.css">
    
    <a href="/repo/license/">License</a>
    
    jekyll --server --baseurl /repo/
    
    url: myurl.com
    
    url: localhost:4000
    
    jekyll serve -w --config _preview_config.yml