@apps-in-toss/web-framework(1.2.1) 설치 시 esbuild 바이너리 버전 불일치로 설치 실패

환경

  • OS: macOS Sequoia 15.7.2
  • Node: v20.11.0
  • pnpm: 9.0.0 (monorepo)

하고자 했던 것

  • @apps-in-toss/web-framework: ^0.0.35 → @apps-in-toss/web-framework: 1.2.1

재현 방법

pnpm install @apps-in-toss/web-framework@latest -w

실제 에러 로그 요약

.../esbuild@0.25.8/node_modules/esbuild/install.js:136
throw new Error(`Expected ${JSON.stringify(versionFromPackageJSON)} but got ${JSON.stringify(stdout)}`);
Error: Expected "0.25.8" but got "0.25.11"
Node.js v20.11.0

관찰한 의존 관계

  • pnpm why esbuild 결과 요지:
    • @apps-in-toss/web-framework@0.0.35@apps-in-toss/plugins@0.0.35esbuild@0.25.5
    • 별도의 dev 도구들이 esbuild@0.25.11 사용
  • 결과적으로 서로 다른 esbuild 버전(로그 상 0.25.8도 포함)이 섞여 postinstall 검증에서 충돌

질문/요청

  1. @apps-in-toss/web-framework(혹은 @apps-in-toss/plugins)에서 요구하는 공식적인 esbuild 버전 범위를 알려주실 수 있을까요?
  2. 현재처럼 서로 다른 esbuild가 섞이는 환경에서 권장하는 해결 방법이 있을까요?
    • 예: 루트 overrides로 단일화, 특정 버전으로 고정, 또는 환경변수 설정 등
  3. 가능하다면 다음 방향 중 어느 것이 맞을지 조언 부탁드립니다.
    • 패키지 측에서 esbuild 요구 버전을 >=0.25.11로 상향 또는 범위 완화
    • postinstall 단계의 “정확 일치” 검증 완화(동일 minor/patch 허용)
    • peerDependencies로 전환해 워크스페이스 단일화를 유도
  4. 단기 대응으로는 루트 pnpm.overrides로 esbuild를 단일화하려는데, 권장하는 방법이 있을까요?

안녕하세요 :slight_smile:
현재 peer esbuild는 0.25.11 버전이 맞아요.
버전 업그레이드는 pnpm ait migrate granite 로 진행하신걸까요 ? 자체적으로 사용하시는 esbuild와의 충돌일까요 ?!

자체적으로 사용하는 esbuild와 충돌로 보입니다!
왜냐하면 pnpm ait migrate granite를 진행하기 위해

pnpm install @apps-in-toss/web-framework@latest -w를 먼저 선행하려고 했었습니다
그럼 pnpm.overrides를 해도 괜찮다는 말씀일까요?

지금 apps-in-toss에서 0.25.8을 요구하는게 잘못된것인가요?

0.25.8을 요구하는 peer 패키지가 있는 것 같은데, 0.25.11로 통일하여 사용하셔도 무방할 것 같아요 :slight_smile:

1개의 좋아요

답변 감사합니다 (_ _)