J'essaie d'ajouter un nouveau message sur mon site Jekyll, mais je ne le vois pas sur les pages générées lorsque j'exécute jekyll serve
.
Quelles sont les raisons courantes pour lesquelles un message Jekyll n'est pas généré?
_posts
_ répertoire. YEAR-MONTH-DAY-title.MARKUP
( Notez le MARKUP
extension, qui est généralement .md
ou .markdown
)future: true
dans _config.yml
(documentation)published: false
à l’avant-plan. Réglez-le sur true
.:
caractère. Remplacez-le par :
.3.8.3
_ (et probablement dans d'autres versions 'récentes').Vous pouvez utiliser jekyll build --verbose
Pour afficher le processus de construction en détail.
Exemple de sortie:
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 a ignoré le journal 2018-01-14-boot-Android-on-charge.md
car il a une date ultérieure.
Une des raisons possibles est que le date
spécifié dans le texte précédent ne contient pas de décalage de fuseau horaire. Dans ce cas, il est défini par défaut sur UTC et non sur le fuseau horaire de la machine locale, comme vous pouvez vous attendre. J'ai perdu une heure à ce sujet jusqu'à ce que UTC "rattrape" mon fuseau horaire local, BST.
Je n'ai pas trouvé de réponse définitive à cette question, mais je pense que la date qui précède doit être indiquée en UTC avec un décalage de fuseau horaire (dont la valeur par défaut est zéro si elle est omise).
Alors date: 2018-05-03 12:34:27
en UTC quel que soit l'endroit du monde où vous vous trouvez et quelle que soit la configuration de timezone
dans _config.yml
.
Veillez donc à spécifier les dates/heures comme ceci:
date: 2018-05-03 12:34:27 +0100
Vous pouvez également utiliser le cache du navigateur si vous ne recherchez pas dans le dossier _ site, mais directement sur la page principale du blog avec la liste des publications.
J'ai écrit pour mon blog des tests Rspec qui expriment ces règles:
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
Cela peut être utile aux autres, car je perdais beaucoup de temps à cause de fautes de frappe dans la date, etc.
Ces tests avec le reste de la configuration Rspec peuvent être vus dans un contexte ici .
Mon message n’apparaissait pas non plus, c’était l’erreur, c’est à mon nom que j’utilisais un point, par exemple. 2017-10-18-test.2.md
.
Ceci n’est pas accepté, vous devez utiliser 2017-10-18-test2.md
.
Juste pour ajouter une raison de plus, lorsque vous déplacez un article de _drafts
à _post
, vous devez parfois supprimer le _site
pour que l'article soit régénéré.
Dans mon cas, il arrive souvent que _site
_ ne sera pas entièrement supprimé avant la génération, le nouvel article n'apparaîtra donc pas.
En tous cas rm -rf _site
et bundle exec jekyll serve
travaux :)