銀の弾丸

プログラミングに関して、いろいろ書き残していければと思っております。

npm scripts で eslint-watch を実行するには npx が必要だった

f:id:takamints:20200228215451p:plain


NPM 大判七輪 460*260*180 真鍮巻網付 丸和工業
丸和工業
売り上げランキング: 509,190

コードの編集中にeslint のチェック機能を継続的に実行してくれる eslint-watch というパッケージを見つけたので、早速 npm scripts から使ってみようとしたのだが、なぜか「そんなコマンドありません」ってエラーになった。

PowerShellの出力は:

PS C:\Users\????\Git\list-it> npm run lint-watch

> list-it@1.0.6 lint-watch C:\Users\????\Git\list-it
> eslint-watch --watch

'eslint-watch' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! list-it@1.0.6 lint-watch: `eslint-watch --watch`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the list-it@1.0.6 lint-watch script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\????\AppData\Roaming\npm-cache\_logs\2020-02-06T21_11_23_927Z-debug.log
PS C:\Users\????\Git\list-it> npm run lint-watch

> list-it@1.0.6 lint-watch C:\Users\????\Git\list-it
> npx eslint-watch --watch

✓ Clean (6:13:00)

Windowsでやっていますが、Linuxでも呼び出せません。VS-CodeのBashからでも同じでした。

ところが、ターミナルから npx を使うと問題なく動きます。 本来 package.json ではあえて npx と書かなくても動くはずだがなにやってんだろ?

と、いくら調べても情報がなく埒が明かない。

はたと気が付き、妙な対策だと思いながら、npm scripts で npx を使うように書き直したら、あっさり動いた。

package.json:

  ・・・
  "scripts": {
    "lint": "eslint .",
    "lint-watch": "npx eslint-watch --watch",
    "mocha-watch": "mocha -- --watch",
    "test": "eslint . && mocha"
  },
  ・・・

何が悪さをしているのか一切不明。 本質的には解決していないのだけど、とりあえずOK。 しかし、こういうことがあるんだなあ。