yarn.lockに複数のバージョンが存在する問題の回避方法
社内にあったプルリクエストを見て参考になったのでここに備忘録を書く。
問題
- TypeScritptを使用しているプロジェクトで、すでにReactがインストールされている
Reactのバージョンアップを実行
yarn add react@latest -S yarn add react-dom@latest -S
バージョンアップは問題なく実行できるが、tsc
実行時に大量のエラーが発生するようになった。
Argument of type 'ComponentClass<Props, any>' is not assignable to parameter of type '"tspan"'.
原因
yarn.lock
の差分を見ると、@types/react@*
と@types/react@^16.7.6
という2つのセクションに分かれていた。
解決
yarnでは、"resolutions"
でバージョンを固定することで、yarn install
時に自動的にバージョンを統一できる。
package.json
の"resolutions"
にバージョンを指定することで固定させる。
"resolutions": {
"@types/react": "16.7.6",
"@types/react-dom": "16.0.9"
},
この状態でnode_modules
を一度削除し、yarn install
し直すと、インストールされた@types/react
が混在しなくなり、エラーは発生しないようになった。