मैं अपनी Jekyll साइट पर एक नया पोस्ट जोड़ने का प्रयास कर रहा हूं, लेकिन जब मैं चलता हूं तो मैं इसे उत्पन्न पृष्ठों पर नहीं देख सकता jekyll serve
।
Jekyll पोस्ट के उत्पन्न न होने के कुछ सामान्य कारण क्या हैं?
मैं अपनी Jekyll साइट पर एक नया पोस्ट जोड़ने का प्रयास कर रहा हूं, लेकिन जब मैं चलता हूं तो मैं इसे उत्पन्न पृष्ठों पर नहीं देख सकता jekyll serve
।
Jekyll पोस्ट के उत्पन्न न होने के कुछ सामान्य कारण क्या हैं?
जवाबों:
_posts
।YEAR-MONTH-DAY-title.MARKUP
( विस्तार पर ध्यान देंMARKUP
, जो आमतौर पर.md
या है.markdown
)future: true
में सेटिंग करके पोस्ट को दृश्यमान बना सकते हैं_config.yml
published: false
अपने सामने के मामले में है। इसे सेट करेंtrue
।:
चरित्र होता है । से बदलें:
। 3.8.3
(और शायद अन्य 'हालिया रिलीज' में)।.markdown
फ़ाइल नाम के विस्तार को जोड़ना भूल गया है । मैं यह जानता हूं क्योंकि मैंने अपने जीवन के केवल 5 मिनट बर्बाद किए हैं।
आप jekyll build --verbose
निर्माण प्रक्रिया को विस्तार से देखने के लिए उपयोग कर सकते हैं ।
निर्गमन आउटपुट:
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.
...
लॉग से मैंने पाया कि जेकली को छोड़ दिया गया 2018-01-14-boot-android-on-charge.md
क्योंकि इसकी भविष्य की तारीख है।
एक संभावित कारण यह है कि date
सामने वाले मामले में निर्दिष्ट में टाइम ज़ोन ऑफसेट नहीं है, इस मामले में यह यूटीसी के लिए चूक है, न कि स्थानीय मशीन का समय क्षेत्र जैसा कि आप उम्मीद कर सकते हैं। मैंने अपने वर्तमान स्थानीय समय क्षेत्र, BST के साथ UTC के "पकड़े जाने" तक इस पर एक घंटा बर्बाद कर दिया।
मुझे इसका कोई निश्चित उत्तर नहीं मिला है, लेकिन मुझे लगता है कि सामने वाले मामले में तारीख UTC में एक टाइमज़ोन ऑफसेट (जो चूक से शून्य होने पर चूक के साथ) में दी जानी चाहिए।
तो date: 2018-05-03 12:34:27
यूटीसी चाहे आप दुनिया में कहीं भी हो, और timezone
सेटिंग के बावजूद चाहे जो भी हो _config.yml
।
तो इस तरह डेटासेट को निर्दिष्ट करने के लिए सावधान रहें:
date: 2018-05-03 12:34:27 +0100
date: 2018-05-03 12:34:27 +01:30
भी काम करने लगता है। अतिरिक्त बृहदान्त्र पर ध्यान दें।
मैंने अपने ब्लॉग के लिए 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 कॉन्फ़िगरेशन के साथ इन परीक्षणों को यहां संदर्भ में देखा जा सकता है ।
बस एक और कारण जोड़ने के लिए जब आप से एक लेख ले जाते हैं, _drafts
करने के लिए _post
, आप कभी कभी हटाने की आवश्यकता _site
पुनर्जीवित किया करने के लिए लेख के लिए।
मेरे मामले में अक्सर ऐसा होता है कि _site
फिर से उत्पन्न होने से पहले पूरी तरह से हटा नहीं दिया जाएगा ताकि नया लेख दिखाई न दे।
वैसे भी rm -rf _site
और bundle exec jekyll serve
काम :)
यदि आप फ़ाइल को ट्रैक करने में असमर्थ हैं --verbose
और यदि फ़ाइल को चुपचाप अनदेखा किया जाता है, तो फ़ाइल collections_dir
में निकालने का प्रयास करें config.yml
। मेरे लिए यह समस्या हल हो गई।
यदि आपने अपने सामने के मामले की जाँच की है, और सब कुछ ठीक है, और यहां तक कि jekyll build --verbose
कुछ भी प्रकट नहीं करता है (मेरे मामले में, यह सिर्फ इस तरह से कार्य करता है जैसे कि फ़ाइल बिल्कुल भी मौजूद नहीं है, इसे भी बाहर सूचीबद्ध नहीं है), एन्कोडिंग की जांच करें आपकी फ़ाइल के लिए। जाहिर है, यह UTF-8
हस्ताक्षर के बिना होना चाहिए । यह ऐसा है UTF-8 BOM
(या UTF-8 with Signature
जैसा कि कुछ पाठ संपादक इसे कहते हैं), तो इसे चुपचाप नजरअंदाज कर दिया जाएगा। मामलों को बदतर बनाने के लिए, कुछ संपादक दोनों प्रकारों को बस के रूप में प्रदर्शित करेंगे UTF-8
, जिससे अंतर को और अधिक कठिन हो जाएगा।
future:true
किसी भी स्थान के बिना के बाद:
में_config,yml
गलती करना होता है: कॉन्फ़िगरेशन फ़ाइल: (अवैध)।future: true
इसके बजाय सबसे अधिक इस्तेमाल किया।