個人出版・AI校正

動かない!?vscodeでtextlintの使い方

個人出版・AI校正

textlintの使い方の覚書です。

vscodeでtextlintの使い方

本体のインストール

nodeとnpmが必要です。Javascriptの開発環境が入っている人は元から入っているでしょう。

確認しましょう。入っていなかったらインストールが必要です。

node -v
npm -v

次に、textlintをインストールします。

npm install textlint --save-dev

save-dev?グローバル?

グローバルでインストールする方法もありますが、公式サイトには

Node.jsのpackage.jsonがあるプロジェクトなら–save-devとかでインストールして使うと良いと思います。(できればこちらをオススメします)

https://efcl.info/2015/09/10/introduce-textlint/

と書かれています。とりあえず、save-devの環境にインストールしています。

必要に応じてglobalでインストールしてもいいかもしれません。注意事項は以下。

実行してみましょう。npmの場合はnpxです。

npx textlint 1-00.md
== No rules found, textlint hasn’t done anything ==

Possible reasons:
* Your textlint config file has no rules.
* You have no config file and you aren’t passing rules via command line.
* Your textlint config has a syntax error.

=> How to set up rules?

textlint/docs/configuring.md at master · textlint/textlint

ルールを設定していないと使えないようです。

スポンサーリンク

textlintのルール

ルールのインストール

textlintの開発者さんがルールもあわせて公開しているため、こちらのルールを利用します。

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

textlint-rule-preset-ja-technical-writing

他のルール

textlintには他にもいろいろとルールがあります。この方はvscode+textlintみたいで結構、カスタマイズしていますね。boothでreactの本をいっぱい出版している方ですね。

他のルールのまとめです。

個人的に、「たりたり」を採用しました。

小説用もあります。

スポンサーリンク

.textlintrcの作成(.textlintrc.jsの作り方)

(追記)現在はコメントがかける.textlintrc.jsに拡張子を変えて使っています。module.exportsをつける必要があるため注意しましょう。

module.exports = {
  "filters": {},
  "rules": {}
}`

次に設定ファイルを作成します。

ls
cd 校正したい文章が入っているmdファイルがある場所に移動

初期化して設定ファイルを作成。もちろんVsCode上で直接作ってもかまいません。

npx textlint --init
.textlintrc is created.

.textlintrcが生成されます。拡張子はとくにありませんが、問題ありません。

なお、.textlintrc.jsonとしてもよさそうです。

{
  "filters": {},
  "rules": {}
}`

インストールされたルールを設定します。”preset-ja-technical-writing”: trueという一行を追加するとルールが有効化されます。あらかじめインストールしておけば勝手に記述されるようになったようです。

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

mdファイルに「今日は今日は雨です。。」みたいな下手な日本語を書ききます。

textlintのエラーチェック方法

次のコマンドをうつと、今度はエラーが表示されます。

npx textlint 1-00.md

こちらのコマンドでも同じ結果が得られます。

./node_modules/.bin/textlint 1-00.md

textlintで自動修正する

修正する場合は次のコマンドです。ただし、すべてのルールが自動修正をサポートしていていません。その場合は手動修正します。

npx textlint --fix 1-00.md

階層がある場合は、階層を含めてパスを指定します。

npx textlint --fix md/1-00.md

fixをぬくとターミナルにエラーが表示されます。

npx textlint md/1-00.md

またはVS Codeを再起動しても起動時にチェックしてくれるようでエラーが表示されます

文章量が長いとtextlint反映までに少し時間がかかることがあります。ターミナルのProgramsにエラーがでます。

フォルダ一括でmdをチェックする

*を使うだけ。

npx textlint folder/*.md

複数のフォルダなら複数指定します。最終チェックに便利です。

npx textlint folder/*.md folder2/*.md
npx textlint folder/*.md folder/child/*.md

textlintでチェックするスクリプトを追加する(複数のmdをチェック)

今は上記のフォルダごとの方法が多いです。

複数のmdファイルを一括で修正する場合はpackage.jsonに次の記述を追加します。

  "scripts": {
    "lint": "textlint '*.md'",
    "fix": "textlint '*.md' --fix"
  },

フォンダの掘る場合は調整してください。

  "scripts": {
    "lint": "textlint 'ebooks/**/*.md'",
    "fix": "textlint 'ebooks/**/*.md' --fix"
  },

チェックだけする場合は次のとおりです。全ファイルチェックします。

npm run lint

修正する場合は次のとおりです。

npm run fix

textlint-rule-preset-ja-technical-writingの一部のルールを無効化する

{
  "rules": {
    "preset-ja-technical-writing": true,
    "ja-technical-writing/ja-no-mixed-period": false,
    "ja-technical-writing/no-exclamation-question-mark": false,
  }
}

ルールの中に自分のルールとあわないものがあるでしょう。そのような場合は一部無効化できます。

