
先にまとめ
- 間に --を挟む- e.g. npm run lint -- --fix
 
- e.g. 
ESLint の例
例えばESLint は --fix で(可能な内容なら)自動で修正してくれます。
$ eslint src --fix
が、例えば npm run lint で ESLint が動くとして、これだと自動修正は動かないです。
$ npm run lint --fix
これは --fix が ESLint じゃなくて NPM の方の引数として認識されてしまうためです。
スクリプトの方に与える場合は -- を挟みます。
$ npm run lint -- --fix
これで OK 。
スクリプトの内容が複雑な場合
ls はディレクトリーの内容(ファイルとか)を一覧表示するコマンドです。
sl はジョークコマンドで、汽車が走るやつです。
&& で複数繋がっている場合
例えばこんなスクリプトだとどうなると思いますか。
[json]
  “scripts”: {
    “sl-ls”: “sl && ls”
  },
[/json]
$ npm run sl-ls -- -l
さあどれだ。
- 最初のコマンド slに-lがかかる
- 最後のコマンド lsに-lがかかる
- 両方のコマンド sl,lsに-lがかかる
ドキュメントにも特段乗っていないみたいなんだけど、試してみると最後のにのみかかります。
というかたぶん連結してるだけだよね。ターミナルの出力もそんな感じだし。
$ npm run slls -- -l > @ slls /path/to/project > sl && ls "-l" total 308 drwxrwxrwx 1 ginpei ginpei 4096 Nov 2 00:29 node_modules -rwxrwxrwx 1 ginpei ginpei 210 Nov 2 02:22 package.json -rwxrwxrwx 1 ginpei ginpei 314804 Nov 2 00:26 yarn.lock …
pre, post がある場合
さてこれはどうでしょう。
[json]
  “scripts”: {
    “prels”: “sl”,
    “ls”: “ls”,
    “postls”: “sl”
  },
[/json]
$ npm run ls -- -l
- prelsに- -lがかかる or かからない
- lsに- -lがかかる or かからない
- postlsに- -lがかかる or かからない
これはドキュメントに掲載されています。
The arguments will only be passed to the script specified after npm run and not to any pre or post script.
引数は npm run の後ろに指定されたスクリプトにのみ渡され、pre や post のスクリプトには渡されません。
 
          