Ich versuche, meiner Jekyll-Site einen neuen Beitrag hinzuzufügen, kann ihn jedoch beim Ausführen nicht auf den generierten Seiten sehen jekyll serve.
Was sind einige häufige Gründe dafür, dass ein Jekyll-Beitrag nicht generiert wird?
Ich versuche, meiner Jekyll-Site einen neuen Beitrag hinzuzufügen, kann ihn jedoch beim Ausführen nicht auf den generierten Seiten sehen jekyll serve.
Was sind einige häufige Gründe dafür, dass ein Jekyll-Beitrag nicht generiert wird?
Antworten:
_posts Verzeichnis gestellt.YEAR-MONTH-DAY-title.MARKUP( Beachten Sie die MARKUPErweiterung , die normalerweise.mdoder ist.markdown)future: truein _config.yml (Dokumentation)published: false in ihrer vorderen Angelegenheit. Stellen Sie es auf eintrue.: Zeichen. Ersetzen Sie es durch:. 3.8.3(und wahrscheinlich in anderen 'aktuellen' Veröffentlichungen)..markdownErweiterung zum Dateinamen hinzuzufügen . Ich weiß das, weil ich gerade 5 Minuten meines Lebens damit verschwendet habe.
Sie können verwenden jekyll build --verbose, um den Erstellungsprozess im Detail anzuzeigen.
Beispielausgabe:
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.
...
Aus dem Protokoll fand ich jeklly übersprungen, 2018-01-14-boot-android-on-charge.mdweil es ein zukünftiges Datum hat.
Ein möglicher Grund ist, dass die datein der Titelseite angegebene Zeitzone keinen Zeitzonenversatz enthält. In diesem Fall wird standardmäßig UTC verwendet, nicht wie erwartet die Zeitzone des lokalen Computers. Ich habe eine Stunde damit verschwendet, bis UTC meine aktuelle lokale Zeitzone BST "eingeholt" hat.
Ich habe keine endgültige Antwort darauf gefunden, aber ich denke, das Datum in der Titelseite muss in UTC mit einem Zeitzonenversatz angegeben werden (der standardmäßig Null ist, wenn er weggelassen wird).
Dies date: 2018-05-03 12:34:27 gilt auch für UTC, unabhängig davon, wo auf der Welt Sie sich befinden, und unabhängig von der timezoneEinstellung in _config.yml.
Achten Sie also darauf, Daten wie folgt anzugeben:
date: 2018-05-03 12:34:27 +0100
date: 2018-05-03 12:34:27 +01:30scheint auch zu funktionieren. Beachten Sie den zusätzlichen Doppelpunkt.
Ich habe Rspec-Tests für mein Blog geschrieben, die diese Regeln ausdrücken:
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
Dies kann für andere von Nutzen sein, da ich aufgrund von Tippfehlern im Datum usw. viel Zeit verloren habe.
Diese Tests zusammen mit dem Rest der Rspec-Konfiguration können hier im Kontext gesehen werden .
Um noch einen weiteren Grund hinzuzufügen: Wenn Sie einen Artikel von _draftsnach verschieben _post, müssen Sie manchmal den löschen, _sitedamit der Artikel neu generiert werden kann.
In meinem Fall kommt es häufig vor, dass diese vor der _siteNeuerstellung nicht vollständig gelöscht werden, sodass der neue Artikel nicht angezeigt wird.
Sowieso rm -rf _siteund bundle exec jekyll servefunktioniert :)
Wenn Sie die Datei nicht verfolgen können --verboseund die Datei stillschweigend ignoriert wird, versuchen Sie, sie collections_dirin der config.ymlDatei zu entfernen . Das hat das Problem für mich gelöst.
Wenn Sie Ihre vordere Angelegenheit überprüft haben und alles in Ordnung zu sein scheint und sogar jekyll build --verbosenichts preisgibt (in meinem Fall hat es sich nur so verhalten, als ob die Datei überhaupt nicht vorhanden wäre, und sie nicht einmal als ausgeschlossen aufgeführt), überprüfen Sie die Codierung Ihrer Datei. Anscheinend muss es UTF-8ohne Unterschrift sein. Wenn es so ist UTF-8 BOM(oder UTF-8 with Signaturewie es einige Texteditoren nennen), wird es stillschweigend ignoriert. Um die Sache noch schlimmer zu machen, zeigen einige Editoren beide Typen als gerecht an UTF-8, wodurch der Unterschied noch schwerer zu erkennen ist.
future:trueohne Leerzeichen nach:in_config,ymlführt zu ERR: Konfigurationsdatei: (UNGÜLTIG).future: truedie meisten werden stattdessen verwendet.