Я пытаюсь добавить новое сообщение на свой сайт 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(и, вероятно, в других «последних» выпусках)..markdownрасширение к имени файла. Я знаю это, потому что я только что потратил на это 5 минут своей жизни.
Вы можете использовать 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.
...
из журнала я обнаружил, что jeklly пропущен, 2018-01-14-boot-android-on-charge.mdпотому что у него есть дата в будущем.
Одна из возможных причин заключается в том, что dateуказанное во вступительной части не содержит смещения часового пояса, и в этом случае по умолчанию используется UTC, а не часовой пояс локального компьютера, как вы могли ожидать. Я потратил на это час, пока UTC не «догнало» мой текущий местный часовой пояс, BST.
Я не нашел окончательного ответа на этот вопрос, но я думаю, что дата во вступительной части должна быть указана в UTC со смещением часового пояса (которое по умолчанию равно нулю, если оно опущено).
Так date: 2018-05-03 12:34:27 и в UTC независимо от того, где вы находитесь, и независимо от timezoneнастройки _config.yml.
Так что будьте осторожны, чтобы указать такие даты:
date: 2018-05-03 12:34:27 +0100
date: 2018-05-03 12:34:27 +01:30тоже вроде работает. Обратите внимание на дополнительное двоеточие.
Я написал для своего блога тесты 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 можно увидеть в контексте здесь .
Просто чтобы добавить еще одну причину, когда вы перемещаете статью из _draftsв _post, вам иногда нужно удалить, _siteчтобы статья была восстановлена.
В моем случае часто бывает, что _siteперед повторным созданием статьи не удаляются полностью, поэтому новая статья не появляется.
Все равно так rm -rf _siteи bundle exec jekyll serveработает :)
Если вы не можете отследить файл --verboseи если он игнорируется, попробуйте удалить его collections_dirв config.ymlфайле. Это решило проблему для меня.
Если вы проверили свое вступление, и все кажется хорошо, и даже jekyll build --verboseничего не показывает (в моем случае он просто действовал так, как будто файл вообще не существует, даже не перечисляя его как исключенный), проверьте кодировку вашего файла. Видимо, это должно быть UTF-8без подписи. Если это так UTF-8 BOM(или UTF-8 with Signatureкак это называют некоторые текстовые редакторы), то оно будет игнорироваться. Что еще хуже, некоторые редакторы будут отображать оба типа как справедливые UTF-8, что делает разницу еще труднее.
future:trueбез пробела после:in_config,ymlприводит к ERR: Файл конфигурации: (INVALID).future: trueвместо этого можно использовать большинство.