运行jekyll生成的文件没有jekyll /本地服务器?

时间:2014-11-06 11:27:05

标签: html ruby jekyll

我刚刚开始与杰基尔合作。作为前端开发人员,我必须在开发之前为Web应用程序创建大量静态页面。

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

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

有没有办法实现这一目标。

谢谢

3 个答案:

答案 0 :(得分:9)

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

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

  • 为Jekyll网站服务
  • 打开一个新终端,创建&进入目标目录
  • 从此目录运行wget
  • 将生成的目录发送到您的客户端

您可能需要使用wget设置,但如果您的网站在端口4000上提供,您可以尝试这样的事情:

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

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

答案 1 :(得分:6)

这对于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>
    

答案 2 :(得分:2)

编辑:我刚刚发布了new answer using relatives links。这是更便携的解决方案。

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

通过Github Pages

分发您的代码

使用Github Pages上的公共或私人存储库为您提供服务。 您可以使用Octopress开发的思想将代码和生成的文件存储在存储库的两个不同分支上,并允许开发人员访问您的普通HTML。

将Jekyll配置为(几乎)处理文件系统

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

如果网站的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 {/ 3>} seems to work on windows