textlint plugin メモ
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クラスはこれらのメソッド定義が必要。preProcessTxtParentNodeか{ 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に指定するときはプレフィックスなしで指定する。スコープ付きのパッケージならスコープはそのまま。少し分かりにくいかもしれない。
-
プラグインのリスト