textlintを導入した


みなさん、lintしてますか。

2019/8/7追記: この手順だと動かなくなってます。折を見て調査する予定

経緯

blogを始めたのに、どうにも読みやすい日本語が書けないので日本語のlintないのかよ!って泣いていたらありました。助かります。

導入

作業ディレクトリを作ってnpm的な初期化

mkdir -p ~/tmp/hello-textlint
cd  ~/tmp/hello-textlint
npm init --yes

本体のインストール

npmを使います

npm install --save-dev textlint

プラグインのインストール

全部入れスタイル

npm install --save-dev textlint-rule-max-ten textlint-rule-max-kanji-continuous-len textlint-rule-spellcheck-tech-word textlint-rule-web-plus-db textlint-rule-no-mix-dearu-desumasu textlint-rule-no-doubled-joshi textlint-rule-no-double-negative-ja textlint-rule-no-hankaku-kana textlint-rule-ja-no-weak-phrase textlint-rule-ja-no-redundant-expression textlint-rule-ja-no-abusage textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet textlint-rule-sentence-length textlint-rule-first-sentence-length textlint-rule-no-dropping-the-ra textlint-rule-no-doubled-conjunctive-particle-ga textlint-rule-no-doubled-conjunction textlint-rule-ja-no-mixed-period textlint-rule-max-appearence-count-of-words textlint-rule-max-length-of-title textlint-rule-incremental-headers textlint-rule-ja-hiragana-keishikimeishi textlint-rule-ja-hiragana-fukushi textlint-rule-ja-hiragana-hojodoushi textlint-rule-ja-unnatural-alphabet @textlint-ja/textlint-rule-no-insert-dropping-sa textlint-rule-prefer-tari-tari textlint-rule-general-novel-style-ja

定義ファイルを作る

./node_modules/.bin/textlint --init

.textlintrc is created.
# このファイルに、lintにどのルールを適用するかが書かれている

実行

echo 'りーどみー' > README.md
./node_modules/.bin/textlint README.md
# --fixをつけて実行すると✅マークのついた指摘は自動で直してくれる

おまけ

この文章をtextlintするとこんな結果が得られます

   1:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja
   4:1   ✓ error  blogを => ブログを                                          web-plus-db
   4:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja
   4:46  ✓ error  感嘆符(!)・疑問符(?)の直後にスペースか閉じ括弧が必要です  general-novel-style-ja
   6:1   error    ページの先頭以外で#が見つかりました。                       incremental-headers
  17:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja
  17:8   error    文末が"。"で終わっていません。                              ja-no-mixed-period
  24:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja
  24:8   error    文末が"。"で終わっていません。                              ja-no-mixed-period
  38:1   error    ページの先頭以外で#が見つかりました。                       incremental-headers
  45:1   error    ページの先頭以外で#が見つかりました。                       incremental-headers

✖ 11 problems (11 errors, 0 warnings)
✓ 6 fixable problems.

僕の.textlintrc

{
  "filters": {},
  "rules": {
    "@textlint-ja/no-insert-dropping-sa": true,
    "first-sentence-length": true,
    "ja-hiragana-fukushi": true,
    "ja-hiragana-hojodoushi": true,
    "ja-hiragana-keishikimeishi": true,
    "ja-no-abusage": true,
    "ja-no-mixed-period": {
       "periodMark": "。",
       "allowPeriodMarks": ['}','笑'],
       "allowEmojiAtEnd": true,
       "forceAppendPeriod": false
    },
    "ja-no-redundant-expression": true,
    "ja-no-weak-phrase": true,
    "ja-unnatural-alphabet": true,
    "max-appearence-count-of-words": true,
    "max-kanji-continuous-len": true,
    "max-kanji-continuous-len": {
        max: 5,
        allow: ["無犯罪証明書","専門資格証明書","実務経験証明書","犯罪経歴証明書"]
    },
    "max-length-of-title": true,
    "max-ten": true,
    "no-double-negative-ja": true,
    "no-doubled-conjunction": true,
    "no-doubled-conjunctive-particle-ga": true,
    "no-doubled-joshi": true,
    "no-dropping-the-ra": true,
    "no-hankaku-kana": true,
    "no-mix-dearu-desumasu": true,
    "no-mixed-zenkaku-and-hankaku-alphabet": true,
    "no-todo": true,
    "prefer-tari-tari": true,
    "sentence-length": true,
  }
}

関連ページ