起こったこと
Vue.js のプロジェクトに Storybook を導入していて、そのために vue-cli-plugin-storybook
をインストールしていた (詳細を書くが、以降の本筋に具体的な npm パッケージ名は関係ない)。
それをインストールした当時は Storybook 5.1 が最新としてインストールされ、yarn.lock
ファイルにもそれが記録された。
その後、Storybook 5.2 がリリースされたので利用しようと yarn upgrade-interactive
コマンドでアップグレード作業を実施したが、vue-cli-plugin-storybook
が依存する @storybook/vue
は 5.1 のままで、アップグレードできなかった。yarn upgrade
, yarn outdated
などのコマンドも同様。
原因
Yarn の設計によるもの (参考: Upgrading sub-dependencies (upgrade --deep
) · Issue #2394 · yarnpkg/yarn · GitHub)。
yarn upgrade
は package.json に書かれた依存のみ更新し、依存の依存などは更新しない。
対策
バージョンをコントロールしたい、つまり直接依存するものは package.json に書くようにする。
または yarn upgrade --deep
を利用する。--deep
オプションはドキュメントに書かれていないようだし、yarn upgrade-interactive
や yarn outdated
で使えなかったので非公式かもしれない。
個別ではなく yarn.lock 全体がアップグレードされるような挙動をしていた。正直あまりよくわかっていない。
または yarn remove
から yarn add
をする。