Skip to content

Releases: pxgrid/codegrid-markdown

v7.0.0

01 Apr 17:07

Choose a tag to compare

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.0
  • marked: ^1.2.7^17.0.5
  • yargs を削除し、node:utilparseArgs に移行
  • jade / pug を削除

これにより、旧依存に起因する脆弱性や deprecated warning を解消しました。

テスト基盤の更新

  • gulp / gulp-mocha ベースのテストを廃止
  • node:test + @power-assert/node に移行
  • CLI のスナップショットテストを追加

コードベースのモダナイズ

  • varlet / const に更新
  • prototype ベースの実装を class に整理
  • コールバックの整理、テンプレートリテラル化などを実施

パッケージの整理

  • files フィールドを追加し、公開物を最小化
  • authorPixelGrid に更新
  • contributorsleader22 を追加
  • index.d.ts から marked の削除済み・非推奨オプションを除去

移行ガイド

v6 から v7 に上げる場合は、最低限次の確認をしてください。

  1. Node.js を 24 以上にする
  2. require() 利用時は Node.js 24 以上であることを確認する
  3. lang- 前提の CSS やクラス検出処理があれば language- に対応する
  4. [jade]...[/jade] を使っているデータが残っていないことを確認する

関連する Issue / PR

  • #41 ESM 化
  • #42 Jade 記法削除、CRLF バグ修正
  • #43 @power-assert/node 導入
  • #47 marked 7.0.5 固定
  • #48 undici セキュリティアップデート
  • #49 cheerio 更新
  • #50 files フィールド追加
  • #51 author / contributors 更新
  • #52 v7 リリース前整備
  • #53 CLI スナップショットテスト追加
  • #54 README 更新
  • #55 import.meta.dirname 対応
  • #56 langPrefix 削除
  • #57 marked v17 対応
  • #58 README 出力例修正
  • #59 コードブロックタイトルの HTML エスケープ漏れ
  • #60 タイトルエスケープ修正・Renderer.code 修正
  • #61 Renderer.code の marked v17 トークン API 対応(タイトル付きコードブロックが出力されないバグの修正)