ไม่ได้สร้างโพสต์ Jekyll


101

ฉันพยายามที่จะเพิ่มการโพสต์ใหม่ในเว็บไซต์ Jekyll ของฉัน jekyll serveแต่ฉันไม่สามารถดูได้บนหน้าเว็บที่สร้างเมื่อผมทำงาน

อะไรคือสาเหตุทั่วไปที่ทำให้โพสต์ Jekyll ไม่ถูกสร้างขึ้น

คำตอบ:


231

1
ใช้future:trueไม่ต้องเว้นวรรคใด ๆ หลังจากที่:ใน_config,ymlนำไปสู่การ ERR: ไฟล์การกำหนดค่า: (ไม่ถูกต้อง) future: trueส่วนใหญ่จะใช้แทน
yaitloutou

อีกสาเหตุหนึ่งที่เป็นไปได้คือเพราะลืมเพิ่ม.markdownนามสกุลในชื่อไฟล์ ฉันรู้เรื่องนี้เพราะฉันเสียเวลาไปแค่ 5 นาทีในชีวิตเพราะมัน
H2ONOCK

ขอบคุณมาก! เพิ่งค้นหา 30 นาทีว่าทำไมโพสต์ของฉันไม่ปรากฏจนกว่าฉันจะเข้าใจว่ามีตัวกรองวันที่ ... (ใน 15 นาทีมันจะทำงาน "อย่างน่าอัศจรรย์" ... เพิ่มตัวเลือกในอนาคตและทุกอย่างทำงานตามที่คาดไว้ จริงควรเป็นค่าเริ่มต้นในความคิดของฉัน
Matthias Kleine

1
ฉันขาดอะไรไป. โพสต์ของฉันที่นี่มีเครื่องหมายทวิภาคในชื่อเรื่องและใช้ได้ไหม raw.githubusercontent.com/alexharv074/alexharv074.github.io/… แล้วปรากฏว่าตกลงที่นี่ไหม alexharv074.github.io
Alex Harvey

1
@AlexHarvey ขอบคุณสำหรับความคิดเห็น! ดูเหมือนว่าจะไม่เป็นปัญหาอีกต่อไป ฉันอัปเดตคำตอบของฉัน
aronisstav

19

คุณสามารถใช้jekyll build --verboseเพื่อดูขั้นตอนการสร้างโดยละเอียด

เอาต์พุต Exmaple:

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

จากบันทึกฉันพบว่าข้าม jeklly 2018-01-14-boot-android-on-charge.mdเพราะมีวันที่ในอนาคต


6

สาเหตุหนึ่งที่เป็นไปได้คือการdateระบุในกรณีส่วนหน้าไม่มีการชดเชยโซนเวลาซึ่งในกรณีนี้จะมีค่าเริ่มต้นเป็น UTC ไม่ใช่เขตเวลาของเครื่องในระบบอย่างที่คุณคาดไว้ ฉันเสียเวลาหนึ่งชั่วโมงกับเรื่องนี้จนกระทั่ง UTC "ตาม" เขตเวลาท้องถิ่นปัจจุบันของฉัน BST

ฉันไม่พบคำตอบที่ชัดเจนสำหรับสิ่งนี้ แต่ฉันคิดว่าวันที่ในเรื่องด้านหน้าจะต้องระบุเป็น UTC โดยมีการชดเชยเขตเวลา (ซึ่งค่าเริ่มต้นจะเป็นศูนย์หากละเว้น)

ดังนั้น date: 2018-05-03 12:34:27 อยู่ใน UTCไม่ว่าคุณจะอยู่ที่ไหนในโลกและไม่ว่าคุณจะtimezoneอยู่ที่_config.ymlใดก็ตาม

ดังนั้นโปรดระมัดระวังในการระบุวันที่เช่นนี้:

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

1
รูปแบบdate: 2018-05-03 12:34:27 +01:30ยังดูเหมือนจะใช้งานได้ สังเกตเครื่องหมายจุดคู่เพิ่มเติม
หญิงล้วนหยาง

เสียเวลา 10 นาทีกว่าจะรู้ว่านี่คือปัญหา ขอบคุณ!
samisnotinsane

2

หรืออาจเป็นแคชของเบราว์เซอร์ก็ได้เช่นกันหากคุณไม่ได้อยู่ในโฟลเดอร์_siteแต่อยู่ในหน้าหลักของบล็อกที่มีรายการโพสต์โดยตรง


2

ฉันได้เขียนการทดสอบ Rspec สำหรับบล็อกของฉันซึ่งแสดงกฎเหล่านี้:

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

นี่อาจเป็นประโยชน์สำหรับผู้อื่นเนื่องจากฉันเสียเวลาไปมากเนื่องจากการพิมพ์วันที่ผิดเป็นต้น

การทดสอบเหล่านี้พร้อมกับส่วนที่เหลือของการตั้งค่า rspec สามารถมองเห็นได้ในบริบทที่นี่


2

เพียงเพื่อเพิ่มเหตุผลอีกประการหนึ่งเมื่อคุณย้ายบทความจาก_draftsไปยัง_postบางครั้งคุณต้องลบไฟล์_siteสำหรับบทความเพื่อสร้างใหม่

ในกรณีของฉันมันมักจะเกิดขึ้นอย่างนั้น _siteจะไม่ถูกลบทั้งหมดก่อนที่จะสร้างใหม่ดังนั้นบทความใหม่จะไม่ปรากฏ

อย่างไรก็ตามrm -rf _siteและใช้bundle exec jekyll serveงานได้ :)


1

หากคุณไม่สามารถติดตามไฟล์ใน--verboseและหากไฟล์ถูกละเว้นโดยไม่โต้ตอบให้ลองลบออกcollections_dirในconfig.ymlไฟล์ นั่นช่วยแก้ปัญหาให้ฉันได้


0

2017-10-18-test.2.mdโพสต์ของฉันยังไม่ปรากฏว่ามีข้อผิดพลาดก็คือว่าในนามของผมใช้จุดเช่น นี้ไม่ได้รับการยอมรับที่คุณต้องใช้
2017-10-18-test2.md


0

หากคุณได้ตรวจสอบเนื้อหาส่วนหน้าของคุณแล้วและดูเหมือนว่าทุกอย่างเรียบร้อยดีและยังjekyll build --verboseไม่เปิดเผยอะไรเลย (ในกรณีของฉันมันก็ทำราวกับว่าไม่มีไฟล์อยู่เลยแม้แต่ในรายการที่ยกเว้น) ให้ตรวจสอบการเข้ารหัส ของไฟล์ของคุณ เห็นได้ชัดว่าต้องUTF-8ไม่มีลายเซ็น มันเป็นUTF-8 BOM(หรือUTF-8 with Signatureตามที่ผู้แก้ไขข้อความบางคนเรียกมัน) จากนั้นมันจะถูกเพิกเฉย ในการทำให้เรื่องแย่ลงผู้แก้ไขบางคนจะแสดงทั้งสองประเภทเป็นเพียงUTF-8การทำให้ความแตกต่างยากขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.