Повідомлення Джекілла не створено


100

Я намагаюся додати нову публікацію на свій сайт Jekyll, але не можу побачити її на створених сторінках під час запуску jekyll serve.

Які основні причини не створювати публікацію Джекілла?

Відповіді:


230

1
використовуючи future:trueбез пробілу після :в _config,ymlпризводить до ERR: файл конфігурації: (INVALID). future: trueбільшість використовувати замість цього.
yaitloutou

Інша можлива причина - через те, що ви забули додати .markdownрозширення до імені файлу. Я знаю це, тому що я лише витратив 5 хвилин свого життя через це.
H2ONOCK

Дуже дякую! Я лише 30 хвилин шукав, чому мій пост не відображався, поки я не зрозумів, що є фільтр дати ... (за 15 хвилин він буде працювати "магічно" ...). Додано майбутній варіант і все працює так, як очікувалося. true, на мою думку, має бути дефолтом.
Маттіас Кляйн

1
Що мені не вистачає. У моїй публікації тут двокрапка в заголовку, і це нормально? raw.githubusercontent.com/alexharv074/alexharv074.github.io/… і тут тут все гаразд? alexharv074.github.io
Алекс Харві

1
@AlexHarvey Дякую за коментар! Це, здається, вже не є проблемою. Я оновив свою відповідь.
aronisstav

19

Ви можете використовувати 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оскільки він має майбутню дату.


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також, здається, працює. Зверніть увагу на додаткову кишку.
YinglaiYang

Витратили 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, що робить різницю ще складніше помітити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.