NodejsDocker

依存関係解決を早くしたい

npm ci を使う

CI/CDでnpm ciする際は ~/.npm をキャッシュしよう | DevelopersIO npm ciを使おう あるいはより速く - Qiita

  • package-lock.json のみを見て依存関係解決する(npm installpackage.json も見る)
  • npm ci では node_modules は実行の都度洗い替えされる

更に npm ci --production とすると devDependency のインストールが行われなくなる。 --production--only=production はnpm v8ではdeprecatedで、 --omit=dev を使う。

パッケージをキャッシュしてビルドを早くしたい

npm ci を使うと、デフォルトでは ~/.npm にキャッシュが作られる。 CIサーバー上などで ~/.npm にアクセスできない場合はcacheのpathを変更する。

  • --cache <path> オプションをつける
  • npm config set cache <path> でグローバルに設定する

node.js - Is there a way to speedup npm ci using cache? - Stack Overflow https://docs.npmjs.com/cli/v8/commands/npm-cache

キャッシュを使うには、 --prefer-offline をつける(キャッシュにない場合は取得される) https://docs.npmjs.com/cli/v8/using-npm/config#prefer-offline

結論

こちらのコマンドでインストールすると次回以降もキャッシュが効くようになる

npm ci --omit=dev --prefer-offline --cache /path/to/npm_cache/