textlint plugin メモ
Apr 10, 2024
Plugin · textlintを読んでメモ。
-
textlintのプラグインについての公式ドキュメント。
- textlintはデフォルトでテキストファイルとマークダウンをサポートしているけど、他のフォーマットのサポートについてはプラグインが必要。
-
プラグインのパッケージ名は
textlint-plugin-<plugin-name>
の形式にする。 -
プロセッサー
-
Processor
は必須。 -
export default { Processor: require('./YourProcessor'), };
-
利用可能なファイルタイプとその前後処理を定義するクラス。
-
デフォルトのプラグインの実装
-
import { parse } from 'text-to-ast'; export default class YourProcessor { constructor(options = {}) { this.options = options; // サポートする拡張子をオプションから指定 this.extensions = options.extensions || []; } availableExtensions() { return ['.txt'].concat(this.extensions); } // 前後処理を定義(解析および生成) processor(ext) { return { preProcess(text, filePath) { // 解析結果はASTオブジェクト。 return parse(text); }, postProcess(messages, filePath) { return { messages, filePath, }; }, }; } }
Processor
クラスはこれらのメソッド定義が必要。preProcess
TxtParentNode
か{ text: string, ast: TxtParentNode }
のいずれかを返す。非同期ならPromise<TxtParentNode> | Promise<{ text: string, ast: TxtParentNode }>
で。- プロセッサープラグインのテストは@textlint/ast-tester.を利用する。
parse
の実装が大変そう。
postProcess
{ messages, filePath }
を返す。非同期ならPromise<{ messages, filePath }>
で。- 標準入力なら
filePath
はundefined
。
-
-
プラグインをconfigで指定するときは
plugins
に。{ "plugins": ["plugin-name"] }
- オプションがあるなら
-
{ "plugins": { "plugin-name": { "option": "value" } } }
-
- オプションがあるなら
-
publish
textlint-plugin-
をプレフィックスにしてnpmに公開する。- textlintのconfigに指定するときはプレフィックスなしで指定する。スコープ付きのパッケージならスコープはそのまま。少し分かりにくいかもしれない。
-
プラグインのリスト