npm ciに相当するyarnコマンド(yarn.lockからパッケージインストール)

この記事では『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.jsonpackage.jsonの間に不一致がある場合にはエラーになる。
  • npm ciコマンドを実行してもpackage-lock.jsonpackage.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.lockpackage.jsonが更新されることはありません。また、yarn.lockが存在しない場合やyarn.lockpackage.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に相当するコマンド

お読み頂きありがとうございました。