Я пытаюсь добавить новое сообщение на мой сайт Jekyll, но я не вижу его на сгенерированных страницах, когда я запускаю jekyll serve
.
Каковы некоторые общие причины, по которым сообщение Jekyll не генерируется?
Я пытаюсь добавить новое сообщение на мой сайт Jekyll, но я не вижу его на сгенерированных страницах, когда я запускаю jekyll serve
.
Каковы некоторые общие причины, по которым сообщение Jekyll не генерируется?
_posts
.YEAR-MONTH-DAY-title.MARKUP
(обратите внимание на расширение MARKUP
, обычно это .md
или .markdown
)future: true
в _config.yml
(документация)published: false
в его передней части. Установите это в true
.:
:
.3.8.3
(и, вероятно, в других "последних" выпусках). Вы можете использовать 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
потому что у него есть будущая дата.
Или это может быть кеш браузера, если вы ищете не папку _site, а непосредственно на главной странице блога со списком сообщений.
Я написал тесты 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 можно увидеть в контексте здесь.
Одной из возможных причин является то, что date
указанная в предварительном материале, не содержит смещения часового пояса, в этом случае по умолчанию используется UTC, а не часовой пояс локального компьютера, как вы могли ожидать. Я потратил на это час, пока UTC не "догнал" мой текущий часовой пояс, BST.
Я не нашел однозначного ответа на этот вопрос, но я думаю, что дата в основном вопросе должна быть указана в UTC со смещением часового пояса (по умолчанию оно равно нулю, если оно опущено).
Итак, date: 2018-05-03 12:34:27
находится в UTC независимо от того, где вы находитесь в мире, и независимо от установки timezone
в _config.yml
.
Так что будьте осторожны, указав дату и время:
date: 2018-05-03 12:34:27 +0100
В моем сообщении также не появилось сообщение об ошибке, что в моем имени я использовал точку, например. 2017-10-18-test.2.md
.
Это не принято, вы должны использовать 2017-10-18-test2.md
.
Просто чтобы добавить еще одну причину, когда вы перемещаете статью из _drafts
в _post
, вам иногда нужно удалить _site
для статьи, которая будет регенерирована.
В моем случае часто случается, что _site
не будет полностью удален перед повторной генерацией, поэтому новая статья не появится.
В любом случае, rm -rf _site
и bundle exec jekyll serve
работает :)