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?

Aronisstav
fonte

Respostas:

230
Aronisstav
fonte
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.

fangxing
fonte
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
starfry
fonte
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.

R.Brown
fonte
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 .

Alex Harvey
fonte
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 :)

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

Kolappan N
fonte
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.

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

Dániel Kis-Nagy
fonte