web-dev-qa-db-fra.com

Jekyll post non généré

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é?

90
aronisstav
203
aronisstav

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.

15
fangxing

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:27en 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
2
starfry

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.

2
R.Brown

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 .

2
Alex Harvey

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.

0
J_F

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 :)

0
Tibo