Подтвердить что ты не робот

Сообщение Jekyll не создано

Я пытаюсь добавить новое сообщение на мой сайт Jekyll, но я не вижу его на сгенерированных страницах, когда я запускаю jekyll serve.

Каковы некоторые общие причины, по которым сообщение Jekyll не генерируется?

4b9b3361

Ответ 1

Ответ 2

Вы можете использовать jekyll build --verbose для детального просмотра процесса сборки.

Exmaple output:

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

из журнала я обнаружил, что jeklly пропустил 2018-01-14-boot-android-on-charge.md потому что у него есть будущая дата.

Ответ 3

Или это может быть кеш браузера, если вы ищете не папку _site, а непосредственно на главной странице блога со списком сообщений.

Ответ 4

Я написал тесты 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 можно увидеть в контексте здесь.

Ответ 5

Одной из возможных причин является то, что date указанная в предварительном материале, не содержит смещения часового пояса, в этом случае по умолчанию используется UTC, а не часовой пояс локального компьютера, как вы могли ожидать. Я потратил на это час, пока UTC не "догнал" мой текущий часовой пояс, BST.

Я не нашел однозначного ответа на этот вопрос, но я думаю, что дата в основном вопросе должна быть указана в UTC со смещением часового пояса (по умолчанию оно равно нулю, если оно опущено).

Итак, date: 2018-05-03 12:34:27 находится в UTC независимо от того, где вы находитесь в мире, и независимо от установки timezone в _config.yml.

Так что будьте осторожны, указав дату и время:

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

Ответ 6

В моем сообщении также не появилось сообщение об ошибке, что в моем имени я использовал точку, например. 2017-10-18-test.2.md.
Это не принято, вы должны использовать 2017-10-18-test2.md.

Ответ 7

Просто чтобы добавить еще одну причину, когда вы перемещаете статью из _drafts в _post, вам иногда нужно удалить _site для статьи, которая будет регенерирована.

В моем случае часто случается, что _site не будет полностью удален перед повторной генерацией, поэтому новая статья не появится.

В любом случае, rm -rf _site и bundle exec jekyll serve работает :)