この記事は、npmとyarnの依存関係ツリーを上書きするoverrides / resolutionsフィールドの使い方を共有するためのものです。
依存パッケージが以下のような状態だと、セキュリティ更新に追従するのが難しくなります。
そこで導入された機能がpackage.jsonのoverrides / resolutionsフィールドです。

overridesフィールドは、依存パッケージ内のバージョンを固定します。
以下の場合、依存パッケージ内のfooパッケージはすべて1.0.0に固定されます。
▼package.json
{
"overrides": {
"foo": "1.0.0"
}
}
特定のパッケージ内の依存パッケージのみを上書きすることもできます。
▼package.json
{
"overrides": {
"foo": {
".": "1.0.0",
"bar": "1.0.0"
}
}
}
特定の依存パッケージ内だけバージョンを固定する場合、overridesフィールドをネストします。この例の場合.は自分自身を指し、fooは1.0.0に固定されます。また、fooから参照されるbarも1.0.0に固定されます。
yarnの場合resolutionsフィールドで依存関係ツリーのバージョンを上書きします。

▼package.json
{
"resolutions": {
"d2/left-pad": "1.1.1",
"c/**/left-pad": "^1.1.2"
}
}
resolutionsフィールドとoverridesフィールドの違いは、特定の依存パッケージ内のバージョンの指定方法です。overridesフィールドはパッケージ情報を階層化しますが、resolutionsではキーをGlobで記述します。
なお、v2以降の公式ドキュメントはこちらです。v2以降のyarnをご利用中の方は、こちらもあわせてご確認ください。
以上、ありがとうございました。