memd v2: ターミナルでMarkdownをTrue Colorハイライト表示 + スタンドアロンHTML出力

March 14, 2026

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に出すという制約をつけることで設計がシンプルになったので、スコープを広げすぎないことは引き続き大事です。

関連記事:

#cli-tools #node-js