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.