はじめに
node.jsとは
Node.js はスケーラブルなネットワークアプリケーションを構築するために設計された非同期型のイベント駆動の JavaScript 環境です。 以下の「Hello World」の例では、たくさんの接続を同時に処理することができます。 各接続ごとにコールバックは発火され、何もすることがない場合、Node.js はスリープします。
node.js公式サイトより
npmとは
npmとはパッケージ管理システムの1種。Node Package Managerの意[3]。
ライセンスはArtistic License 2.0。Node.jsのパッケージ管理システムであり、V8 JavaScriptエンジンで動作する[4]。npm自身もJavaScriptで記述されている[5]。
wikipediaより
— (ダブルダッシュ)とは
node.jsというよりlinuxの話ですが、コマンドフラグの終わりを表すようです。
https://qastack.jp/unix/11376/what-does-double-dash-mean-also-known-as-bare-double-dash
環境
~/Sites/kandan-app$ node -v v12.10.0 ~/Sites/kandan-app$ npm -v 6.13.1
結論
急いでいる方用。要は、npmだけなのか不明ですが、引数にダブルダッシュ「–」を先頭に付与しないと–付きの引数を渡すことができないようです。公式サイトに掲載されています。
例
動きを確認したい方は以下で確認できます。
test.js
引数が渡ることだけ確認したいのでconsole.logします。
console.log(process.argv);
package.json ※一部抜粋
npmのコマンドとして設定します。
"scripts": { "testhoge" : "node test.js" }
nodeコマンドで実行する場合
半角スペースを空けることで普通のシェルスクリプト同様に引数を連続で受け取ることが可能です。
torikky@DESKTOP-FVRO68I:~/Sites/kandan-app$ node test.js --test=test [ '/mnt/c/developments/.nodebrew/node/v12.10.0/bin/node', '/mnt/c/developments/Sites/kandan-app/test.js', '--test=test' ] torikky@DESKTOP-FVRO68I:~/Sites/kandan-app$ node test.js -- --test=test [ '/mnt/c/developments/.nodebrew/node/v12.10.0/bin/node', '/mnt/c/developments/Sites/kandan-app/test.js', '--', '--test=test' ]
npmコマンドで実行する場合
package.jsonに登録したコマンドを使用してnode.jsスクリプトを実行する場合は一筋縄ではいきません。
torikky@DESKTOP-FVRO68I:~/Sites/kandan-app$ npm run testhoge > kandan-app@1.0.0 testhoge /mnt/c/developments/Sites/kandan-app> node test.js [ '/mnt/c/developments/.nodebrew/node/v12.10.0/bin/node', '/mnt/c/developments/Sites/kandan-app/test.js' ] torikky@DESKTOP-FVRO68I:~/Sites/kandan-app$ npm run testhoge --test=test > kandan-app@1.0.0 testhoge /mnt/c/developments/Sites/kandan-app > node test.js [ '/mnt/c/developments/.nodebrew/node/v12.10.0/bin/node', '/mnt/c/developments/Sites/kandan-app/test.js' ]
なので、ダブルダッシュ(–)を付与します。
torikky@DESKTOP-FVRO68I:~/Sites/kandan-app$ npm run testhoge -- --test=test > kandan-app@1.0.0 testhoge /mnt/c/developments/Sites/kandan-app > node test.js "--test=test" [ '/mnt/c/developments/.nodebrew/node/v12.10.0/bin/node', '/mnt/c/developments/Sites/kandan-app/test.js', '--test=test' ] torikky@DESKTOP-FVRO68I:~/Sites/kandan-app$ npm run testhoge -- --test=test --test2=test2 > kandan-app@1.0.0 testhoge /mnt/c/developments/Sites/kandan-app > node test.js "--test=test" "--test2=test2" [ '/mnt/c/developments/.nodebrew/node/v12.10.0/bin/node', '/mnt/c/developments/Sites/kandan-app/test.js', '--test=test', '--test2=test2' ]
これで、引数を正常に渡すことができました。
最後に
node.jsでダブルダッシュの引数渡せないなと思ったらこの記事また読んでください。