Corepack
https://gyazo.com/6a20b6ef70f0e7776986fe02638cb045
package manager manager
node.jsを入れるだけで、npm, yarn, pnpmの内必要なものが自動的に入る
別途yarn等を入れる必要がない
package managerのversionをprojectごとに指定できる
experimentalだが、入っている
消えるかも知れないらしい
あまりちゃんと読んでないmrsekut.icon
使用する
$ corepack enable
corepackの有効化
corepack自体はnode.jsに同梱されているので別途installする必要はない
e.g.
$ corepack use yarn@3
これで、$ yarnを実行すれば、このversionのyarnを使ってinstlalできる
$ yarn -vで確認すれば良い
コマンド実行時に、globalにyarnが入っていなくても大丈夫
この状態で$ npm iを実行してもerrorになるため、間違いが起きない
ただし、npmはdafaultでサポートされていない
だから、"packageManager": "npm@7.0.0"と書いても無視されて、globalに入っているnpmが使われる
どうすればよいか?
事前に1度$ corepack enable npmを実行する必要がある
これは、projectごとではなく、globalで1度実行しておけば良い
うまく読み込まれないとき
mrsekut.iconの環境では
$ which npmで場所を確認し、nixで入ってないものを見ていたらおかしい
/usr/local/bin/npmを消したら動いた
corepackが必要になった背景
npmは、node.jsに同梱されているので、versionの追随が容易
しかし、yarnやpnpmなどの他のpackage managerは、node.jsに同梱されていない
そのため、node.jsのversionに追随させるためには、
node.jsのversionを上げて、
yarnのversionを上げて、
というのをやらないといけなくて面倒
npmだけ特別扱いされていることになる
「npmよりyarnが優れている点もあるので、yarnを採用したい」という場合もあるが、このversionの追随の観点において手間なので不採用、といった話がある
そこで、Node.jsにyarnもbundleするか?のような話が上がって、ゴニョゴニョした結果、corepackをNode.jsに追加することになった
corepackがあれば、Node.jsを使うと自動的に、yarnやpanpmを使えるようになる
別途yarnなどをinstallする必要がない
Corepackを使うとnpmとNode.jsのversionの対応を意識しなくて済むらしい
https://gyazo.com/a84481111d15ada29297b2ffc0ec866b https://efcl.info/2023/04/29/node.js-14-to-18/#:~:text=Corepack%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6npm%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B
どういう仕組み?って気はするけどすごい便利だmrsekut.icon
参考
node.jsのversionの固定とかはやらないの?
あくまでも、npm(yarn, pnpm)だけってことか
https://youtu.be/JWmMS9MO0WM?t=2283