Postagem Jekyll não gerada


100

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:


230

1
usando 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.
yaitloutou

Outro motivo possível é o esquecimento de adicionar a .markdownextensão ao nome do arquivo. Eu sei disso porque acabei de perder 5 minutos da minha vida por causa disso.
H2ONOCK

Muito obrigado! Só pesquisei 30 minutos porque minha postagem não aparecia até que entendi que há um filtro de data ... (em 15 minutos funcionaria "magicamente" ...). Adicionada a opção futura e tudo funciona conforme o esperado. true deve ser o padrão na minha opinião.
Matthias Kleine

1
O que estou perdendo. Minha postagem aqui tem dois pontos no título e está ok? raw.githubusercontent.com/alexharv074/alexharv074.github.io/… e parece ok aqui? alexharv074.github.io
Alex Harvey

1
@AlexHarvey Obrigado pelo comentário! Isso realmente parece não ser mais um problema. Eu atualizei minha resposta.
aronisstav

19

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.


6

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

1
O formato date: 2018-05-03 12:34:27 +01:30também parece funcionar. Observe os dois pontos adicionais.
YinglaiYang

10 minutos perdidos para perceber que este era o problema. Obrigado!
samisnotinsane

2

Ou também pode ser o cache do navegador, se você não estiver procurando na pasta _site, mas diretamente na página principal do blog com a lista de postagens.


2

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 .


2

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 :)


1

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.


0

Minha postagem também não apareceu e o erro foi, que no meu nome usei um ponto, por exemplo 2017-10-18-test.2.md.
Isso não é aceito, você tem que usar 2017-10-18-test2.md.


0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.