dependencies、devDependencies、peerDependencies、optionalDependenciesあたりの違い
dependencies
本番環境(製品)に同梱する依存パッケージ
devDependencies
テストやカバレッジなど開発中にのみ使うパッケージ
本番には含めなくていいので、ここで指定することで切り離せる
optionalDependencies
(yarnではちょっと名前違ってた気がする)
dependenciesと同じだが、ここで指定したパッケージはインストール失敗してもエラーにならない
peerDependencies
たとえばこのツールXはreact 1.3上でしか動作しないんだってときに、「peerはreact1.3」みたいな指定をする
そうすれば、Xをインストールするときにreact1.3をインストールさせることができる
ペアというか一心同体的なsta.icon
overrides
(yarnではresolutions)
たとえばここで react 1.4 と書くと、dependencies側に1.2とか1.6とかかいてあっても、インストールされるのは1.4になる
主な用途としては「脆弱性が出たから特定バージョンを禁止したい」とか。つまり、その特定バージョンが含まれない範囲をoverrridesで指定する
で、packege.jsonの読者としても、overrides欄を見れば「あ、これなんかやばいやつだな。脆弱性とかかな」ってわかる