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 MARKUP
ekstensi , yang biasanya.md
atau.markdown
)future: true
di _config.yml
(dokumentasi)published: false
di bagian depannya. Setel ketrue
.:
karakter. Gantilah dengan:
. 3.8.3
(dan mungkin dalam rilis 'terbaru' lainnya)..markdown
ekstensi ke nama file. Saya tahu ini karena saya baru saja menyia-nyiakan 5 menit hidup saya karenanya.
Anda dapat menggunakan jekyll build --verbose
untuk 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.md
karena memiliki tanggal di masa mendatang.
Salah satu kemungkinan alasannya adalah bahwa date
materi 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 timezone
pengaturan 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:30
juga 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 _drafts
ke _post
, terkadang Anda perlu menghapus _site
artikel agar dibuat ulang.
Dalam kasus saya sering terjadi bahwa _site
tidak akan sepenuhnya dihapus sebelum dibuat ulang sehingga artikel baru tidak akan muncul.
Pokoknya rm -rf _site
dan bundle exec jekyll serve
berhasil :)
Jika Anda tidak dapat melacak file dalam --verbose
dan jika file tersebut diam-diam diabaikan kemudian mencoba menghapus collections_dir
dalam config.yml
berkas. Itu memecahkan masalah saya.
Jika Anda telah memeriksa materi depan Anda, dan semuanya tampak baik-baik saja, dan bahkan jekyll build --verbose
tidak 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-8
tanpa tanda tangan. Itu UTF-8 BOM
(atau UTF-8 with Signature
seperti 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:true
tanpa spasi setelah:
di_config,yml
lead ke ERR: File konfigurasi: (INVALID).future: true
kebanyakan digunakan sebagai gantinya.