Post Jekyll non generato


100

Sto provando ad aggiungere un nuovo post al mio sito Jekyll, ma non riesco a vederlo nelle pagine generate quando corro jekyll serve .

Quali sono alcuni motivi comuni per cui un post Jekyll non viene generato?

Risposte:


230

1
utilizzando future:truesenza alcuno spazio dopo :in _config,ymlporta a ERR: File di configurazione: (INVALID). future: truela maggior parte può essere utilizzata invece.
yaitloutou

Un altro possibile motivo è perché ci si dimentica di aggiungere l' .markdownestensione al nome del file. Lo so perché per questo ho perso solo 5 minuti della mia vita.
H2ONOCK

Grazie mille! Ho solo cercato 30 minuti perché il mio post non veniva visualizzato finché non ho capito che esiste un filtro per la data ... (in 15 minuti funzionerebbe "magicamente" ...). Aggiunta l'opzione futura e tutto funziona come previsto. true dovrebbe essere predefinito secondo me.
Matthias Kleine

1
Cosa mi manca. Il mio post qui ha i due punti nel titolo ed è ok? raw.githubusercontent.com/alexharv074/alexharv074.github.io/… e sembra ok qui? alexharv074.github.io
Alex Harvey

1
@AlexHarvey Grazie per il commento! Questo in effetti sembra non essere più un problema. Ho aggiornato la mia risposta.
aronisstav

19

È possibile utilizzare jekyll build --verboseper visualizzare il processo di compilazione in dettaglio.

Output di esempio:

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

dal log ho trovato jeklly saltato 2018-01-14-boot-android-on-charge.mdperchè ha una data futura.


6

Una possibile ragione è che la parte datespecificata nel frontespizio non contiene uno scostamento del fuso orario, nel qual caso il valore predefinito è UTC, non il fuso orario della macchina locale come ci si potrebbe aspettare. Ho sprecato un'ora su questo fino a quando UTC "ha raggiunto" il mio fuso orario locale, BST.

Non ho trovato una risposta definitiva a questo, ma penso che la data in primo piano debba essere data in UTC con un offset di fuso orario (che viene impostato a zero se omesso).

Quindi date: 2018-05-03 12:34:27 è in UTC indipendentemente da dove ti trovi nel mondo e indipendentemente timezonedall'impostazione _config.yml.

Quindi fai attenzione a specificare i datetimes in questo modo:

date: 2018-05-03 12:34:27 +0100

1
Anche il formato date: 2018-05-03 12:34:27 +01:30sembra funzionare. Nota i due punti aggiuntivi.
YinglaiYang,

Ho sprecato 10 minuti per capire che questo era il problema. Grazie!
samisnotinsane

2

Oppure può essere anche la cache del browser se non stai cercando nella cartella _site ma direttamente nella pagina principale del blog con l'elenco dei post.


2

Ho scritto test Rspec per il mio blog che esprimono queste regole:

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

Questo potrebbe essere utile ad altri perché stavo perdendo molto tempo a causa di errori di battitura nella data, ecc.

Questi test insieme al resto della configurazione Rspec possono essere visti nel contesto qui .


2

Giusto per aggiungere un motivo in più, quando sposti un articolo da _draftsa _post, a volte devi eliminare il _siteper l'articolo da rigenerare.

Nel mio caso capita spesso che _sitenon venga completamente cancellato prima della rigenerazione quindi il nuovo articolo non verrà visualizzato.

Comunque rm -rf _sitee bundle exec jekyll servefunziona :)


1

Se non riesci a tenere traccia del file --verbosee se il file viene ignorato silenziosamente, prova a rimuoverlo collections_dirdal config.ymlfile. Questo ha risolto il problema per me.


0

Inoltre il mio post non è apparso e l'errore è stato che nel mio nome ho usato un punto, ad es 2017-10-18-test.2.md.
Questo non è accettato, devi usare 2017-10-18-test2.md.


0

Se hai controllato il tuo frontespizio, e tutto sembra a posto, e anche jekyll build --verbosenon rivela nulla (nel mio caso, si è comportato come se il file non esistesse affatto, nemmeno elencandolo come escluso), controlla la codifica del tuo file. A quanto pare, deve essere UTF-8senza firma. È UTF-8 BOM(o UTF-8 with Signaturecome lo chiamano alcuni editor di testo), quindi verrà silenziosamente ignorato. A peggiorare le cose, alcuni editor visualizzeranno entrambi i tipi come giusti UTF-8, rendendo la differenza ancora più difficile da individuare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.