Message Jekyll non généré

100

J'essaie d'ajouter un nouveau message à mon site Jekyll, mais je ne le vois pas sur les pages générées lorsque je cours jekyll serve.

Quelles sont les raisons courantes pour lesquelles un message Jekyll n'est pas généré?

aronisstav
la source

Réponses:

230
aronisstav
la source
1
l'utilisation future:truesans espace après :dans _config,ymlconduit à ERR: Fichier de configuration: (INVALID). future: truela plupart seront utilisés à la place.
yaitloutou
Une autre raison possible est d'avoir oublié d'ajouter l' .markdownextension au nom de fichier. Je le sais parce que je viens de perdre 5 minutes de ma vie à cause de ça.
H2ONOCK
Merci beaucoup! Je viens de chercher 30 minutes pourquoi mon message n'apparaissait pas jusqu'à ce que je comprenne qu'il y a un filtre de date ... (dans 15 minutes, cela fonctionnerait "comme par magie" ...). Ajout de l'option future et tout fonctionne comme prévu. true devrait être par défaut à mon avis.
Matthias Kleine
1
Qu'est-ce que je rate. Mon message ici a un deux-points dans le titre et ça va? raw.githubusercontent.com/alexharv074/alexharv074.github.io / ... et cela semble ok ici? alexharv074.github.io
Alex Harvey
1
@AlexHarvey Merci pour le commentaire! Cela ne semble en effet plus être un problème. J'ai mis à jour ma réponse.
aronisstav
19

Vous pouvez utiliser jekyll build --verbosepour afficher le processus de construction en détail.

Sortie d'exemple:

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

du journal que j'ai trouvé jeklly ignoré 2018-01-14-boot-android-on-charge.mdcar il a une date future.

crocs
la source
6

Une raison possible est que le date spécifié dans les pages préliminaires ne contient pas de décalage de fuseau horaire, auquel cas il défini par défaut sur UTC, et non sur le fuseau horaire de l'ordinateur local comme vous pouvez vous y attendre. J'ai perdu une heure là-dessus jusqu'à ce que UTC "rattrape" mon fuseau horaire local actuel, BST.

Je n'ai pas trouvé de réponse définitive à cela, mais je pense que la date dans l'avant-propos doit être donnée en UTC avec un décalage de fuseau horaire (qui par défaut à zéro si omis).

Il en date: 2018-05-03 12:34:27 est de même en UTC quel que soit l'endroit où vous vous trouvez dans le monde et quel que soit le timezonecontexte _config.yml.

Veillez donc à spécifier les datetimes comme ceci:

date: 2018-05-03 12:34:27 +0100
starfry
la source
1
Le format date: 2018-05-03 12:34:27 +01:30semble également fonctionner. Notez les deux points supplémentaires.
YinglaiYang le
J'ai perdu 10 minutes pour réaliser que c'était le problème. Merci!
samisnotinsane
2

Ou il peut également s'agir du cache du navigateur si vous ne cherchez pas dans le dossier _site mais directement sur la page principale du blog avec la liste des articles.

R. brun
la source
2

J'ai écrit des tests Rspec pour mon blog 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 pour d'autres car je perdais beaucoup de temps à cause de fautes de frappe dans la date, etc.

Ces tests ainsi que le reste de la configuration Rspec peuvent être vus en contexte ici .

Alex Harvey
la source
2

Pour ajouter une raison de plus, lorsque vous déplacez un article de _draftsvers _post, vous devez parfois supprimer le_site pour que l'article soit régénéré.

Dans mon cas, il arrive souvent que _site cela ne soit pas entièrement supprimé avant la régénération, de sorte que le nouvel article n'apparaîtra pas.

Quoi qu'il en soit rm -rf _siteet bundle exec jekyll servefonctionne :)

Tibo
la source
1

Si vous ne parvenez pas à suivre le fichier --verboseet si le fichier est ignoré en silence, essayez de supprimer collections_dirle config.ymlfichier. Cela a résolu le problème pour moi.

Kolappan N
la source
0

Mon message n'apparaissait pas non plus et l'erreur était que dans mon nom, j'ai utilisé un point, par exemple 2017-10-18-test.2.md.
Ce n'est pas accepté, vous devez utiliser 2017-10-18-test2.md.

J_F
la source
0

Si vous avez vérifié votre introduction, et que tout semble bien, et même jekyll build --verbosene révèle rien (dans mon cas, cela a simplement agi comme si le fichier n'existait pas du tout, ne le listant même pas comme exclu), vérifiez l'encodage de votre dossier. Apparemment, il doit être UTF-8sans signature. C'est UTF-8 BOM(ou UTF-8 with Signaturecomme l'appellent certains éditeurs de texte), alors il sera ignoré en silence. Pour aggraver les choses, certains éditeurs afficheront les deux types comme justes UTF-8, ce qui rendra la différence encore plus difficile à repérer.

Dániel Kis-Nagy
la source