yarnをCI上で実行する場合、yarn
とするよりも--frozen-lockfile
を利用した方が安全です。
こうすると、yarn.lock
を生成せず、更新がある場合に落ちる挙動をします。これによりCIと結果が異なることということが避けられます。
$ yarn --frozen-lockfile
似たようなオプションで--pure-lockfile
がありますが、こちらはlockファイルを生成しないだけです。
また、--ignore-optional
を使ってローカルでしか使わないライブラリ(アプリとビルドとテストに不要なライブラリ)を除外してインストールするのも便利です。
$ yarn --frozen-lockfile --ignore-optional
enginesの指定
CIでyarnの最新をダウンロードするようにしておくと、いつの間にかyarnのバージョン更新されていることがあります。(ローカルとCIのバージョンがずれる)
これは嬉しくないので、package.json
のengines
を指定してチームで同じバージョン以上を使うようにしておくとよさそうです。
{
"engines": {
"node": ">=10",
"yarn": "^1.10.0"
}
}
またすぐv1.12
がきそうな気もするので固定するyarn
のバージョンについては議論がありそうです。