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



Recent blog posts



(c) Copyright 2026 Kotaro Yoshimatsu