一文に二回以上利用されている助詞 “が” がみつかりました。 (ja-technical-writing/no-doubled-joshi)がうざい。。。

一部ルールを無効化したい場合もあるでしょう。”ja-technical-writing/ja-no-mixed-period”は文末に。をつけるルールですが無効化しました。電子書籍の奥付(著者情報)は。をつけないからです。

普段は有効化しておいた方がいいでしょう。最後にエラーが残ると気持ちが悪いため、時々無効化しています。

ただの趣味の問題ですが、!と?は漫画のようなゆるい表現が好きなため外しています。ブログ用ならビックリマークやクエッッションマークは有効にしてもよいでしょう。

"ja-technical-writing/ja-no-successive-word": false

上記のルールは、あるあるや英英辞典などもエラーがでます。連続しているため。

falseにしましたが、うっかり「またまた」とか書いてしまうかもしれません。最後に有効化して確認することにします。

VS Codeでtextlintが動かない原因と解決方法

  • エラーがでている(エラー名でぐぐってください)
  • ルールが間違えている
  • 修正するものがない(わざと変な文章を作って動作確認)
  • 階層が間違えている(何もエラーがでない)

たとえば、docというフォルダがある場合、次のような指定になります。

npx textlint doc/text.md

.textlintrc.jsやpackage.jsonがあるファイルから打ちます。

textlintでひっかりやすいエラー

error    一文に二回以上利用されている助詞 "が" がみつかりました。

圧倒的に助詞が多い気がします。

がある場合があります。

みたいなのが多いですね。で + を+ [動詞]場合があります。である場合があります。とかでしょうか。

スポンサーリンク

表記揺れの自動修正(textlint-rule-prh)

長くなったため別記事にしました。

スポンサーリンク

textlintの対応拡張子

nuxt(vue)の.vueの拡張子もチェックできるのかなと少し気になってぐぐりましたが、そんな記事はぜんぜんでてきませんでした。5分調査したところわかったのはこのぐらい。対応拡張子決まっていますね。

少しだからmdでチェックしてvueに流し込むかな!??😑

excel(csv)でtextlint

excel(csv)もmdに変換するのは簡単なので1回mdに変換して校正すればよさそうです。

VsCodeの場合、MarkdownTableMakerは現在使えませんが、Excel to Markdown tableがあります。

相互に変換できるオンラインツールもありました。

vue/javascriptでtextlint

vue内で書かれた日本語をチェックしたかったのですけど、ちょっとだけだったのでmdファイルにコピペしました。企画(ドキュメント)用の別リポジトリを用意しました。ソースコードをコピペしたため、いろいろとひっかかったため下記のルールを追加したら、日本語のエラーだけになりました。

"rules": {
  "ja-technical-writing/max-comma": false,  // カンマの数は指定なし
  "ja-technical-writing/sentence-length": false, //100文字数制限の無効化
  "ja-technical-writing/no-unmatched-pair": false
}

htmlでtextlint(プラグインあり)

htmlはプラグインがでています。

npm install textlint-plugin-html --save-dev
{
    "plugins": [
        "html"
    ]
}

.htmlファイルをチェックします。

vueのtemplateもこの方法でチェックできました。なお、textlint-plugin-vueやtextlint-plugin-javascriptみたいなプラグインは見当たりませんでした。

スポンサーリンク

textlintのエラー

No rules found, textlint hasn’t done anything

No rules found, textlint hasn’t done anything

,の忘れかもしれません。ハイライトがないため、うっかりミスです、たぶん。。

もしくはルールがない階層で実行しています。

Error while loading rule ‘prh’: ENOENT: no such file or directory

Error while loading rule 'prh': ENOENT: no such file or directory, open '/Users/name/rules.yml'

1、独自のファイルがない場合はエラーが発生しました。

コマンド+クリックすると、CreateFileできるようです。再起動でエラーが消えました。。自分で作る場合、rules.ymlにルールを記述していくようですが、このファイルは必要のようです。

2、うっかり、.textlintrcとnode_modulesが同じ階層になくエラーが発生したこともあります。

いずれにせよファイルがないという凡ミスですね。

Message: Request initialize failed with message: Failed to resolve module: textlint

Message: Request initialize failed with message: Failed to resolve module: textlint

textlintにパスを通っていないためVsCodeを再起動します。

スポンサーリンク

textlinはすごい!

電子書籍元年以降、ePUBなどのフォーマットなどが出現しましたが、個人的にイマイチな気がしました。あまりぱっとしなかったのです。しかし電子書籍の革命はこの執筆環境textlintなのでは、という感じぐらいいけています。校正者がいなくてもかなり品質があがる気がします。

ありがとうございます。

公式サイト

スポンサーリンク
neruをフォローする
スポンサーリンク

コメント

タイトルとURLをコピーしました