Estou tentando adicionar uma nova postagem ao meu site Jekyll, mas não consigo vê-la nas páginas geradas quando executo jekyll serve.
Quais são alguns motivos comuns para uma postagem do Jekyll não ser gerada?
Estou tentando adicionar uma nova postagem ao meu site Jekyll, mas não consigo vê-la nas páginas geradas quando executo jekyll serve.
Quais são alguns motivos comuns para uma postagem do Jekyll não ser gerada?
Respostas:
_posts diretório.YEAR-MONTH-DAY-title.MARKUP( observe a MARKUPextensão , que geralmente é.mdou.markdown)future: trueem _config.yml (documentação)published: false na sua frente. Defina comotrue.: personagem. Substitua por:. 3.8.3(e provavelmente em outras versões 'recentes')..markdownextensão ao nome do arquivo. Eu sei disso porque acabei de perder 5 minutos da minha vida por causa disso.
Você pode usar jekyll build --verbosepara visualizar o processo de construção em detalhes.
Saída de exemplo:
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.
...
do log, descobri que jeklly foi ignorado 2018-01-14-boot-android-on-charge.mdporque tem uma data futura.
Uma possível razão é que o date especificado na questão inicial não contém uma diferença de fuso horário, caso em que o padrão é UTC, não o fuso horário da máquina local como você pode esperar. Perdi uma hora com isso até que o UTC "alcançou" meu fuso horário local atual, BST.
Não encontrei uma resposta definitiva para isso, mas acho que a data no primeiro assunto deve ser fornecida em UTC com um deslocamento de fuso horário (que o padrão é zero se omitido).
O mesmo date: 2018-05-03 12:34:27 ocorre no UTC, independentemente de onde você estiver no mundo e da timezoneconfiguração em que estiver _config.yml.
Portanto, tenha cuidado para especificar os horários de dados como este:
date: 2018-05-03 12:34:27 +0100
date: 2018-05-03 12:34:27 +01:30também parece funcionar. Observe os dois pontos adicionais.
Eu escrevi testes Rspec para meu blog que expressam estas regras:
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
Isso pode ser útil para outras pessoas, pois eu estava perdendo muito tempo devido a erros de digitação na data, etc.
Esses testes, juntamente com o resto da configuração Rspec, podem ser vistos no contexto aqui .
Só para adicionar mais um motivo, quando você move um artigo de _draftspara _post, às vezes é necessário excluir o _sitepara que o artigo seja regenerado.
No meu caso, muitas vezes acontece que _sitenão será totalmente excluído antes da regeneração, então o novo artigo não aparecerá.
Enfim rm -rf _sitee bundle exec jekyll servefunciona :)
Se você é incapaz de acompanhar o arquivo em --verbosee se o arquivo é ignorado em seguida, tente remover collections_dirno config.ymlarquivo. Isso resolveu o problema para mim.
Se você checou seu assunto de frente e tudo parece bem, e nem mesmo jekyll build --verboserevela nada (no meu caso, apenas agiu como se o arquivo não existisse, nem mesmo listando-o como excluído), verifique a codificação do seu arquivo. Aparentemente, deve ser UTF-8sem assinatura. Se for UTF-8 BOM(ou UTF-8 with Signaturecomo alguns editores de texto chamam), então será ignorado silenciosamente. Para piorar as coisas, alguns editores exibirão ambos os tipos como justos UTF-8, tornando a diferença ainda mais difícil de detectar.
future:truesem qualquer espaço depois:em_config,ymlleva a ERR: arquivos de configuração: (inválido).future: truea maioria pode ser usada em seu lugar.