v2を出した
以前紹介した memd の v2をリリースした。 主な変更点は2つ。
- シンタックスハイライトエンジンを cli-highlight から Shiki に変更
-
--htmlオプションによるHTML出力に対応
Shikiによるtruecolorハイライト対応
v1ではcli-highlightを使っていたが、v2ではShiki(VS Codeと同じTextMateベースのエンジン)に切り替えた。 24bit RGBカラーで出力するので、ターミナル上でのテーマカバー範囲を広げることができる。
テーマはShikiをベースに15種類用意。nord, dracula, tokyo-night, github-dark/light, solarized-dark/light, catppuccin-mocha/latte など。 デフォルトのテーマは個人的な好みでnord。
例;
$ memd --theme dracula file.md
HTML出力対応
--html をつけるとスタンドアロンHTMLを出力する。mermaidはインラインSVGとしてレンダリングされるので、ブラウザで開けばそのまま見れる。
$ memd test/test1.md --html > out.html
テーマも反映。
$ memd doc.md --html --theme dracula > out.html
複数ファイルを渡すと1つのHTMLにまとめる。ドキュメント生成向け。
zshなら以下のような関数を適当に作っておくと、あまりに巨大なダイアグラムなためにasciiでなくsvgで見たほうがいい場合などに、さっと確認できていい感じ。
memdHtml() { local f=/tmp/memd-preview.html; memd --html "$@" > "$f" && open "$f"; }
$ memdHtml plan.md # ブラウザで開く
CLIオプション一覧
Usage: memd [options] [files...]
-v, --version output the version number
--no-pager disable pager (less)
--no-mouse disable mouse scroll in pager
--no-color disable colored output
--width <number> terminal width override
--ascii use pure ASCII mode for diagrams (default: unicode)
--html output as standalone HTML
--theme <name> color theme (default: "nord")
-h, --help display help for command
インストール
npm install -g memd-cli
なお Node.js 20以上が必要です。
おわり
v1のときと同じく beautiful-mermaid と marked, marked-terminal を使わせてもらいつつ、ハイライトエンジンをShikiにしたことでターミナルでの視認性がだいぶ上がった。 HTML出力もつけたので、ターミナルで確認しつつそのままドキュメントとして吐き出す、という流れができるようになった。
–htmlオプションの実装において常にstdoutに出すという制約をつけることで設計がシンプルになったのでスコープを広げすぎないことは引き続き大事。