Metalsmith 2.x へ移行しました
新年明けましておめでとうございます。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
に移行する必要があります。
私の環境では、移行前後でのモジュール対応は以下のようになりました。
移行前 | 移行後 | |
---|---|---|
metalsmith | → | metalsmith |
metalsmith-collections | → | @metalsmith/collections |
metalsmith-default-values | → | @metalsmith/default-values |
metalsmith-discover-helpers | → | metalsmith-discover-helpers |
metalsmith-discover-partials | → | metalsmith-discover-partials |
metalsmith-drafts | → | @metalsmith/drafts |
metalsmith-excerpts | → | @metalsmith/excerpts |
metalsmith-highlight | → | metalsmith-highlight |
metalsmith-layouts | → | @metalsmith-layouts |
metalsmith-markdown | → | @metalsmith/markdown |
metalsmith-pagination | → | metalsmith-pagination |
metalsmith-permalinks | → | @metalsmith/permalinks |
metalsmith-sitemap | → | metalsmith-sitemap |
metalsmith-tags | → | metalsmith-tags |
metalsmith-sass | → | @metalsmith/sass |
sass-inline-svg | → | postcss-inline-svg |
metalsmith-uglify | → | @metalsmith/js-bundle |
handlebars | → | jstransformer-handlebars |
handlebars-dateformat | → | handlebars-dateformat |
以上から見て、基本的には対応するモジュールに入れ替えれば OK で、一部に調整が必要なモジュールがある程度です。
逆に、以前指摘した件(ページネーションの機能が、metalsmith-pagination
にあるのに、metalsmith-tags
でもページネーションの機能を別途実装している)の解決はされていないようです。私もこの件については良いアイデアを持っているわけではないのです。何か上手い解決方法があるといいのですが…。
おわりに
これは Metalsmith とは直接関係ないですが、nova (かつての Coda)を購入したので、ブログの編集環境を nova の統合環境に乗せました。ブログの編集環境も効率的になったので、今年は頻繁に更新していきたいと思います。