みなさん、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,
}
}