みなさん、JavaScriptのパッケージマネージャーは何を使っていますか?
私は以前は仕事でも個人開発でもyarnをメインで使っていたのですが、2022年5月に転職してから仕事ではnpmを使うようになりました。
それでも個人開発はわざわざnpmに移行するほどでもないと思っていたのでyarnを使い続けていました。
しかし、2022年にyarnがらみのエラーに数回遭遇し、2022年末についにyarnを卒業しました。
ちなみに個人開発ではyarn v1とv2+を使っていましたが、主にv2+で色々ハマりました。
dependabotが使えない
yarn v2+でZero-Installsを使っていたのでcacheもコミットしていたのですが、GitHubのdependabotがcacheを更新してくれないのでdependabotが使えなりました。
その時のツイート
エディターに特別な設定を入れないとタイプチェックなどがうまく動かない
VS Codeなどを使っていると、自動でタイプチェックやlintをしてくれるので便利ですよね。
ただし、yarn v2+の場合は特別な設定が必要になります。
私の設定の仕方が悪かっただけかもしれませんが、VS Codeで一度設定しても定期的にうまく動かなくなり、その都度再設定していたのでとても面倒でした。
TypeScriptのバージョンをあげたらnext buildが動かなくなった
ある日、TypeScriptのバージョンをあげたらnext buildが動かなくなりました。
TypeScriptやNext.jsを中心に調査していても全然原因がわからず、結局原因はyarnでした・・・
Jestも動かなくなった
next buildと同じタイミングでjestも動かなくなりました。
こちらも調査を進めると、原因はyarnでした・・・
commitやpushが重い
Zero Installだとcacheをコミットするのでパッケージが更新された時のcommitやpushに結構時間がかかります。
これが結構ストレスでした。
仕事ではnpmを使うようになったのでyarnのコマンドを忘れ始めた
仕事での開発量 > 個人開発量なので、仕事でnpmを使うようになったことでyarnの使用回数が減り、yarnではどうやるんだっけ?と考える時間が増えました。
npmに比べてインストールが手間
わずかな差ではあるのですが、npmはnodeをインストールすれば良いだけなのに対して、yarnはさらに一手間必要なのでインストールが面倒に感じるようになりました。
またTypeScriptをバージョンアップしたら動かなくなった
またTypeScriptをバージョンアップしたら動かなくなりました。
yarnの移行を本気で考えました。
Remove yarn
年末大掃除の時期、満を持してyarnからnpmへ移行しました。
その時のプルリクです。cacheも丸ごと削除しているのですごい差分になっています。
最後に
こうして私が頻繁に触るフロントエンドコードからはyarnが消えました。
yarn、今までありがとう!そして、さようなら!!!