textlintはルールで拡張出来る自然言語向けのLintツールです。

textlint 5.1.0でルールのプリセットをサポートしました。

ルール、プリセット、プラグインは以下のような関係です。

  • rule
    • いわゆるルール
  • rule-preset
    • ルールをまとめたもの
  • plugin
    • ルールとプロセッサ(拡張機能)を持ってる

rule-preset-plugin

textlintはデフォルトでは一つもルールを持っていません。

そのため、どのルールを入れたらいいか迷った場合に、誰かがまとめてくれたプリセットをとりあえず入れれば、とりあえず文章のチェックが出来るようになります。

textlintの使い方は以下で解説しているのと基本的に同じですが、今回はプリセットの使い方を紹介します。

インストール

textlint本体と2つのプリセットをインストールしてみます。

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

result

もっとルールを加える

プリセットとルールは併用可能なので、プリセットにないルールは自分で追加していくといいと思います。

textlint-rule-prhを使った表記揺れの検出などは効果的なルールと言えます。

もっと優しい使い方

Node.jsやGitなどに慣れてない人は以下を参考にしてください。 (プリセットではなくルールベースですが、プリセットとルールの使い方はだいたい同じです)

preview

プリセットの作り方

プリセットの作り方は以下のドキュメントを参考にしてください。

基本的にルール本体をrulesに、ルールのデフォルト設定をrulesConfigに書いたオブジェクトを返すだけなので単純です。

module.exports = {
    "rules": {
        "no-todo": require("textlint-rule-no-todo")
    },
    "rulesConfig": {
        "no-todo": true
    }
};

作ったプリセットはtextlint-rule-preset-<好きな名前>で公開してください。 (この命名規則だとtextlint-rule部分の指定を省略できます)

プリセットは元々別にあるルールを集めただけの場合が多くなると思うので、依存するルールが更新された時にプリセットも更新できると便利です。

Greenkeepersemantic-releaseを使うと依存するルールモジュールが更新されたら自動でPull Requestがきて、マージしたら自動的にnpm publishすることができて便利です。