Closed10

yarn v1 を利用している既存プロジェクトに corepack を設定する

snakasnaka

以下の記事に触発されたというのもあるが、今まで yarn v1 使っているプロジェクトあり、今後別のパッケージマネージャに移行することも考えて、まずは corepack を入れておくことにした。

https://zenn.dev/monicle/articles/1c06f3f75b2cb1

snakasnaka

プロジェクトで利用するパッケージマネージャを package.json に刻み込む

corepack use yarn@1.22.21

で package.json の packageManager プロパティにバージョン及びハッシュ値が記載される

snakasnaka

結果は以下のとおり

package.json
--- a/package.json
+++ b/package.json
@@ -59,5 +59,6 @@
   "dependencies": {},
   "resolutions": {
     "webpack": "5.89.0"
-  }
+  },
+  "packageManager": "yarn@1.22.21+sha256.dbed5b7e10c552ba0e1a545c948d5473bc6c5a28ce22a8fd27e493e3e5eb6370"
 }
snakasnaka

Dockerfile の修正

frontend コンテナの Dockerfile の中で yarn install の前に corepack enable を追加した。

Dockerfile
 # corepack を有効化しておく
+RUN corepack enable
 RUN yarn install --frozen-lockfile
snakasnaka

利用する側にお願いすること

global にインストールされている yarn をアンインストールしてもらう

npm uninstall -g yarn

corepack を有効にしてもらう

corepack enable

以上

snakasnaka

その他調整が必要だった点

画像最適化で本番環境向けに Dockerfile で sharp のインストールを行っているが、その際、OSやCPUアーキテクチャを指定する必要があった。

プロジェクト都合で Yarn v1 を使い続けている都合で、 yarn コマンドでの sharp インストールができず ( インストールできても動作時にエラーが出る状態 ) sharp のインストールのみ npm を利用していた。

corepack でプロジェクトで利用するパッケージマネージャを yarn に制限してしまうと、 docker build で sharp のインストールが失敗する問題が発生した。

snakasnaka

対応

sharp のインストールを corepack enable の前に持ってくるようにした。

Dockerfile
+RUN npm install --global --os=linux --cpu=x64 sharp

 # corepack を有効化しておく
 RUN corepack enable
 RUN yarn install --frozen-lockfile
-RUN npm install --global --os=linux --cpu=x64 sharp
このスクラップは3ヶ月前にクローズされました