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?
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:
_posts direktori.YEAR-MONTH-DAY-title.MARKUP( Perhatikan MARKUPekstensi , yang biasanya.mdatau.markdown)future: truedi _config.yml (dokumentasi)published: false di bagian depannya. Setel ketrue.: karakter. Gantilah dengan:. 3.8.3(dan mungkin dalam rilis 'terbaru' lainnya)..markdownekstensi ke nama file. Saya tahu ini karena saya baru saja menyia-nyiakan 5 menit hidup saya karenanya.
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.
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
date: 2018-05-03 12:34:27 +01:30juga tampaknya berfungsi. Perhatikan titik dua tambahan.
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 .
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 :)
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.
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.
future:truetanpa spasi setelah:di_config,ymllead ke ERR: File konfigurasi: (INVALID).future: truekebanyakan digunakan sebagai gantinya.