Kiriman Jekyll tidak dibuat


100

Saya mencoba menambahkan postingan baru ke situs Jekyll saya, tetapi saya tidak dapat melihatnya di halaman yang dibuat saat saya menjalankannya jekyll serve.

Apa alasan umum posting Jekyll tidak dibuat?

Jawaban:


230

1
menggunakan future:truetanpa spasi setelah :di _config,ymllead ke ERR: File konfigurasi: (INVALID). future: truekebanyakan digunakan sebagai gantinya.
yaitloutou

Alasan lain yang mungkin adalah karena lupa menambahkan .markdownekstensi ke nama file. Saya tahu ini karena saya baru saja menyia-nyiakan 5 menit hidup saya karenanya.
H2ONOCK

Terima kasih banyak! Baru saja mencari 30 menit mengapa posting saya tidak muncul sampai saya mengerti bahwa ada filter tanggal ... (dalam 15 menit itu akan bekerja "secara ajaib" ...). Menambahkan opsi masa depan dan semuanya berfungsi seperti yang diharapkan. true harus default menurut saya.
Matthias Kleine

1
Apa yang saya lewatkan. Posting saya di sini memiliki titik dua pada judulnya dan tidak apa-apa? raw.githubusercontent.com/alexharv074/alexharv074.github.io/… dan tampaknya oke di sini? alexharv074.github.io
Alex Harvey

1
@AlexHarvey Terima kasih atas komentarnya! Ini memang sepertinya sudah tidak menjadi masalah lagi. Saya memperbarui jawaban saya.
aronisstav

19

Anda dapat menggunakan jekyll build --verboseuntuk melihat proses build secara detail.

Keluaran contoh:

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

dari log saya menemukan jeklly dilewati 2018-01-14-boot-android-on-charge.mdkarena memiliki tanggal di masa mendatang.


6

Salah satu kemungkinan alasannya adalah bahwa datemateri yang ditentukan di depan tidak berisi offset zona waktu, dalam hal ini defaultnya ke UTC, bukan zona waktu mesin lokal seperti yang Anda harapkan. Saya menyia-nyiakan satu jam untuk ini sampai UTC "mengejar" zona waktu lokal saya saat ini, BST.

Saya belum menemukan jawaban pasti untuk ini tetapi saya pikir tanggal di bagian depan harus diberikan dalam UTC dengan offset zona waktu (yang defaultnya nol jika dihilangkan).

Begitu date: 2018-05-03 12:34:27 juga di UTC terlepas dari di mana Anda berada, dan terlepas dari timezonepengaturan di dalamnya _config.yml.

Jadi berhati-hatilah untuk menentukan waktu seperti ini:

date: 2018-05-03 12:34:27 +0100

1
Formatnya date: 2018-05-03 12:34:27 +01:30juga tampaknya berfungsi. Perhatikan titik dua tambahan.
YinglaiYang

Membuang 10 menit untuk menyadari bahwa inilah masalahnya. Terima kasih!
samisnotinsane

2

Atau bisa juga berupa cache browser jika Anda tidak mencari di folder _site, tetapi langsung di halaman utama blog dengan daftar postingan.


2

Saya telah menulis tes Rspec untuk blog saya yang menyatakan aturan ini:

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

Ini mungkin berguna bagi orang lain karena saya kehilangan banyak waktu karena kesalahan ketik pada tanggal, dll.

Tes ini bersama dengan konfigurasi Rspec lainnya dapat dilihat dalam konteks di sini .


2

Hanya untuk menambahkan satu alasan lagi, saat Anda memindahkan artikel dari _draftske _post, terkadang Anda perlu menghapus _siteartikel agar dibuat ulang.

Dalam kasus saya sering terjadi bahwa _sitetidak akan sepenuhnya dihapus sebelum dibuat ulang sehingga artikel baru tidak akan muncul.

Pokoknya rm -rf _sitedan bundle exec jekyll serveberhasil :)


1

Jika Anda tidak dapat melacak file dalam --verbosedan jika file tersebut diam-diam diabaikan kemudian mencoba menghapus collections_dirdalam config.ymlberkas. Itu memecahkan masalah saya.


0

Posting saya juga tidak muncul kesalahan itu, bahwa dalam nama saya saya menggunakan titik, mis 2017-10-18-test.2.md.
Ini tidak diterima, Anda harus menggunakan 2017-10-18-test2.md.


0

Jika Anda telah memeriksa materi depan Anda, dan semuanya tampak baik-baik saja, dan bahkan jekyll build --verbosetidak mengungkapkan apa pun (dalam kasus saya, itu hanya bertindak seolah-olah file itu tidak ada sama sekali, bahkan tidak mencantumkannya sebagai dikecualikan), periksa pengkodean dari file Anda. Rupanya, itu harus UTF-8tanpa tanda tangan. Itu UTF-8 BOM(atau UTF-8 with Signatureseperti beberapa editor teks menyebutnya), maka itu akan diabaikan secara diam-diam. Lebih buruk lagi, beberapa editor akan menampilkan kedua jenis itu sebagai adil UTF-8, membuat perbedaan lebih sulit untuk dikenali.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.