没有生成Jekyll post

没有生成Jekyll post,jekyll,Jekyll,我正在尝试向我的Jekyll站点添加一篇新文章,但是当我运行Jekyll-serve时,我无法在生成的页面上看到它 不生成Jekyll帖子的常见原因有哪些? 文章未放在\u posts目录中。 帖子应命名为年-月-日title.MARKUP(注意MARKUP扩展名,通常是.md或.markdown) 文章的日期在将来。您可以通过在\u config.yml 将其设置为true 将其替换为和#58。适用于jekyll3.8.3(可能也适用于其他“最新”版本) 或者,如果您不是在网站文件夹中而是直接

我正在尝试向我的Jekyll站点添加一篇新文章,但是当我运行
Jekyll-serve
时,我无法在生成的页面上看到它

不生成Jekyll帖子的常见原因有哪些?

  • 文章未放在
    \u posts
    目录中。
  • 帖子应命名为
    年-月-日title.MARKUP
    (注意
    MARKUP
    扩展名,通常是
    .md
    .markdown
  • 文章的日期在将来。您可以通过在
    \u config.yml
  • 将其设置为
    true
  • 将其替换为
    和#58
    。适用于jekyll
    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分钟才意识到这就是问题所在。谢谢