Jekyll siteme yeni bir gönderi eklemeye çalışıyorum, ancak çalıştırdığımda oluşturulan sayfalarda göremiyorum jekyll serve
.
Bir Jekyll gönderisinin oluşturulmamasının bazı genel nedenleri nelerdir?
Jekyll siteme yeni bir gönderi eklemeye çalışıyorum, ancak çalıştırdığımda oluşturulan sayfalarda göremiyorum jekyll serve
.
Bir Jekyll gönderisinin oluşturulmamasının bazı genel nedenleri nelerdir?
Yanıtlar:
_posts
.YEAR-MONTH-DAY-title.MARKUP
( Not MARKUP
uzantısı genellikle,.md
ya.markdown
)future: true
içinde ayarlayarak gönderiyi görünür yapabilirsiniz_config.yml
published: false
onun ön konuda. Olarak ayarlayıntrue
.:
karakter içeriyor . İle değiştirin:
. 3.8.3
(ve muhtemelen diğer 'yeni' sürümlerde)..markdown
uzantıyı dosya adına eklemeyi unutmaktır . Bunu biliyorum çünkü hayatımın 5 dakikasını bu yüzden boşa harcadım.
jekyll build --verbose
Oluşturma sürecini ayrıntılı olarak görüntülemek için kullanabilirsiniz .
Örnek çıktı:
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.
...
Günlükten jeklly'nin ileri 2018-01-14-boot-android-on-charge.md
bir tarihi olduğu için atlandığını buldum .
Olası nedenlerden biri date
, ön maddede belirtilen saat dilimi uzaklığı içermemesidir; bu durumda , tahmin edebileceğiniz gibi yerel makinenin saat dilimini değil, UTC'yi varsayar. UTC şu anki yerel saat dilimim olan BST ile "yakalanana" kadar bu konuda bir saat harcadım.
Buna kesin bir cevap bulamadım, ancak ön konudaki tarihin UTC olarak bir saat dilimi farkı ile verilmesi gerektiğini düşünüyorum (bu, ihmal edilirse varsayılan olarak sıfırdır).
Yani date: 2018-05-03 12:34:27
UTC olduğu bakılmaksızın nerede olduğunu dünyada arasında ve bakılmaksızın timezone
ayarına _config.yml
.
Bu nedenle, aşağıdaki gibi veri zamanlarını belirlemeye dikkat edin:
date: 2018-05-03 12:34:27 +0100
date: 2018-05-03 12:34:27 +01:30
da işe yarıyor gibi görünüyor. Ek iki noktayı not edin.
Blogum için şu kuralları ifade eden Rspec testleri yazdım:
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
Tarihteki yazım hataları nedeniyle çok fazla zaman kaybettiğim için bu başkaları için faydalı olabilir.
Bu testler, Rspec yapılandırmasının geri kalanıyla birlikte burada bağlam içinde görülebilir .
Sadece bir neden daha eklemek _drafts
için _post
, bir makaleyi konumundan konumuna taşıdığınızda , bazen _site
makalenin yeniden oluşturulması için öğesini silmeniz gerekir .
Benim durumumda, genellikle _site
yeniden oluşturmadan önce tamamen silinmeyeceği için yeni makale görünmeyecek.
Neyse rm -rf _site
ve bundle exec jekyll serve
çalışıyor :)
Eğer dosyayı izlemek mümkün değilse --verbose
ve dosya sessizce ardından gözardı kaldırmayı deneyin eğer collections_dir
içinde config.yml
dosyanın. Bu benim için sorunu çözdü.
Ön konuyu kontrol ettiyseniz ve her şey iyi görünüyorsa ve hatta jekyll build --verbose
hiçbir şey göstermiyorsa (benim durumumda, dosya hiç yokmuş gibi davrandı, hatta dışarıda bırakıldı olarak listelemiyordu), kodlamayı kontrol edin dosyanızın. Görünüşe göre UTF-8
imzasız olması gerekiyor . Bu UTF-8 BOM
(veya UTF-8 with Signature
bazı metin editörlerinin dediği gibi), o zaman sessizce görmezden gelinecek. İşleri daha da kötüleştirmek için, bazı editörler her iki türü de adil olarak gösterecek UTF-8
ve bu da farkın fark edilmesini daha da zorlaştıracaktır.
future:true
sonra boşluk bırakmadan kullanmak ERR: Yapılandırma dosyası: (GEÇERSİZ). çoğu bunun yerine kullanılmalıdır.:
_config,yml
future: true