【问题标题】:Running jekyll generated files without jekyll / local server?在没有 jekyll / 本地服务器的情况下运行 jekyll 生成的文件?
【发布时间】:2014-11-06 11:27:05
【问题描述】:

我刚刚开始使用 Jekyll。作为前端开发人员,我必须在 Web 应用程序进入开发之前为它们创建大量静态页面。

我正在尝试在没有服务器的情况下在 _site 文件夹中运行 jekyll 生成的文件,因为有时作为我工作流程的一部分,我必须将纯静态 HTML 文件发送给其他开发团队或在演示期间向客户展示 (有时作为 zip 文件夹,因此无法在配置文件中硬编码任何特定路径)

我无法从 file:///C:/Users/ 这样的本地文件夹运行 jekyll 文件,因为所有链接和资产仅在从 jekyll 服务器运行时才有效。

有没有什么方法可以实现。

谢谢

【问题讨论】:

  • 这看起来可能会测试它并恢复。只需一个查询我如何运行该 ruby​​ 插件?还是我只需要将它放在根目录中?谢谢
  • 将其放在_plugins 目录中(您可能需要创建该目录)。您可能需要摆弄您的页面和布局等以使其正常工作,但我认为这是可能的。
  • 谢谢,我会试试的。我对红宝石一无所知,所以对此一无所知

标签: html ruby jekyll


【解决方案1】:

您可以在没有服务器的情况下查看构建的 Jekyll 站点 - 但它需要一个额外的工具。

照常服务您的 Jekyll 网站,并使用 wget 以平面格式克隆您服务的网站。这将适用于 linux 系统:

  • 服务于 Jekyll 网站
  • 打开一个新终端,创建并移动到目标目录
  • 从此目录运行 wget
  • 将生成的目录发送给您的客户

您可能需要使用 wget 设置,但如果您的网站在端口 4000 上提供服务,您可以尝试以下操作:

wget --convert-links -r http://127.0.0.1:4000/

您可能需要小心使用递归标志。见http://www.gnu.org/software/wget/

【讨论】:

【解决方案2】:

这在 Jekyll 根本上是不可能的,因为索引页面是不同的层次结构 (/index) 并且每篇博文都是嵌套的 URL (/posts/about)。因此,每个页面的 CSS 和 Javascript 等 URL 必须不同。对于帖子,它应该是“../css/...”,对于索引,它应该是“./css/”。如果没有正在运行的服务器,这是不可能的。

所以这里有一些选择:

  • 通过“。”作为基本网址。所以你的样式会变成'./css/'。现在您的索引页面可以正常工作,但博客文章不行(他们需要'../')

    jekyll serve --baseurl .
    
  • 将当前文件夹作为基本 URL 传递。现在您不需要服务器了,但是您的 _site 文件夹与您机器的文件夹绑定在一起,并且不完全可移植。

    jekyll serve --baseurl $(pwd)
    
  • 使用轻量级服务器。这将在当前文件夹上启动一个简单的服务器(因此请确保进入 _site 文件夹),因此您不需要安装 jekyll。这在python中默认是可用的,所以你不必单独安装任何东西,只要安装了python。

    python -m SimpleHTTPServer <port>
    

【讨论】:

  • 感谢您的输入..您提到了一些优点,但这个问题的重点是在没有服务器的情况下运行我使用过 python 服务器并且它工作正常,但我正在寻找是否有可能在没有服务器的情况下运行。
  • 没有服务器意味着您使用文件系统为您的页面提供服务,这是我在回答中给您的解决方案。不要试图重新发明轮子!
【解决方案3】:

编辑:我刚刚发布了new answer using relatives links。哪个更便携。

我看到您的问题的三个解决方案:

通过 Github Pages 分发您的代码

使用Github Pages 上的公共或私有存储库为您提供服务。 您可以使用 Octopress 开发的想法将代码和生成的文件存储在存储库的两个不同分支上,并为开发人员提供对纯 html 的访问权限。

将 Jekyll 配置为(几乎)在文件系统上工作

通过使用_config.yml 中的baseurl 配置变量。

如果网站的zip解压到C:/Users/toto/mysite,添加:

# No trailing slash
baseurl: "file:///C:/Users/toto/mysite"

在默认的 Jekyll 模板中,资产被调用:

<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
or
<script src="{{ site.baseurl }}/assets/javascripts/script.js"></script>

链接和图片必须使用baseurl 来:

# html link
<a href="{{ site.baseurl }}{{ page.url }}">{{ page.title }}</a>

# markdown link
[{{ page.title }}]({{ site.baseurl }}{{ page.url }})

# html image
<img src="{{ site.baseurl }}/assets/myimage.png">

# markdown image
![Img title]({{ site.baseurl }}/assets/myimage.png)

注意:任何将permalink 设置为以folder/index.html 结尾的页面 (例如:permalink: /about/)将导致链接指向folder/ 并登陆文件夹的文件列表页面。

为 Win 用户尝试一种奇特的解决方案

你可以试试Portable Jekyll那个seems to work on windows

【讨论】:

  • 感谢您的回复。我已经尝试过您提到的前 2 个解决方案,问题就像我提到的那样,我必须将 ZIP 文件发送给客户或参与项目的其他人,并且基本 url 技巧不是很可靠,因为并非每个人都使用相同的操作系统 &即使它们在同一个操作系统上,也需要在特定位置提取。
  • 部署在 github 或私有服务器上。
  • 感谢您的意见,但这不是我要找的 :)
猜你喜欢
  • 2016-12-11
  • 1970-01-01
  • 2012-08-24
  • 2011-06-23
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
相关资源
最近更新 更多