ルールプリセットを使ってお手軽にtextlint入門
textlintはルールで拡張出来る自然言語向けのLintツールです。
textlint 5.1.0でルールのプリセットをサポートしました。
ルール、プリセット、プラグインは以下のような関係です。
-
rule
- いわゆるルール
-
rule-preset
- ルールをまとめたもの
-
plugin
- ルールとプロセッサ(拡張機能)を持ってる
textlintはデフォルトでは一つもルールを持っていません。
そのため、どのルールを入れたらいいか迷った場合に、誰かがまとめてくれたプリセットをとりあえず入れれば、とりあえず文章のチェックが出来るようになります。
textlintの使い方は以下で解説しているのと基本的に同じですが、今回はプリセットの使い方を紹介します。
インストール
textlint本体と2つのプリセットをインストールしてみます。
-
azu/textlint-rule-preset-japanese
- 自分が作った日本語関係のルールセット
- azu/textlint-rule-preset-JTF-style
npm i -D textlint textlint-rule-preset-japanese textlint-rule-preset-jtf-style
使い方
プリセットをコマンドラインから指定することで設定ファイルなしに利用することもできます。
$(npm bin)/textlint --preset preset-japanese --preset preset-jtf-style README.md
逆にこの場合はルール毎の設定ができないので、設定ファイルである.textlintrc
を使ってみます。
設定ファイル
サンプルリポジトリを以下に置いておきます。
.textlintrc
に以下のように書くとプリセットを有効化できます
{
"rules": {
"preset-japanese": true,
"preset-jtf-style": true
}
}
プリセットはルールの集合なので、プリセットの中にある特定のルールを設定したい場合があります。
例えば、textlint-rule-preset-JTF-styleの"1.2.2.ピリオド(.)とカンマ(,)"
だけを無効化したいなら次のように書くことができます。
{
"rules": {
"preset-jtf-style": {
"1.2.2.ピリオド(.)とカンマ(,)": false
}
}
}
同じディレクトリに.textlinrc
があれば、実行はtextlint
コマンドを叩くだけです。
$(npm bin)/textlint README.md
もっとルールを加える
プリセットとルールは併用可能なので、プリセットにないルールは自分で追加していくといいと思います。
textlint-rule-prhを使った表記揺れの検出などは効果的なルールと言えます。
もっと優しい使い方
Node.jsやGitなどに慣れてない人は以下を参考にしてください。 (プリセットではなくルールベースですが、プリセットとルールの使い方はだいたい同じです)
プリセットの作り方
プリセットの作り方は以下のドキュメントを参考にしてください。
基本的にルール本体をrules
に、ルールのデフォルト設定をrulesConfig
に書いたオブジェクトを返すだけなので単純です。
module.exports = {
"rules": {
"no-todo": require("textlint-rule-no-todo")
},
"rulesConfig": {
"no-todo": true
}
};
作ったプリセットはtextlint-rule-preset-<好きな名前>
で公開してください。
(この命名規則だとtextlint-rule部分の指定を省略できます)
プリセットは元々別にあるルールを集めただけの場合が多くなると思うので、依存するルールが更新された時にプリセットも更新できると便利です。
Greenkeeperとsemantic-releaseを使うと依存するルールモジュールが更新されたら自動でPull Requestがきて、マージしたら自動的にnpm publishすることができて便利です。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。