🔐

package-lock.jsonとyarn.lockが共存しているときの解決方法

2021/06/17に公開

'npx create-next-app'でnextjsのプロジェクトを作成すると
package-lock.jsonファイルが作成されてしまう。
その後、パッケージをyarnでインストールすると、yarn.lockが作成されてしまう。
package-lock.jsonとyarn.lockが共存

vercelにデプロイしようとするとwarningが出る。
vercelにデプロイしようとするとwarningが出る

意訳すると
「プロジェクトにyarn以外で生成されたlockファイル(package-lock.jsonのこと)が見つかった。
同期されていないlock fileによって引き起こされるバージョン[1]の不一致を避けるためにpackage managerは混ぜない方がいいよ。このwarningを消すには、package-lock.jsonを削除しよう。」

対処法

warningにも書かれている通りパッケージ管理ファイルは1つだけで十分なので、yarnでパッケージ管理する場合はpackage-lock.jsonは削除する。
これだけでいいが、もし1つのプロジェクトに対してnpmのあとにyarnを行っていると、
どのパッケージをyarnでダウンロードしているのかどうか判断できない。
そのときはいったん、node_modulesを削除し、再度必要なパッケージを
yarn addでインストールすればよい。(yarnを使い出したら、そのプロジェクトにはnpmコマンドは使ってはいけない)
nextjsのプロジェクト作るときにyarn使うかnpm使うか選ばせてほしい

参考

package-lock.jsonについて
npmについて
yarn.lockについて

脚注
  1. resolutionは決心、解決という意味ですがここでは「バージョン」と訳しました。 ↩︎

GitHubで編集を提案

Discussion