少し前に出たmarkedのv0.4.0では色々と修正が入り、かつ見出しにid
属性を振らないオプションが追加された。更新してみたが、結構な感じでバグがある。一番ハマったのがMarkdownファイル内に含まれるHTMLがぶった切られるので、突然p
要素が挿入されたりするものだ。同じバグについてのイシューは既に立っていた。
<section>
# Subsection
This is a subsection paragraph.
</section>
v0.3.19ではこのまま出力されるはずだ(section
タグの間はインラインのレンダラーだけ通される)。しかしv0.4.0ではパーサーが切り出しを間違えるようで、# Subsection
までとそれ以降が別々にブロックとして処理されてしまう。そのため前者はHTMLとしてそのまま出力されるが、後者がp
要素で括られてしまう。
<section>
# Subsection
<p>This is a subsection paragraph.
</section></p>
具体的にはこのような出力になる。完全に壊れている。ワークアラウンドもなさそうなので、僕はバージョンを戻した。Markdownで生HTMLを書くことがある人は更新してはいけない。
markedはv0.4.0で、CommonMark対応と同時に既存のバグも直す、という荒行をやっていたようで、こういったバグもそうだが、細かいところの互換性も失われているようだ。改行の入り方などで微妙な違いを見せていた。古いバージョンとの互換性はともかく、何気なくGitHub Flavored Markdownとの互換性も失われている(フェンス・コードでの最後の改行など)のは影響がそこそこ大きそうだ。