Techioz Blog

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>