Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

npm ERESOLVE? force 전에 peer dependency contract를 증명하세요

lockfile과 error graph를 보존하고 requester peer edge와 version range를 찾아 bypass 없는 clean install로 검증합니다.

ko 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를 고치고 오류를 숨기지 않기

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와 비교합니다. 먼저 resolver bug라고 단정하지 않습니다.

재현 가능한 exit proof 요구

fresh checkout에서 bypass 없이 npm ci가 통과하고 tree, diff, build, tests가 모두 설명되어야 완료입니다.

legacy policy를 유지하면 .npmrc에 명시하고 ignored contract와 integration tests를 기록합니다. 이는 controlled exception입니다.

ko npm ERESOLVE repair validation diagram
오리지널 편집 일러스트: repair the contract and prove a clean install. Watch at Ease