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?
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:
_posts
directorio.YEAR-MONTH-DAY-title.MARKUP
(tenga en cuenta la MARKUP
extensión , que generalmente es.md
o.markdown
)future: true
en _config.yml
(documentación)published: false
en su portada. Ponlo entrue
.:
personaje. Reemplácelo con:
. 3.8.3
(y probablemente en otros lanzamientos 'recientes')..markdown
extensión al nombre del archivo. Lo sé porque acabo de perder 5 minutos de mi vida por eso.
Puede usar jekyll build --verbose
para 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.md
porque tiene una fecha futura.
Una posible razón es que lo date
especificado 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 timezone
lugar 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
date: 2018-05-03 12:34:27 +01:30
también parece funcionar. Tenga en cuenta los dos puntos adicionales.
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í .
Solo para agregar una razón más, cuando mueves un artículo de _drafts
a _post
, a veces necesitas eliminar el _site
para que el artículo se vuelva a generar.
En mi caso, a menudo sucede que _site
no se eliminará por completo antes de la regeneración, por lo que el nuevo artículo no aparecerá.
De todos modos rm -rf _site
y bundle exec jekyll serve
funciona :)
Si no puede realizar el seguimiento del archivo en --verbose
y si el archivo se ignora silenciosamente a continuación, pruebe a quitar collections_dir
en el config.yml
archivo. Eso me resolvió el problema.
Si ha revisado su tema principal, y todo parece estar bien, e incluso jekyll build --verbose
no 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-8
sin firma. Si es UTF-8 BOM
(o UTF-8 with Signature
como 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.
future:true
sin ningún espacio después:
en_config,yml
conduce a ERR: Archivo de configuración: (NO VÁLIDO).future: true
la mayoría se utilizará en su lugar.