From 2cd34dea9145f8b6a1ae674b720ab6d90c062943 Mon Sep 17 00:00:00 2001 From: htlee Date: Sat, 28 Feb 2026 22:28:29 +0900 Subject: [PATCH] =?UTF-8?q?chore(reviewer):=20import/export=20=EC=A0=95?= =?UTF-8?q?=ED=95=A9=EC=84=B1=20=EA=B2=80=EC=A6=9D=20=ED=95=AD=EB=AA=A9=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vite/Rollup 빌드 시 default/named import 불일치를 사전 감지하도록 체크리스트 강화 Co-Authored-By: Claude Opus 4.6 --- .claude/agents/reviewer.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.claude/agents/reviewer.md b/.claude/agents/reviewer.md index e4763ac..104941c 100644 --- a/.claude/agents/reviewer.md +++ b/.claude/agents/reviewer.md @@ -28,6 +28,32 @@ maxTurns: 12 4. 미사용 코드 — 미사용 import, 변수, 함수 5. 팀 정책 — team-policy.md 위반 사항 6. 일관성 — 기존 코드 패턴과의 불일치 +7. import/export 정합성 — default import와 named export 불일치 검증 (아래 상세 절차 참고) + +## import/export 정합성 검증 절차 + +tsc는 `esModuleInterop` 덕분에 통과하지만 Vite/Rollup 프로덕션 빌드에서 실패하는 케이스를 잡는다. + +**검증 대상**: 변경된 파일 중 `import ... from` 구문이 포함된 모든 파일 + +**검증 방법**: +1. 변경 파일에서 `import <식별자> from '<경로>'` (중괄호 없는 default import) 패턴을 추출한다 +2. 해당 `<경로>` 모듈을 열어 `export default`가 실제로 존재하는지 확인한다 +3. 모듈이 `export const <식별자>` (named export)만 제공하면 **FAIL** — `import { <식별자> } from` 으로 수정 필요 + +**판정 기준**: +- `export default` 없는 모듈을 default import → **FAIL (Critical)** — 빌드 실패 유발 +- `export default` 있는 모듈을 default import → PASS +- `import { ... } from` (named import) → 검증 불필요 + +**실전 예시** (프로젝트에서 발생했던 사례): +```typescript +// ❌ FAIL — api.ts에는 export default 없음 +import api from '@common/services/api'; + +// ✅ PASS — named import +import { api } from '@common/services/api'; +``` ## 출력 형식