Publicación de Jekyll no generada


100

Estoy intentando agregar una nueva publicación a mi sitio de Jekyll, pero no puedo verla en las páginas generadas cuando la ejecuto jekyll serve.

¿Cuáles son algunas de las razones habituales por las que no se genera una publicación de Jekyll?

Respuestas:


230

1
usar future:truesin ningún espacio después :en _config,ymlconduce a ERR: Archivo de configuración: (NO VÁLIDO). future: truela mayoría se utilizará en su lugar.
yaitloutou

Otra posible razón es que se olvidó de agregar la .markdownextensión al nombre del archivo. Lo sé porque acabo de perder 5 minutos de mi vida por eso.
H2ONOCK

Muchas gracias! Solo busqué 30 minutos por qué mi publicación no aparecía hasta que entendí que hay un filtro de fecha ... (en 15 minutos funcionaría "mágicamente" ...). Añadida la opción de futuro y todo funciona como se esperaba. verdadero debería ser predeterminado en mi opinión.
Matthias Kleine

1
Qué me estoy perdiendo. Mi publicación aquí tiene dos puntos en el título y ¿está bien? raw.githubusercontent.com/alexharv074/alexharv074.github.io/… ¿ y aparece bien aquí? alexharv074.github.io
Alex Harvey

1
@AlexHarvey ¡Gracias por el comentario! De hecho, esto parece no ser un problema. Actualicé mi respuesta.
aronisstav

19

Puede usar jekyll build --verbosepara ver el proceso de construcción en detalle.

Salida de ejemplo:

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

del registro que encontré jeklly omitido 2018-01-14-boot-android-on-charge.mdporque tiene una fecha futura.


6

Una posible razón es que lo dateespecificado en la materia preliminar no contiene un desplazamiento de zona horaria, en cuyo caso se establece de forma predeterminada en UTC, no en la zona horaria de la máquina local como cabría esperar. Perdí una hora en esto hasta que UTC "alcanzó" mi zona horaria local actual, BST.

No he encontrado una respuesta definitiva a esto, pero creo que la fecha en el asunto principal debe darse en UTC con un desplazamiento de zona horaria (que por defecto es cero si se omite).

También lo date: 2018-05-03 12:34:27 es en UTC, independientemente del lugar del mundo en el que se encuentre y del timezonelugar en el que se encuentre _config.yml.

Así que tenga cuidado de especificar fechas y horas como esta:

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

1
El formato date: 2018-05-03 12:34:27 +01:30también parece funcionar. Tenga en cuenta los dos puntos adicionales.
YinglaiYang

Perdí 10 minutos para darme cuenta de que este era el problema. ¡Gracias!
samisnotinsane

2

O también puede ser el caché del navegador si no está buscando en la carpeta _site sino directamente en la página principal del blog con la lista de publicaciones.


2

He escrito pruebas de Rspec para mi blog que expresan estas reglas:

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

Esto puede ser útil para otros, ya que estaba perdiendo mucho tiempo debido a errores tipográficos en la fecha, etc.

Estas pruebas junto con el resto de la configuración de Rspec se pueden ver en contexto aquí .


2

Solo para agregar una razón más, cuando mueves un artículo de _draftsa _post, a veces necesitas eliminar el _sitepara que el artículo se vuelva a generar.

En mi caso, a menudo sucede que _siteno se eliminará por completo antes de la regeneración, por lo que el nuevo artículo no aparecerá.

De todos modos rm -rf _sitey bundle exec jekyll servefunciona :)


1

Si no puede realizar el seguimiento del archivo en --verbosey si el archivo se ignora silenciosamente a continuación, pruebe a quitar collections_diren el config.ymlarchivo. Eso me resolvió el problema.


0

Mi publicación tampoco apareció y el error fue que en mi nombre usé un punto, por ejemplo 2017-10-18-test.2.md.
Esto no se acepta, debe usar 2017-10-18-test2.md.


0

Si ha revisado su tema principal, y todo parece estar bien, e incluso jekyll build --verboseno revela nada (en mi caso, simplemente actuó como si el archivo no existiera, ni siquiera lo enumerara como excluido), verifique la codificación de su archivo. Aparentemente, debe estar UTF-8sin firma. Si es UTF-8 BOM(o UTF-8 with Signaturecomo lo llaman algunos editores de texto), será ignorado en silencio. Para empeorar las cosas, algunos editores mostrarán ambos tipos como justos UTF-8, lo que hará que la diferencia sea aún más difícil de detectar.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.