package.json
"scripts": {
"sleep": "sleep 1",
npm run sleep
real 0m1.365s
user 0m0.238s
sys 0m0.066s
sleep 1
real 0m1.008s
user 0m0.001s
sys 0m0.004s
環境によりますが200msから300ms程度オーバーヘッドが増えます
開発者体験のほか、CI/CDにも影響が出てきます。塵も積もればコストとなります
気になる方は自分たちのscriptsで検証してみましょう
対策
npm scriptsを使わず、直接実行しましょう。
単純なコマンドならscriptsに記述したものを直接実行する。
npmでインストールしたパッケージをcliで使う場合、
./node_modules/.bin/各種パッケージ
で実行できます
もしくは./node_modules/.bin
にPATHを通しましょう
もちろん高速化と引き換えに運用管理面で手間が増えるのでトレードオフです
npm run
を実行する時点で大量にロードが発生することが原因です
技術的な詳細は以下のリンクを確認ください
https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-4/
対策にならない例
pnpm経由にする
検証したところnpmは経由しなくてもJSのcliツール関係のロードが多いことは変わらないので結局時間がかかる
DenoやBunは未検証です