
先にまとめ
- 間に
--を挟む- 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 のスクリプトには渡されません。