テクノロジー · 実用ガイド

npm ERESOLVE?force の前に peer dependency contract を証明

lockfile と error graph を保存し、要求元の peer edge と version range を特定して、bypass なしの clean install で証明します。

ja npm ERESOLVE peer dependency graph diagram
オリジナル編集イラスト: find the requester, peer range and selected version. Watch at Ease

ERESOLVE は dependency graph の判定であり cache 破損の証明ではありません。selected version、requester、満たせない peer range を読み取ります。

manifests、lockfile、report を保存し、demanding edge を再構築して最小 contract を修正し、npm ci、tree、build、tests を終了条件にします。

tree 変更前に evidence を固定

package.json、lockfile、workspace manifests、.npmrc、Node/npm versions、ERESOLVE report、command を保存します。先に lockfile を消しません。

While resolving、Found、Could not resolve から project、selected version、requester、peer range を ledger に写します。

requester edge と range を証明

npm explain、npm ls、npm view peerDependencies --json で installed edge と registry contract を分けて記録します。

root range、peer range、selected version、overrides を比較します。intersection が空なら compatible release、空でなければ lockfile、workspace、links、npm version を調べます。

contract を直し error を隠さない

compatible release、coordinated upgrade、documented override の最小 diff を選び、manifest と lockfile を一緒に commit します。

legacy-peer-deps は peers を無視する isolated diagnostic に限ります。結果が変わっても compatibility proof ではなく、force はさらに広い bypass です。

real conflict と resolver を分離

同じ Node、npm、.npmrc、registry の temporary clone で再現します。npm ci は lockfile を書き換えないので failure も evidence です。

ranges が一致して一つの npm release だけ失敗するなら graph を縮小し adjacent versions と比較します。最初から bug と決めません。

再現可能な exit proof を要求

fresh checkout の npm ci が bypass なしで通り、tree、diff、build、tests が全て説明できて初めて完了です。

legacy policy を残すなら .npmrc に明示し ignored contract と integration tests を保存します。これは controlled exception です。

ja npm ERESOLVE repair validation diagram
オリジナル編集イラスト: repair the contract and prove a clean install. Watch at Ease