JavaScript
textlint

コードからtextlintを実行する

More than 1 year has passed since last update.

概要

textlintはテキスト向けのLintツールで、予め定義したルールに沿って文章校正を行ってくれます。textlintの利用方法としてCLIから利用することが多いと思いますが、コードからtextlintを実行する必要があったので調査しました。この投稿はそのメモです。

環境構築

Node.jsのインストール

Node.jsのバージョンはv6.9.1を使用しています。nvmnodebrewなどを使ってインストールします。

textlintのインストール

textlint本体をインストールします。

npm install textlint

ルールのインストール

textlintを実行する際に使用するルールをインストールします。今回はtextlint-ja/textlint-rule-preset-ja-technical-writingを使用します。

npm install textlint-rule-preset-ja-technical-writing

.textlintrcの設定

.textlintrcを作成し"preset-ja-technical-writing"をtrueにしておきます。

{
  "rules": {
    "preset-ja-technical-writing": true
  }
}

textlintの実行

コードから実行する場合以下のようになります。TextLintEngineCore#executeOnTextを使用すると引数に取ったテキストに対してtextlintを実行することができます。引数にファイルを指定したい場合TextLintEngineCore#executeOnFilesを使用します。

const TextLintEngine = require("textlint").TextLintEngine;

const engine = new TextLintEngine({
    rulePaths: [
      "node_modules/textlint-rule-preset-ja-technical-writing"
    ]
});

engine.executeOnText("# test!!").then(results => {
  console.log(results[0].messages);

  if (engine.isErrorResults(results)) {
    const output = engine.formatResults(results);
    console.log(output);
  }
});

実行結果は以下のように出力されます。

node index.js

[ { type: 'lint',
    ruleId: 'preset-ja-technical-writing/no-exclamation-question-mark',
    message: 'Disallow to use "!".',
    index: 6,
    line: 1,
    column: 7,
    severity: 2 },
  { type: 'lint',
    ruleId: 'preset-ja-technical-writing/no-exclamation-question-mark',
    message: 'Disallow to use "!".',
    index: 7,
    line: 1,
    column: 8,
    severity: 2 } ]

<text>
  1:7  error  Disallow to use "!"  preset-ja-technical-writing/no-exclamation-question-mark
  1:8  error  Disallow to use "!"  preset-ja-technical-writing/no-exclamation-question-mark

✖ 2 problems (2 errors, 0 warnings)

サンプルコード

サンプルコードはこちらです。

https://github.com/horie1024/textlint-sample

参考