メインコンテンツまでスキップ

API の変更

このページでは Node.js API の破壊的変更について説明します。Markuplint をプログラムから呼び出している場合や、エディタ連携を構築している場合は確認してください。

変更一覧

変更内容影響範囲
exec() 関数の削除exec() を直接呼び出しているユーザー
結果に FixSummary を追加fix: true を使用する API ユーザー
computeCursorOffset() の追加エディタ連携の開発者

exec() 関数の削除

破壊的変更

レガシーの exec() 関数は削除されました。v1 から非推奨でした。

exec()MLEngine に置き換えてください。

変更前(v4):

import { exec } from 'markuplint';

const results = await exec({
files: 'index.html',
config: '.markuplintrc',
});

変更後(v5):

import { MLEngine } from 'markuplint';

const file = await MLEngine.toMLFile('index.html');
const engine = new MLEngine(file, {
configFile: '.markuplintrc',
});
const result = await engine.exec();

オプションの対応表

以下の表で exec() のオプションを MLEngine に変換してください。

exec() オプション(v4)MLEngine での対応(v5)
filesMLEngine.toMLFile() の第1引数
sourceCodes / names / workspaceMLEngine.toMLFile({ sourceCode, name, workspace })
config(文字列)configFile オプション
config(オブジェクト)config オプション
defaultConfigdefaultConfig オプション
rulesrules オプション
rulesAutoResolveautoLoad オプション
fixfix オプション
localelocale オプション

新機能: 結果の FixSummary

fix: true で実行すると、結果に fixSummary フィールドが含まれるようになりました。fix プロセスで何が起きたかを確認できます。

const result = await engine.exec();
if (result?.fixSummary) {
console.log(`パス数: ${result.fixSummary.passCount}`);
console.log(`適用数: ${result.fixSummary.totalApplied}`);
console.log(`スキップ数: ${result.fixSummary.totalSkipped}`);
}
フィールド説明
passCountnumber実行された fix パスの回数
totalAppliednumber全パスで適用された fix の合計数
totalSkippednumber編集の重複によりスキップされた fix の数
reachedMaxPassesboolean10パスの安全上限に達したかどうか
firstPassEditsreadonly TextEdit[]最初のパスで適用された編集(元のオフセット)
備考

これは新しい追加機能であり、破壊的変更ではありません。既存のコードへの影響はありません。

新機能: computeCursorOffset()

エディタ連携のために、@markuplint/ml-core から computeCursorOffset() がエクスポートされるようになりました。元のソースコード上のカーソル位置を、修正後のソースコード上の位置にリマップします。

import { computeCursorOffset } from '@markuplint/ml-core';

const newOffset = computeCursorOffset(result.fixSummary.firstPassEdits, originalCursorOffset);

最初のパスの編集情報(元のソースコードのオフセットを参照)を使い、修正後のコードでのカーソル位置を計算します。

ヒント

FixSummarycomputeCursorOffset() を組み合わせることで、エディタプラグインでスムーズな修正・ナビゲーション体験を実現できます。