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

Nis*_*ant 8 html ruby jekyll

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

我试图在_site没有服务器的情况下在文件夹内运行jekyll生成的文件作为我的工作流程的一部分我必须将纯静态HTML文件发送到其他开发团队或在演示期间向客户端显示(有时作为zip文件夹,所以不能硬编码配置文件中的任何特定路径).

我无法从本地文件夹运行jekyll文件,file:///C:/Users/因为所有链接和资产仅在从jekyll服务器运行时才起作用.

有什么办法可以实现这一目标.

谢谢

Dav*_*ara 11

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

像往常一样为您的Jekyll网站提供服务,并使用wget以平面格式克隆您提供的服务网站.这将适用于Linux系统:

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

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

wget --convert-links -r http://127.0.0.1:4000/
Run Code Online (Sandbox Code Playgroud)

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


Sub*_*has 6

这对于Jekyll来说基本上是不可能的,因为索引页面是不同的层次结构(/ index),每个博客帖子都是嵌套的URL(/ posts/about).因此,对于每个页面,CSS和Javascript等内容的URL必须不同.对于帖子,它应该是"../ css/...",对于索引,它应该是"./css/".没有正在运行的服务器,这是不可能的.

所以这里有一些选项:

  • 通过"." 作为基本网址.所以你的风格将成为'./css/'.现在您的索引页面工作正常,但博客文章不会(他们需要'../')

    jekyll serve --baseurl .
    
    Run Code Online (Sandbox Code Playgroud)
  • 将当前文件夹作为基本URL传递.现在您不需要服务器,但您的_site文件夹与您机器的文件夹相关联,而且不是完全可移植的.

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

    python -m SimpleHTTPServer <port>
    
    Run Code Online (Sandbox Code Playgroud)


Dav*_*uel 2

编辑:我刚刚使用亲戚链接发布了一个新答案。这是更便携的解决方案。

我看到你的问题的三种解决方案:

通过 Github Pages 分发您的代码

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

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

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

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

# No trailing slash
baseurl: "file:///C:/Users/toto/mysite"
Run Code Online (Sandbox Code Playgroud)

在默认的 Jekyll 模板中,资产通过以下方式调用:

<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
or
<script src="{{ site.baseurl }}/assets/javascripts/script.js"></script>
Run Code Online (Sandbox Code Playgroud)

链接和图像必须使用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)
Run Code Online (Sandbox Code Playgroud)

注意:任何具有以 (例如:)permalink结尾的页面都将导致链接定位并登陆到文件夹的文件列表页面。folder/index.htmlpermalink: /about/folder/

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

您可以尝试一下似乎可以在 Windows 上运行的Portable Jekyll