[jekyll] 지킬 게시물이 생성되지 않았습니다.

Jekyll 사이트에 새 게시물을 추가하려고하는데를 실행할 때 생성 된 페이지에서 볼 수 없습니다 jekyll serve.

Jekyll 게시물이 생성되지 않는 일반적인 이유는 무엇입니까?



답변


답변

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는 미래 날짜가 있기 때문에 건너 뛰었 습니다.


답변

한 가지 가능한 이유는 date서문에 지정된 시간대 오프셋이 포함되어 있지 않기 때문입니다.이 경우 기본적으로 로컬 시스템의 시간대가 아닌 UTC로 설정됩니다. UTC가 현재 현지 시간대 인 BST를 “잡을”때까지 한 시간을 낭비했습니다.

나는 이것에 대한 확실한 답을 찾지 못했지만 앞부분의 날짜는 시간대 오프셋 (생략하면 기본값은 0)과 함께 UTC로 제공되어야한다고 생각합니다.

세계 어디에 있든 .NET의 설정에 관계없이 date: 2018-05-03 12:34:27 UTC에서도 마찬가지 입니다 .timezone_config.yml

따라서 다음과 같이 날짜 시간을 지정해야합니다.

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


답변

또는 _site 폴더가 아닌 게시물 목록이있는 블로그의 기본 페이지에서 직접 보고있는 경우 브라우저 캐시 일 수도 있습니다 .


답변

다음 규칙을 표현하는 내 블로그에 대한 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 _sitebundle exec jekyll serve작품 🙂


답변

파일을 추적 할 수없고 --verbose파일이 자동으로 무시 collections_dir되면 config.yml파일 에서 제거해보십시오 . 그것은 나를 위해 문제를 해결했습니다.