npm run とかで使うハイフン2つ「--」の意味

npm-run-scripts を使っていると、npm run something コマンドにオプション引数を渡したくて、$ npm run something -- --include=hoge みたいに書いたりする。

他にも、ハイフンから始まるファイルを指定するときに、$ rm -- -some.txt などと書いたりする。

このハイフン2つ -- って何? というのを調べてみた。

どうやらコレは Double Dash ダブル・ダッシュと呼ばれており、UNIX におけるコマンドフラグの終わりを示す記号とのこと。オプションのスキャンを強制的に終了させる記号のようだ。

ついでに、こんなのも見つけた。

A single hyphen can be followed by multiple single-character flags. A double hyphen prefixes a single, multicharacter option.

ハイフン1つ (シングル・ダッシュ) の場合、1文字で示すオプションが多く、それらをまとめて記述できる。例えば $ tar -czf などは、czf という3つのオプションをまとめて渡せる。

コレに対し、ハイフン2つ (ダブル・ダッシュ) の場合はほぼ必ず文字列で示すオプションになる。$ tar --exclude のように、だ。

npm-scripts の場合は、npm run --help のように npm run コマンドへのオプション指定なのか、npm run 以降に示した npm-scripts へのオプション指定なのかの区別が付かないので、このダブル・ダッシュが必要なようだ。