ブログではない、静的なサイトをビルドするにあたって、Metalsmithがよさげなので使ってみた。
公式は上記。
最近は勢いが乏しいらしく、現時点では非推奨のモジュールが公式のサンプルにで使われている。
が、メンテは継続されているようだしエコシステムもほぼ仕上がっているようなので、通常導入する分には問題はなさそう。
上記記事を参考にとりあえずビルドまでもっていく。metalsmith-templates
は非推奨となり、metalsmith-layoutsとmetalsmith-in-placeへ分離したらしいが、今回は気にせず使用していく。テンプレートエンジンはNunjucksへ変えた。
また、metalsmith.json
に設定を書いていくやりかたは個人的にあまり気持ちのいい方法ではないので、jsでビルドする方法を選択した。
1'use strict';
2const Metalsmith = require('metalsmith');
3const collections = require('metalsmith-collections');
4const markdown = require('metalsmith-markdown');
5const permalinks = require('metalsmith-permalinks');
6const templates = require('metalsmith-templates');
7const metalsmith = new Metalsmith(__dirname)
8 .use(collections({posts: {pattern: "posts/*.md"}}))
9 .use(markdown())
10 .use(permalinks({pattern: ':title'}))
11 .use(templates('nunjucks'))
12 .build(err => {
13 if (err) throw err;
14 });
これだけで今回ほしい部分は大体動く。
柔軟性が高いようなので、ブログでなければMetalsmithのほうが楽に作れると感じた。