LoginSignup
1
1

More than 5 years have passed since last update.

「yarn upgrade パッケージ」で引っかかったこと

Posted at

現代的なプログラミングには欠かせないパッケージマネージャーですが、Bundlerと同じ感覚でyarnを使ったところ、ハマる例が出てしまいました。

失敗談

Bundlerで一気にアップデートしたら、必要ないパッケージまで上がってしまって困った、ということがあったので、yarnでも同様にyarn upgrade some-packageのようにして、1つのパッケージだけバージョンを上げようとしました。

ところが、それを行ったあとにバンドル後のJavaScriptを見れば、一気に容量が膨れ上がっていました。確認してみると、内部で使っているパッケージの違うバージョン2つが取り込まれてしまっていたのでした。

事態の問題点

同じパッケージが複数入ってしまうと、当然容量は増えますし、それ以外にもルーターなど状態を持つパッケージが複数入ってしまうと、「ルーターA」と「ルーターB」で別の状態を持つ、なんてことになってしまって、正常動作しなくなります。

傾向と対策

Bundlerでは「同じパッケージは1つしか入れられない」のですが、Node.js環境ではパッケージをグローバルにさらさず、requireimportでローカルな名前をつける形となるので、同じパッケージを複数インストールすることも可能なのです。これが逆に仇となったわけです。

そして、一部だけupgradeすると、指定したパッケージの依存パッケージまでまとめてupgradeされるので、upgradeしないパッケージとの間でバージョン差が出てしまいます。yarnについては、「基本yarn upgradeで更新して、特定バージョンがまずい場合にはpackage.jsonに明記する」という形にしたほうがいいかも知れません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1