Jekyll yayını oluşturulmadı


100

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:


230

1
içinde future:truesonra boşluk bırakmadan kullanmak ERR: Yapılandırma dosyası: (GEÇERSİZ). çoğu bunun yerine kullanılmalıdır. :_config,ymlfuture: true
yaitloutou

Bir başka olası neden, .markdownuzantıyı dosya adına eklemeyi unutmaktır . Bunu biliyorum çünkü hayatımın 5 dakikasını bu yüzden boşa harcadım.
H2ONOCK

Çok teşekkür ederim! Bir tarih filtresi olduğunu anlayana kadar gönderimin neden görünmediğini 30 dakika aradım ... (15 dakika içinde "sihirli" çalışacaktı ...). Gelecek seçeneği eklendi ve her şey beklendiği gibi çalışıyor. bence doğru varsayılan olmalıdır.
Matthias Kleine

1
Neyi kaçırıyorum. Buradaki yazımın başlığında iki nokta üst üste işareti var ve sorun değil mi? raw.githubusercontent.com/alexharv074/alexharv074.github.io/… ve burada uygun görünüyor mu? alexharv074.github.io
Alex Harvey

1
@AlexHarvey Yorum için teşekkürler! Bu gerçekten de artık bir sorun değil gibi görünüyor. Cevabımı güncelledim.
aronisstav

19

jekyll build --verboseOluş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.mdbir tarihi olduğu için atlandığını buldum .


6

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 timezoneayarına _config.yml.

Bu nedenle, aşağıdaki gibi veri zamanlarını belirlemeye dikkat edin:

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

1
Format date: 2018-05-03 12:34:27 +01:30da işe yarıyor gibi görünüyor. Ek iki noktayı not edin.
YinglaiYang

Sorunun bu olduğunu anlamak için 10 dakika boşa harcandı. Teşekkürler!
samisnotinsane

2

Ya da, _site klasörüne değil , gönderi listesiyle birlikte doğrudan blogun ana sayfasına bakıyorsanız, tarayıcı önbelleği de olabilir .


2

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 .


2

Sadece bir neden daha eklemek _draftsiçin _post, bir makaleyi konumundan konumuna taşıdığınızda , bazen _sitemakalenin yeniden oluşturulması için öğesini silmeniz gerekir .

Benim durumumda, genellikle _siteyeniden oluşturmadan önce tamamen silinmeyeceği için yeni makale görünmeyecek.

Neyse rm -rf _siteve bundle exec jekyll serveçalışıyor :)


1

Eğer dosyayı izlemek mümkün değilse --verboseve dosya sessizce ardından gözardı kaldırmayı deneyin eğer collections_diriçinde config.ymldosyanın. Bu benim için sorunu çözdü.


0

Gönderim de bir hata olarak görünmedi, benim adımda bir nokta kullandım, örn 2017-10-18-test.2.md.
Bu kabul edilmez, kullanmak zorundasın 2017-10-18-test2.md.


0

Ön konuyu kontrol ettiyseniz ve her şey iyi görünüyorsa ve hatta jekyll build --verbosehiç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-8imzasız olması gerekiyor . Bu UTF-8 BOM(veya UTF-8 with Signaturebazı 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-8ve bu da farkın fark edilmesini daha da zorlaştıracaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.