🖥

npm / node.js – package.json の scripts ( npm run xxx ) の挙動が謎 - コマンド引数と

2024/02/26に公開

結論

scripts は「 npm run xxx 」 より後に指定したコマンド引数を受け取って、コマンド末尾で処理しているように見える

標準出力させる例 (1)

package.json に標準出力するだけの scripts を書いておく

{
  "scripts": {
    "echo": "echo"
  }
}

コマンド実行例

  • npm コマンド例 npm run echo ABC
  • scriptとして実行されるコマンド echo ABC

npm run echo に渡した引数 ( ABC ) を echo コマンドがそのまま受け取るようだ

標準出力する例 (2)

package.json を以下のようにして、コマンド実行を明示的に終わらせるとどうなるだろう
( コマンド末尾に ; を追加 )

{
  "scripts": {
    "echo": "echo;"
  }
}

引数を渡して実行する

npm run に渡した引数 ( ABC ) が次のコマンドとして評価され、実行されるようだ

  • npm コマンド例 npm run echo ABC
  • scriptとして実行されるコマンド echo; ABC

実行結果:

sh: ABC: command not found

引数にコマンドを渡してみる

  • npm コマンド例 npm run echo ls some_dir
  • scriptとして実行されるコマンド echo; ls some_dir

ls コマンドと引数 ( 対象ディレクトリ ) を渡して、 ls コマンドが実行できてしまった

フラグを渡してみる

  • npm コマンド例 npm run echo ls -la
  • scriptとして実行されるコマンド echo; ls

フラグは渡せないようだ

環境

  • node v20.11.0

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

プロフィール・経歴

https://github.com/YumaInaura/YumaInaura

公開日時

2024-02-19

Discussion