Closed10
yarn v1 を利用している既存プロジェクトに corepack を設定する
以下の記事に触発されたというのもあるが、今まで yarn v1 使っているプロジェクトあり、今後別のパッケージマネージャに移行することも考えて、まずは corepack を入れておくことにした。
プロジェクトで利用するパッケージマネージャを package.json に刻み込む
corepack use yarn@1.22.21
で package.json の packageManager
プロパティにバージョン及びハッシュ値が記載される
現在 yarn v1 の最新は 1.22.21
結果は以下のとおり
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"
}
Dockerfile の修正
frontend コンテナの Dockerfile の中で yarn install
の前に corepack enable
を追加した。
Dockerfile
# corepack を有効化しておく
+RUN corepack enable
RUN yarn install --frozen-lockfile
利用する側にお願いすること
global にインストールされている yarn をアンインストールしてもらう
npm uninstall -g yarn
corepack を有効にしてもらう
corepack enable
以上
その他調整が必要だった点
画像最適化で本番環境向けに Dockerfile で sharp のインストールを行っているが、その際、OSやCPUアーキテクチャを指定する必要があった。
プロジェクト都合で Yarn v1 を使い続けている都合で、 yarn コマンドでの sharp インストールができず ( インストールできても動作時にエラーが出る状態 ) sharp のインストールのみ npm を利用していた。
corepack でプロジェクトで利用するパッケージマネージャを yarn に制限してしまうと、 docker build
で sharp のインストールが失敗する問題が発生した。
対応
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ヶ月前にクローズされました