DEV Community

Yuta Goto
Yuta Goto

Posted on

yarn berryで依存パッケージのバージョンを指定する

使用しているパッケージの依存パッケージのバージョンを指定するのに、npmを使用している場合は npm-force-resolutionsを使うと固定できますが、 yarn berry (yarn v2, v3) を使用する場合はyarn単体で指定することができます。

npm-force-resolutions - npm

This packages modifies package-lock.json to force the installation of specific version of a transitive dependency (dependency of dependency), similar to yarn's [selective dependency resolutions](https://yarnpkg.com/lang/en/docs/selective-version-resolutio. Latest version: 0.0.10, last published: a year ago. Start using npm-force-resolutions in your project by running `npm i npm-force-resolutions`. There are 28 other projects in the npm registry using npm-force-resolutions.

favicon npmjs.com

ユースケースとしては、依存パッケージに脆弱性があったときに元のパッケージの対応を待たなくともひとまず依存パッケージのバージョンを上げる(下げる)ことができるといった具合です。(もちろん元のパッケージが即座に対応してくれればそれでよいですが。)

環境

  • npm: 8.1.2
  • yarn: 3.2.0
  • node: v16.13.2

指定方法

$ yarn set resolution <descriptor> <resolution>
Enter fullscreen mode Exit fullscreen mode

のコマンドを実行します。

たとえば、 minimist のバージョンを ^1.2.0 から ^1.2.6 に上げるときは以下のようになります。

$ yarn set resolution minimist@npm:^1.2.0 ^1.2.6
Enter fullscreen mode Exit fullscreen mode

実行すると yarn.lock でそのパッケージのバージョンが更新されていたり、 .yarn/cache のパッケージのZIPファイルが更新されてたりします。

注意

強制的にバージョン指定したため元のパッケージが意図しない動作になることがあります。

参考

Top comments (0)