我刚刚开始与杰基尔合作。作为前端开发人员,我必须在开发之前为Web应用程序创建大量静态页面。
我正在尝试在没有服务器的_site
文件夹中运行jekyll生成的文件作为我工作流程的一部分,我必须将纯静态HTML文件发送给其他开发团队或在演示期间向客户端显示(有时作为zip文件夹,因此无法硬编码配置文件中的任何特定路径)。
我无法从file:///C:/Users/
等本地文件夹运行jekyll文件,因为所有链接和资源仅在从jekyll服务器运行时才有效。
有没有办法实现这一目标。
谢谢
答案 0 :(得分:9)
您可以在没有服务器的情况下查看已构建的Jekyll站点 - 但它需要一个额外的工具。
正常服务您的Jekyll网站,并使用wget以平面格式克隆您提供的网站。这将适用于Linux系统:
您可能需要使用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上的公共或私人存储库为您提供服务。 您可以使用Octopress开发的思想将代码和生成的文件存储在存储库的两个不同分支上,并允许开发人员访问您的普通HTML。
使用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/
,并登陆文件夹的文件列表页面。
您可以尝试Portable Jekyll {/ 3>} seems to work on windows