ローカルインストールしたtextlintでtextlint --initが実行できない

状況

OS:Windows10

別のプログラムからtextlintを実行したかったのでNode.jsからインストールすることに。

色々調べてみて、自分のやりたいこと的にローカルインストール一択だったので、textlintパッケージはローカルインストールしました。

しかし .textlintrc.json を作成するために textlint --init コマンドを実行するとエラーが発生し、ちょっと詰まったので備忘録として残しています。

手順

  1. Node.jsをインストール
  2. カレントプロジェクトに移動
  3. npm init -y を実行し、package.json を作成
  4. npm install --save-dev textlint を実行し、textlint をローカルインストール
  5. textlint --init を実行したところエラーに

エラー内容

C:\Users\t.haneta\OneDrive\node.js\Sample>textlint --init
'textlint' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\Users\t.haneta\OneDrive\node.js\Sample>

解決策

npx textlint --init コマンドを実行!

C:\Users\t.haneta\OneDrive\node.js\Sample>npx textlint --init
.textlintrc.json is created.

C:\Users\t.haneta\OneDrive\node.js\Sample>

原因

グローバルインストールすると C:\Users\<ユーザー名>\AppData\Roaming\npm の直下に保存されます。

ユーザー環境変数C:\Users\<ユーザー名>\AppData\Roaming\npm が登録されているため、どこからでもtextlintコマンドが実行できるようです。

ローカルインストールではnpx コマンドを使うことで、ローカルにインストールされたnpmパッケージをグローバルにインストールすることなく実行できるそうです。

おわりに

Node.jsを使ったことがなく、ローカルインストールとグローバルインストールの違いもよく分かっていなかったので勉強になりました。
textlint以外も使ってみたいと思います。