Jekyll 사이트에 새 게시물을 추가하려고하는데를 실행할 때 생성 된 페이지에서 볼 수 없습니다 jekyll serve
.
Jekyll 게시물이 생성되지 않는 일반적인 이유는 무엇입니까?
답변
- 게시물이 디렉토리에 없습니다
_posts
. - 게시물 제목이 잘못되었습니다. 게시물은 이름을 지정해야합니다
YEAR-MONTH-DAY-title.MARKUP
( 메모MARKUP
확장 일반적으로,.md
또는.markdown
) - 게시물의 날짜가 미래입니다. (문서)
future: true
에서 설정하여 게시물을 표시 할 수 있습니다._config.yml
- 게시물
published: false
의 앞부분에 있습니다. 로 설정하십시오true
. 제목에jekyll에서 작동합니다:
문자가 있습니다. 로 교체:
.3.8.3
(그리고 아마도 다른 ‘최신’릴리스에서).
답변
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 _site
및 bundle exec jekyll serve
작품 🙂
답변
파일을 추적 할 수없고 --verbose
파일이 자동으로 무시 collections_dir
되면 config.yml
파일 에서 제거해보십시오 . 그것은 나를 위해 문제를 해결했습니다.