package.jsonでnpm runさせるときに記載するパスについて

package.json 中に scripts を定義してその下に実行させたいスクリプトを指定するとnpm run で実行できる。

例えば、

{
  "name": "foobar",
(snip)
  "scripts": {
    "lint": "eslint lib/*.js bin/*",
    "test": "npm run lint && mocha --require ./test/helper.js"
  },

....

といった内容があると仮定すると npm run lint を実行することで記載したeslintを実行できる様になる。

で、このときにeslintなどを呼び出すときにグローバルにインストールしていなくてnode_modules以下にある場合のケースを想定して

    "lint": "./node_modules/.bin/eslint lib/*.js bin/*",

など書いていたりしたことがあったのだけれども、npm run される際にはnode_modules以下も自動的にパスが通された状態になるので明記しなくても大丈夫ですよ。

ということに今日気づいたというメモエントリーでした。