Tenjinの方針は“ありもの利用”だから、unifiedは使う。
- いわゆる“unified plugin”はすべてそのまま利用したい。
- remark-cli のようにコマンドラインから使いたい。
- したがって、remark-cli と同じ作りにする必要がある。
- 設定ファイルもunifiedと共用できるように。
以前アタッチャーと呼ばれていたものが今はトランスフォーマー・プラグインになったようだ。アタッチャーと変換関数〈パフォーマー〉が、トランスフォーマー・プラグインとなり、むしろ分かりにくくなったと思う。
設定ファイルはけっこうややこしい。
- ./.remarkignore ファイルで、無視する〈処理しない〉ファイルを指定する。
- ./.remarkrc ファイル、./.remarkrc.js ファイルから設定を読む。
- ./package.json ファイルの remarkConfig フィールドから設定を読む。
Tenjinワーキングディレクトリ内に、unified plugin のnpmパッケージ群(./node_modules/ の下)をインストールして、文書ディレクトリごとに、.remarkignore, remarkrc を置くことになるのだろう。
運用としては、package.json 内に例えば、
"scripts": { … "format": "remark . --output", … },
これで、npm run format が使えるようになった。次は設定:
"remarkConfig": { "settings": { "bullet": "*", // Use `*` for list item bullets (default) // See <https://github.com/remarkjs/remark/tree/main/packages/remark-stringify> for more options. }, "plugins": [ "remark-preset-lint-consistent", // Check that markdown is consistent. "remark-preset-lint-recommended", // Few recommended rules. [ // Generate a table of contents in `## Contents` "remark-toc", { "heading": "contents" } ] ] },
いずれにしても、unifiedでは並列結合〈モノイド積〉とストリーミングがないので、これを追加したい。最小限の変更で追加したい。
unifiedプラグイン〈unifiedプロセッサ〉は、node_modules/ 以下にインストールされていれば、静的または動的ローディングはできる。ロードすればドライバーにセット(.use(xxx))できる。セットアプ〈setup | configure〉したドライバーを process(input) すれば処理が実行される。