Yarnを使ったプロジェクトでよく使うメンテナンス系コマンドまとめ

Yarnで管理されたプロジェクトを保守するのによく使うコマンドまとめです。

脆弱性のあるパッケージの検出

脆弱性のあるパッケージを使っていないか調べる時はyarn auditを使うと簡単にチェックできます。
依存で巻き込まれてインストールされたパッケージも含めて脆弱性のあるバージョンのパッケージが無いかチェックできます。

$ yarn audit
yarn audit v1.15.2
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ high          │ Cross-Site Scripting                                         │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ @nuxt/devalue                                                │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=1.2.3                                                      │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ nuxt                                                         │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ nuxt > @nuxt/builder > @nuxt/devalue                         │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://www.npmjs.com/advisories/814                         │
└───────────────┴──────────────────────────────────────────────────────────────┘
〜 中略 〜
11 vulnerabilities found - Packages audited: 20850
Severity: 1 Moderate | 10 High
✨  Done in 2.12s.

指定したパッケージとその依存パッケージを更新する

yarn auditで検出されたパッケージを更新するにはyarn upgradeで更新します。
パッケージを指定しなければ全部更新してくれます。
package.jsonで指定されたバージョンの範囲で更新され、package.jsonは変更されません。

$ yarn upgrade [pkg-name]

バージョンを指定してパッケージを更新する

パッケージ名の後ろに@とバージョンを指定するとpackage.jsonを無視して更新されます。
package.jsonに指定されたバージョンも更新されます。

$ yarn upgrade left-pad@^1.0.0

とにかく最新バージョンに更新する

--latestオプションを指定するとpackage.jsonを無視して最新バージョンに更新されます。
package.jsonも更新されます。

$ yarn upgrade [pkg-name] --latest

対話型の画面で確認しながら更新する

yarn upgrade-interactiveを使うとビフォーアフターのバージョンを確認しながら更新できます。

$ yarn upgrade-interactive
yarn upgrade-interactive v1.15.2
info Color legend :
 "<red>"    : Major Update backward-incompatible updates
 "<yellow>" : Minor Update backward-compatible features
 "<green>"  : Patch Update backward-compatible bug fixes
? Choose which packages to update. (Press <space> to select, <a> to toggle all, <i> to invert selection)
 dependencies
   name       range    from       to      url
❯◯ leaflet    ^1.3.1   1.3.1   ❯  1.4.0   https://github.com/Leaflet/Leaflet#readme
 ◯ react      ^16.3.2  16.3.2  ❯  16.8.6  https://reactjs.org/
 ◯ react-dom  ^16.3.2  16.3.2  ❯  16.8.6  https://reactjs.org/

↑だと分かりませんがバージョンの上がりっぷりに応じて色がついています。
で移動してスペースキーで選択します。

デフォルトだとpackage.jsonで指定されたバージョンの範囲で更新しようとしますが、--latestオプションを指定するとpackage.jsonを無視して最新バージョンに更新しようとします。

$ yarn upgrade-interactive --latest
yarn upgrade-interactive v1.15.2
info Color legend :
 "<red>"    : Major Update backward-incompatible updates
 "<yellow>" : Minor Update backward-compatible features
 "<green>"  : Patch Update backward-compatible bug fixes
? Choose which packages to update. (Press <space> to select, <a> to toggle all, <i> to invert selection)
 dependencies
   name           range   from       to      url
❯◯ leaflet        latest  1.3.1   ❯  1.4.0   https://github.com/Leaflet/Leaflet#readme
 ◯ react          latest  16.3.2  ❯  16.8.6  https://reactjs.org/
 ◯ react-dom      latest  16.3.2  ❯  16.8.6  https://reactjs.org/
 ◯ react-leaflet  latest  1.9.1   ❯  2.2.1   https://github.com/PaulLeCam/react-leaflet
 ◯ react-scripts  latest  1.1.4   ❯  2.1.8   https://github.com/facebook/create-react-app#readme

参考リンク