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