この記事では『npm ciに相当するyarnコマンド』について、
- Yarnのバージョンが2未満(Yarn 1.x)の場合の
npm ci
に相当するコマンド - Yarnのバージョンが2以上(Yarn 2.x)の場合の
npm ci
に相当するコマンド
などを分かりやすく説明するように心掛けています。ご参考になれば幸いです。
npm ciに相当するyarnコマンド
npm ci
コマンドが行っている内容を箇条書きで以下に示します。
npm ciコマンドの動き
package-lock.json
に記述された通りに正確にバージョンや依存関係をインストールする。node_modules
ディレクトリが存在する場合には、npm ci
コマンドの実行前に自動的に削除される。package-lock.json
をチェックする。package-lock.json
が存在しない場合にはエラーになる。package-lock.json
とpackage.json
の間に不一致がある場合にはエラーになる。
npm ci
コマンドを実行してもpackage-lock.json
やpackage.json
は更新しない。
yarn
コマンドにはnpm ci
に相当する直接的なコマンドはありませんが、npm ci
に相当するコマンドがあります。
Yarnのバージョンが2未満(Yarn 1.x)の場合には、以下のコマンドがnpm ci
に相当するコマンドです。
rm -rf node_modules && yarn install --frozen-lockfile
node_modules
ディレクトリの削除(rm -rf node_modules
)とyarn install --frozen-lockfile
を一緒に実行することで、npm ci
とほぼ同様の動作を実現しています。以下に上記のコマンドの詳細を示しています。
上記のコマンドの詳細
--frozen-lockfile
オプション- このオプションを指定すると、
yarn.lock
に記述された通りに正確にバージョンや依存関係をインストールします。その際、yarn.lock
やpackage.json
が更新されることはありません。また、yarn.lock
が存在しない場合やyarn.lock
とpackage.json
の間に不一致がある場合にはエラーになります。
- このオプションを指定すると、
rm
- 「remove」の略であり、ファイルやディレクトリの削除を意味する。
-r
オプション(または--recursive
オプション)- このオプションを指定すると、指定されたディレクトリとその中の全てのファイルやサブディレクトリを再帰的に削除します。つまり、指定したディレクトリ内の全ての内容を削除することができます。
-f
オプション(または--force
オプション)- このオプションを指定すると、存在するファイルやディレクトリの削除時に確認を求められることなく、強制的に削除を実行します。
- 存在しないファイルに対するエラーメッセージも表示されなくなる。
補足
yarn install --frozen-lockfile --production
のように--production
を付けると、開発用依存関係(devDependencies
に記載されているパッケージ)をインストールせずに、本番環境用の依存関係のみをインストールすることができます。
Yarnのバージョンが2以上(Yarn 2.x)の場合には、以下のコマンドがnpm ci
に相当するコマンドです。
yarn install --immutable --immutable-cache --check-cache
Yarnのバージョンが2以上(Yarn 2.x)の場合には、yarn install
コマンドの振る舞いが変更され、デフォルトで--frozen-lockfile
が適用されるようになっています。上記のコマンドにおいて、--immutable --immutable-cache --check-cache
を付けることで、依存関係のインストールをより厳格に管理しています。
補足
yarn install --immutable --immutable-cache --check-cache --mode production
を実行すると、開発用依存関係(devDependencies
に記載されているパッケージ)をインストールせずに、本番環境用の依存関係のみをインストールすることができます。
Yarnのバージョンが2以上(Yarn 2.x)の場合には、--production
フラグの代わりに--mode
オプションを使用して実行モードを指定しま。
本記事のまとめ
この記事では『npm ciに相当するyarnコマンド』について、以下の内容を説明しました。
- Yarnのバージョンが2未満(Yarn 1.x)の場合の
npm ci
に相当するコマンド - Yarnのバージョンが2以上(Yarn 2.x)の場合の
npm ci
に相当するコマンド
お読み頂きありがとうございました。