没有生成Jekyll post
我正在尝试向我的Jekyll站点添加一篇新文章,但是当我运行没有生成Jekyll post,jekyll,Jekyll,我正在尝试向我的Jekyll站点添加一篇新文章,但是当我运行Jekyll-serve时,我无法在生成的页面上看到它 不生成Jekyll帖子的常见原因有哪些? 文章未放在\u posts目录中。 帖子应命名为年-月-日title.MARKUP(注意MARKUP扩展名,通常是.md或.markdown) 文章的日期在将来。您可以通过在\u config.yml 将其设置为true 将其替换为和#58。适用于jekyll3.8.3(可能也适用于其他“最新”版本) 或者,如果您不是在网站文件夹中而是直接
Jekyll-serve
时,我无法在生成的页面上看到它
不生成Jekyll帖子的常见原因有哪些?- 文章未放在
目录中。\u posts
- 帖子应命名为
(注意年-月-日title.MARKUP
扩展名,通常是MARKUP
或.md
).markdown
- 文章的日期在将来。您可以通过在
\u config.yml
- 将其设置为
true
- 将其替换为
。适用于jekyll和#58
(可能也适用于其他“最新”版本)3.8.3
2017-10-18-test.2.md
这是不可接受的,您必须使用
2017-10-18-test2.md
您可以使用jekyll build--verbose
详细查看构建过程
Exmaple输出:
Logging at level: debug
Configuration file: /home/fangxing/fffx.github.io/_config.yml
Logging at level: debug
Requiring: jekyll-archives
Requiring: jekyll-livereload
Requiring: kramdown
Source: /home/fangxing/fffx.github.io
Destination: /home/fangxing/fffx.github.io/_site
Incremental build: enabled
Generating...
EntryFilter: excluded /Gemfile
EntryFilter: excluded /Gemfile.lock
Reading: _posts/2018-01-14-new-post.md
Reading: _posts/2014-01-01-example-content.md
Reading: _posts/2014-01-02-introducing-lanyon.md
Reading: _posts/2017-11-21-welcome-to-jekyll.markdown
Reading: _posts/2018-01-14-boot-android-on-charge.md
Reading: _posts/2013-12-31-whats-jekyll.md
Skipping: _posts/2018-01-14-boot-android-on-charge.md has a future date
Generating: Jekyll::Archives::Archives finished in 0.000122873 seconds.
Generating: JekyllFeed::Generator finished in 0.000468846 seconds.
...
从日志中,我发现Jekly跳过了
2018-01-14-boot-android-on-charge.md
,因为它有一个未来的日期。一个可能的原因是前面指定的日期不包含时区偏移,在这种情况下,它默认为UTC,而不是您可能期望的本地机器的时区。我在这上面浪费了一个小时,直到UTC“赶上”了我当前的本地时区BST
我还没有找到一个明确的答案,但我认为前面的日期必须以UTC给出,并带有时区偏移(如果省略,默认为零)
因此,无论您身在何处,也无论\u config.yml
中的时区设置如何,日期:2018-05-03 12:34:27
都在UTC中
因此,请注意如下指定日期时间:
date: 2018-05-03 12:34:27 +0100
我已经为我的博客编写了Rspec测试,表达了以下规则:
require'spec\u helper'
需要“yaml”
#记录于https://jekyllrb.com/news/2017/03/02/jekyll-3-4-1-released/
post_regex=%r^(?:.+/)*(\d{2,4}-\d{1,2}-\d{1,2})-(.*)(\.[^.]+)$!
定义日期在前面的事项(日期)
返回日期,如果日期为?(日期)
返回日期。截止日期如果日期是?(时间)
返回日期。如果Date.is_是?(字符串),则解析(日期)
结束
描述“帖子”是怎么做的
Dir.glob(“_posts/*md”)。每个do文件|
basename=File.basename(文件)
上下文基名称do
front\u matter=YAML.load(File.read(File.split)(/--/)[1])
它的“文件名必须与记录的post regex”匹配
expect(basename).与post_regex匹配
结束
它“文件名中的日期与前面的日期相同”吗
文件中的日期\u\u name=date.parse(post\u regex.match(basename.captures[0])
期望(前面的日期)(前面的日期['date'])。将文件名中的日期相等
结束
它“前面的标题不应包含冒号”do
期望(前面的内容['title'])。不匹配/:/
结束
它‘前面的事不应该发表:假’吗
期望(前面的事情[已发表])。不要是假的
结束
结束
结束
结束
这可能对其他人有用,因为我因为日期等方面的错误而浪费了很多时间
这些测试以及Rspec配置的其余部分可以在上下文中看到。只是为了增加一个原因,当您将文章从\u草稿
移动到\u发布
时,有时需要删除\u站点
,以便重新生成文章
在我的例子中,\u站点
在重新生成之前不会被完全删除,因此新文章不会出现
无论如何rm-rf\u站点
和bundle exec-jekyll-service
works:)如果您已经检查了前面的事情,并且一切看起来都很好,甚至jekyll-build-verbose
也没有透露任何信息(在我的情况下,它只是表现得好像文件根本不存在,甚至没有将其列为排除文件),检查文件的编码。显然,它需要是不带签名的UTF-8
。它是UTF-8bom
(或者一些文本编辑器称之为带有签名的UTF-8
),然后它将被默默忽略。更糟糕的是,一些编辑器会将这两种类型显示为仅UTF-8
,使差异更加难以识别。如果无法在--verbose
中跟踪文件,并且如果文件被静默忽略,则尝试删除config.yml
文件中的集合目录。这就解决了我的问题。在\u配置中使用future:true
后没有空格的:
,yml
会导致错误:配置文件:(无效)future:true
大多数文件都可以改为使用。另一个可能的原因是忘记在文件名中添加.markdown
扩展名。我知道这一点,因为我为此浪费了5分钟的生命。非常感谢!我只搜索了30分钟为什么我的帖子没有出现,直到我知道有一个日期过滤器。。。(15分钟后,它将“神奇地”工作……)。添加了“未来”选项,一切正常。在我看来,真应该是默认的。我错过了什么。我的帖子标题中有个冒号,可以吗?这里看起来还可以吗@谢谢你的评论!这似乎不再是一个问题。我更新了我的答案。格式日期:2018-05-03 12:34:27+01:30
似乎也适用。注意额外的冒号。浪费了10分钟才意识到这就是问题所在。谢谢