Releases: pxgrid/codegrid-markdown
v7.0.0
codegrid-markdown v7.0.0 リリースノート
v6.0.0 以来の更新をまとめたメジャーリリースです。
今回のリリースでは、依存関係と実装を現代化しつつ、既存の公開 API は維持しました。主な変更点は、Node.js 24 への引き上げ、ESM パッケージ化、Jade 記法の削除、コードブロック出力クラスの変更です。
Breaking Changes
Node.js 24 以上が必要
cheerio v1、marked v17、および ESM パッケージ化に合わせて、動作環境を Node.js 24 以上に引き上げました。
{
"engines": {
"node": ">=24.0.0"
}
}ESM パッケージへ移行
パッケージは CommonJS から ESM に移行しました。package.json に "type": "module" を追加しています。
- ESM 環境ではそのまま
importで利用できます - Node.js 24 以上であれば、CommonJS からも
require()で利用できます
import CodeGridMarkdown from 'codegrid-markdown';
// CommonJS on Node.js >= 24
// const CodeGridMarkdown = require('codegrid-markdown').default;Jade 記法を削除
[jade]...[/jade] 構文を削除しました。CodeGrid ではすでに利用されておらず、実装も正しく保守されていなかったためです。これに伴い jade / pug 依存も削除しました。
コードブロックの言語クラスが lang- から language- に変更
marked のデフォルトに合わせて、コードブロックの出力クラスが変わりました。
<!-- v6 -->
<pre><code class="lang-html">...</code></pre>
<!-- v7 -->
<pre><code class="language-html">...</code></pre>lang- 前提の処理や CSS がある場合は、language- へ対応してください。
互換性
公開 API 自体には変更はありません。これまで通り new CodeGridMarkdown().render(markdown) で利用できます。
import CodeGridMarkdown from 'codegrid-markdown';
const cgmd = new CodeGridMarkdown();
const html = cgmd.render('# Hello\n\n[note]\nこれはノートです。\n[/note]');CLI のオプションや基本的な振る舞いにも利用者向けの変更はありません。
Bug Fixes
CRLF 改行で空行が増殖する不具合を修正
Windows 系の改行を含む Markdown で、不要な空行が増える問題を修正しました。
コードブロックタイトルの HTML エスケープ漏れを修正
タイトル付きコードブロックで、タイトルに < > などの HTML 特殊文字が含まれると、そのまま HTML として解釈される問題を修正しました。
```html#<template>の使い方
...
```は v7 では安全にエスケープされて出力されます。
タイトル付きコードブロックが出力されない不具合を修正
marked v17 ではカスタムレンダラーの code 関数がトークンオブジェクト({type, raw, lang, text})で呼び出されます。旧シグネチャ (code, lang, escaped) のままになっていたため、```html#タイトル のようなタイトル付きコードブロックが <section class="CG2-livecode"> でラップされず、クラス名にタイトルが混入した形(class="language-html#タイトル")で出力されていました。
この問題は RC 版(7.0.0-rc.1)での動作確認中に発見し、正式リリース前に修正しました。
主な改善
依存関係の更新
cheerio:^0.22.0→^1.2.0marked:^1.2.7→^17.0.5yargsを削除し、node:utilのparseArgsに移行jade/pugを削除
これにより、旧依存に起因する脆弱性や deprecated warning を解消しました。
テスト基盤の更新
gulp/gulp-mochaベースのテストを廃止node:test+@power-assert/nodeに移行- CLI のスナップショットテストを追加
コードベースのモダナイズ
varをlet/constに更新prototypeベースの実装をclassに整理- コールバックの整理、テンプレートリテラル化などを実施
パッケージの整理
filesフィールドを追加し、公開物を最小化authorをPixelGridに更新contributorsにleader22を追加index.d.tsからmarkedの削除済み・非推奨オプションを除去
移行ガイド
v6 から v7 に上げる場合は、最低限次の確認をしてください。
- Node.js を 24 以上にする
require()利用時は Node.js 24 以上であることを確認するlang-前提の CSS やクラス検出処理があればlanguage-に対応する[jade]...[/jade]を使っているデータが残っていないことを確認する
関連する Issue / PR
- #41 ESM 化
- #42 Jade 記法削除、CRLF バグ修正
- #43
@power-assert/node導入 - #47
marked7.0.5 固定 - #48
undiciセキュリティアップデート - #49
cheerio更新 - #50
filesフィールド追加 - #51
author/contributors更新 - #52 v7 リリース前整備
- #53 CLI スナップショットテスト追加
- #54 README 更新
- #55
import.meta.dirname対応 - #56
langPrefix削除 - #57
markedv17 対応 - #58 README 出力例修正
- #59 コードブロックタイトルの HTML エスケープ漏れ
- #60 タイトルエスケープ修正・
Renderer.code修正 - #61
Renderer.codeの marked v17 トークン API 対応(タイトル付きコードブロックが出力されないバグの修正)