tohokuaikiのチラシの裏

技術的ネタとか。

npmとcomposerのauditとアップデートについて

きっと忘れるのでメモ

Composer

脆弱性を見つける

composer audit

パッケージを指定してアップデート

composer update  league/commonmark

パッケージを指定しないとマイナーバージョンアップを一括で行う。

composer update 

開発環境でアップデートしたcompose.lockを本番環境にもってきて展開する。

composer install --no-dev --optimize-autoloader

本番環境用に「すべてのクラスを classmap に詰め込み、PSR-4 や PSR-0 の探索をスキップ」することで高速化するらしい。

composer install --no-dev --optimize-autoloader --classmap-authoritative

メジャーバージョンアップデートの場合はパッケージ名とバージョン名も付けてrequireする。

composer require monolog/monolog:^2.0

バージョンは、^だとメジャーバージョン固定でマイナーバージョンをアップデートしていく。
~だとマイナーバージョン固定でメンテナンスバージョンをアップデートしてく。

npm

脆弱性を見つける

npm audit

devDependencyは無視して脆弱性を見つける。

npm audit --omit=dev

脆弱性を見つけたものに対してアップデートする。ただし、メジャーバージョンアップがかかるものはしない。

npm audit fix

破壊的アップデートができるが、パッケージのメジャーバージョンアップどころか、メジャーバージョンダウンまでしてしまうからおススメできない。

npm audit fix --force

パッケージ(foo-package)を指定してアップデート。ただし、メジャーバージョンアップデートは行わない。audit fixとの違いは、audit fixは脆弱性がなければアップデートしないこと。
また、foo-packageが依存しているサブパッケージに更新があってもアップデートはしない。ただし、foo-packageをアップデートしたことで必要とするサブパッケージのバージョンが上がったのであればそのバージョンを満たすようにアップデートする。

npm update foo-package

メジャーバージョンアップデートも含めて最新版にするには、installコマンドでバージョン指定をする

npm install package@latest

あるいは、package.jsonを書き換えてupdateする。