Travis CI を使用した Github ページでは jekyll-archives が機能しないのはなぜですか?
概要
Travis を使用して Github ページにデプロイしています。私のプロジェクトでは jekyll-archives も使用しています。私の設定はローカルでは非常にうまく機能しますが、github ページにはアーカイブ ページが生成されません。また、github ページのホワイトリストに登録されていない jekyll-paginate-v2 も使用しましたが、Travis のデプロイメントで完全に機能します。 jekyll-archive の問題がわかりません。
私のGemfile
source 'https://rubygems.org'
gem 'jekyll', '<4'
gem 'html-proofer', '4.3.1'
gem 'jekyll-archives'
gem 'jekyll-sitemap'
gem 'jekyll-paginate-v2'
gem 'kramdown-parser-gfm'
gem 'webrick'
私の _config.yml
plugins:
- jekyll-archives
- jekyll-sitemap
- jekyll-paginate-v2
exclude:
- "/vendor/"
future: true
timezone: Asia/Kolkata
# Build settings
markdown: kramdown
inter_post_navigation: true
highlightjs_theme: "monokai-sublime"
# Pagination Settings
pagination:
enabled: true
per_page: 5
permalink: "/page/:num/"
sort_reverse: true
# Archive settings
jekyll-archives:
enabled:
- categories
- tags
layout: archive
permalinks:
category: '/category/:name/'
tag: '/tag/:name/'
私の .travis.yml
language: ruby
rvm:
- 2.6.3
cache: bundler
install:
- gem install bundler
- gem update --system 3.2.3
- bundle install
script:
- bundle exec jekyll build
branches:
only:
- master
addons:
apt:
packages:
- libcurl4-openssl-dev
deploy:
provider: pages
skip_cleanup: true
local_dir: _site
github_token: $TRAVIS_DEPLOY_TOKEN
keep_history: true
on:
branch: master
repo: <org>/<repo>.github.io
target_branch: gh-pages
notifications:
email: false
解決策
結局のところ、jekyll-archives は正しく動作していましたが、デフォルト設定に従って遅延リンクが作成されていました。一方、カテゴリーリンクはhtmlファイルのアンカータグ内にそのまま残しました。そのため、アンカータグにslugifyフィルターを配置する必要がありました。
前に
<a href="{{ site.baseurl }}/category/{{ cat }}">{{ cat | capitalize }}</a>
後
<a href="{{ site.baseurl }}/category/{{ cat | slugify }}">{{ cat | capitalize }}</a>