新年明けましておめでとうございます。2023年の到来を期して、Metalsmith 2.x 系統へ移行しました(2023-01-01 現在、最新バージョンは 2.5.1)。一応、チェックはしていますが、移行に失敗しているなど見落としがありましたら、教えていただけると幸いです。

何が変わったのか?

正直、よく分かりません。コードを書かずに JSON の設定のみで動かす方法などが整備され、全体的に洗練されたことなどは感じます。 しかし、基本的な挙動には変化がなく、これまでのプラグインも変更なく使えます。目に見えて変わった点は、主要なプラグインが階層化された(これまでフラットな配置だった metalsmith-layouts などのモジュール名が @metalsmith/layouts のように @metalsmith の中にまとめられた)ことくらいです。まだ階層化されていないプラグインもまだたくさんあります。

周辺環境の変化により、Node.js のモジュールも新陳代謝があるため、移行が必要なものもあります。例えば、node-sass(LibSass)は deprecated になったため、sass ベースの @metalsmith/sass に移行する必要があります。

私の環境では、移行前後でのモジュール対応は以下のようになりました。

移行前移行後
metalsmithmetalsmith
metalsmith-collections@metalsmith/collections
metalsmith-default-values@metalsmith/default-values
metalsmith-discover-helpersmetalsmith-discover-helpers
metalsmith-discover-partialsmetalsmith-discover-partials
metalsmith-drafts@metalsmith/drafts
metalsmith-excerpts@metalsmith/excerpts
metalsmith-highlightmetalsmith-highlight
metalsmith-layouts@metalsmith-layouts
metalsmith-markdown@metalsmith/markdown
metalsmith-paginationmetalsmith-pagination
metalsmith-permalinks@metalsmith/permalinks
metalsmith-sitemapmetalsmith-sitemap
metalsmith-tagsmetalsmith-tags
metalsmith-sass@metalsmith/sass
@metalsmith/postcss
cssnano
sass-inline-svgpostcss-inline-svg
metalsmith-uglify@metalsmith/js-bundle
handlebarsjstransformer-handlebars
handlebars-dateformathandlebars-dateformat

以上から見て、基本的には対応するモジュールに入れ替えれば OK で、一部に調整が必要なモジュールがある程度です。

逆に、以前指摘した件(ページネーションの機能が、metalsmith-pagination にあるのに、metalsmith-tags でもページネーションの機能を別途実装している)の解決はされていないようです。私もこの件については良いアイデアを持っているわけではないのです。何か上手い解決方法があるといいのですが…。

おわりに

これは Metalsmith とは直接関係ないですが、nova (かつての Coda)を購入したので、ブログの編集環境を nova の統合環境に乗せました。ブログの編集環境も効率的になったので、今年は頻繁に更新していきたいと思います。