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に出すという制約をつけることで設計がシンプルになったので、スコープを広げすぎないことは引き続き大事です。
関連記事:
- memd v3: Markdownディレクトリをブラウザで閲覧 – serveモード、ライブリロード、Worker Thread並列化を追加