起こったこと
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 をする。