Jekyll帖子未生成


100

我正在尝试在Jekyll网站上添加新帖子,但是运行时在生成的页面上看不到它jekyll serve

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

Answers:


230

1
使用in future:true后没有任何空格会导致ERR:配置文件:(INVALID)。大多数被用来代替。:_config,ymlfuture: true
yaitloutou

另一个可能的原因是因为忘记将.markdown扩展名添加到文件名中。我知道这一点是因为我因此而浪费了5分钟。
H2ONOCK

非常感谢!刚刚搜索了30分钟,直到我了解到有一个日期过滤器后,为什么我的帖子才出现,所以……(在15分钟内,它会“神奇地”工作……)。添加了将来的选项,一切都会按预期进行。我认为默认值为true。
马提亚斯·克莱恩

1
我想念什么。我的帖子在标题中带有冒号,可以吗?raw.githubusercontent.com/alexharv074/alexharv074.github.io/… 在这里看起来还可以吗?alexharv074.github.io
亚历克斯·哈维

1
@AlexHarvey感谢您的评论!确实,这似乎不再是问题。我更新了答案。
aronisstav

19

您可以jekyll build --verbose用来查看构建过程的详细信息。

示例输出:

  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.
        ...

从日志中发现我跳过了,2018-01-14-boot-android-on-charge.md因为它有未来的日期。


6

一个可能的原因是,date前件中的指定不包含时区偏移量,在这种情况下,它默认为UTC,而不是您所期望的本地计算机的时区。我为此花了一个小时,直到UTC赶上了我当前的本地时区BST。

我尚未找到确切的答案,但我认为最重要的日期必须以UTC给出,并带有时区偏移量(如果省略,则默认为零)。

因此,date: 2018-05-03 12:34:27 在UTC无论你是在世界上的,而不管的timezone中设置_config.yml

因此,请谨慎指定这样的日期时间:

date: 2018-05-03 12:34:27 +0100

1
该格式date: 2018-05-03 12:34:27 +01:30似乎也有效。注意其他冒号。
YinglaiYang

浪费了10分钟才意识到这是问题所在。谢谢!
samisnotinsane

2

或者,如果您不在_site文件夹中,而是直接在具有帖子列表的博客主页上查找,它也可以是浏览器缓存。


2

我为我的博客写了Rspec测试,表达了以下规则:

require 'spec_helper'
require 'yaml'

# Documented at https://jekyllrb.com/news/2017/03/02/jekyll-3-4-1-released/
post_regex = %r!^(?:.+/)*(\d{2,4}-\d{1,2}-\d{1,2})-(.*)(\.[^.]+)$!

def date_in_front_matter(date)
  return date if date.is_a?(Date)
  return date.to_date if date.is_a?(Time)
  return Date.parse(date) if date.is_a?(String)
end

describe 'posts' do
  Dir.glob("_posts/*md").each do |file|
    basename = File.basename(file)

    context basename do
      front_matter = YAML.load(File.read(file).split(/---/)[1])

      it 'filename must match documented post regex' do
        expect(basename).to match post_regex
      end

      it 'date in file name same day as date in front matter' do
        date_in_file_name = Date.parse(post_regex.match(basename).captures[0])
        expect(date_in_front_matter(front_matter['date'])).to eq date_in_file_name
      end

      it 'title in front matter should not contain a colon' do
        expect(front_matter['title']).to_not match /:/
      end

      it 'front matter should not have published: false' do
        expect(front_matter['published']).to_not be false
      end
    end
  end
end

这可能对其他人有用,因为我由于约会等方面的错字而浪费了很多时间。

这些测试以及Rspec配置的其余部分可以在上下文中找到


2

只是增加一个原因,当您将文章从_drafts移到时_post,有时您需要删除_site以便重新生成文章。

就我而言,这种情况经常发生,_site在重新生成之前不会被完全删除,因此不会出现新文章。

无论如何rm -rf _sitebundle exec jekyll serve作品:)


1

如果你是无法跟踪文件--verbose,如果文件被自动忽略然后尝试删除collections_dir该的config.yml文件。那为我解决了这个问题。


0

我的帖子也没有出现错误,就是以我的名义使用了一个点,例如2017-10-18-test.2.md
不接受,您必须使用2017-10-18-test2.md


0

如果您已经检查过您的首要问题,而且一切似乎都很好,甚至jekyll build --verbose什么都没有显示(在我的情况下,它的作用就好像文件根本不存在,甚至没有将其列为排除项),请检查编码文件。显然,它需要UTF-8没有签名。是它UTF-8 BOM(或UTF-8 with Signature某些文本编辑器称之为),那么它将被静默忽略。更糟的是,某些编辑器会将这两种类型都显示为just UTF-8,从而使差异更加难以发现。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.