web-dev-qa-db-ja.com

ジキル投稿は生成されません

Jekyllサイトに新しい投稿を追加しようとしていますが、jekyll serveを実行すると、生成されたページに表示されません。

Jekyll投稿が生成されない一般的な理由は何ですか?

90
aronisstav
203
aronisstav

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

ログからjekyllは2018-01-14-boot-Android-on-charge.mdがスキップされたことがわかりました。これは将来の日付があるためです。

15
fangxing

考えられる理由の1つは、フロントマターで指定されたdateにタイムゾーンオフセットが含まれていないことです。この場合、デフォルトであるUTCであり、ローカルマシンのタイムゾーンではありません。 UTCが現在のローカルタイムゾーンであるBSTに「追いつく」まで、これに1時間を費やしました。

これに対する明確な答えは見つかりませんでしたが、前の問題の日付はUTCでタイムゾーンオフセット(省略した場合はデフォルトでゼロ)で指定する必要があると思います。

date: 2018-05-03 12:34:27TC世界のどこにいても、_config.ymltimezone設定に関係なく。

したがって、次のように日時を指定するよう注意してください。

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

または、_ siteフォルダーではなく、投稿のリストを含むブログのメインページに直接アクセスしている場合は、ブラウザーキャッシュにすることもできます。

2
R.Brown

これらのルールを表現する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構成は、コンテキストで見ることができます here

2
Alex Harvey

私の投稿にもエラーが表示されませんでした、私の名前ではドットを使用しました2017-10-18-test.2.md
これは受け入れられません。2017-10-18-test2.mdを使用する必要があります。

0
J_F

理由をもう1つ追加するために、_draftsから_post、場合によっては_site再生成される記事。

私の場合、よく_siteは再生成前に完全に削除されないため、新しい記事は表示されません。

とにかくrm -rf _siteおよびbundle exec jekyll serve動作:)

0
Tibo