https://github.blog/2021-02-02-npm-7-is-now-generally-available/#changes-to-the-lockfile [[npm]] CLIのメジャーバージョン7系。 ## 破壊的変更 [[npm7]]には要注意の破壊的変更がある。 ### lockfileのv2対応 lockfile ([[package-lock.json]])のフォーマットバージョンがv2になった。 そのため、==v1しか解釈しない[[npm7]]より前のバージョンではインストールできない==。[[npm7]]より前のバージョンと共存させたい場合は、インストールに`--no-save`オプションを付ける。[[npm7]]のCLIでv1のlockfileを作成できる。 ### [[peer dependencies]]の自動インストール [[peer dependencies]]が自動的にインストールされるようになった。 以前は明示的にインストールする必要があったが、今後はその必要がなくなる。その結果、==バージョンが競合した場合はエラーが出る==ようになった。以前は警告だった。 バージョンが競合した場合は、以下いずれかの回避策を選ぶことになる。 - `--force`オプションをつけて強制的にインストールする - `--legacy-peer-deps`オプションをつけて[[peer dependencies]]をインストールしない - [[npm7]]より前と同じ挙動 また、[[peer dependencies]]解決のデフォルト挙動は、ルートプロジェクトが直接依存するもののみを対象にしている。深い階層まで完璧に競合を起こさないようにすることは非現実的だからだ。もしそれを望むなら`--strict-peer-deps`フラグを指定してインストールする。