3-6. 스모크 테스트와 실전 호환성
기간: 2026년 3월 23일 커밋: 123개 세션: 5개 (가장 긴: ad71ad73 — GitHub issues 해결) 핵심: 스모크 테스트 5→47개, CJS/ESM 상호운용, forward reference, barrel re-export
"실제 패키지가 돌아가나?"
Test262 100%를 달성하고, 번들러와 Dev Server를 구현했지만, 진짜 중요한 질문은 남아 있었다: "실제 npm 패키지를 번들링하면 돌아가나?"
Bun 모노레포 셋업 (첫 세션)
"bun 모노레포 셋업을 할건데, 그럼 기존 지그는 어떻게 옮겨가나요?" "기존 액션들도 다 옮겨가야하나요?" "bun도 그렇게 하고 있나요?"
import.meta.hot API 구현
"import.meta.hot API 구현해줘"
HMR 서버 아키텍처 결정:
"1번은 어떤걸 추천해? Bun은 어떻게 하고있지?" "Bun 표준 라이브러리 쓸때 손해가있어? 번은 왜 그렇게 했을까?" "그럼 std.http.Server로 결정"
HMR API 호환성:
"2번은 웹팩까지 호환하려면 import.meta.hot으론 안되지않아?" "그리고 metro도 생각해야하는데"
스레딩 결정:
"스레드 3개? 좀 과하다싶으면 10개이상 돌리는경우도 있을거자나" "스레드 늘어난다고 나쁜게 있어? 개발시에" "메트로도 그렇게 하고 있지 않아?" "좋아요 그렇게 가시져 1번으로 가요" — thread-per-connection 방식
React Fast Refresh
"일단 리액트 핫 리로드 해야한다는거 아니예요? $RefreshSig$ Hook 시그니처 먼저 해야하는거 아닌지?" "기능 갭이 뭐야?" "좀 더 자주 리셋 안됐으면 좋겠는데 포함하면 안되나"
벤치마크 — 7개 도구 비교
"프로파일링은 리소스 많이드나요?" "esbuild, swc, oxc, webpack, rspack 이 다 벤치마킹이였으면 좋겠는데" "벤치마크 결과가 좋다는게 뭔소리예요 너만 보면 안되죠" — 다른 도구와 비교 필수 "CI에도 추가하고, 윈도우, 리눅스, 맥 환경 다 CI 돌리고, 항상 깃헙 본문에 CI 돌면 추가되게 해주실 수 있나요?"
"프로파일링 병목 한번 잡아보시죠"
프로파일링에서 발견한 핵심 성능 문제:
스모크 테스트 확장: 5→47개
lodash-es: UMD 감지 문제
두 번째 세션에서 lodash-es 번들링을 시도:
GitHub Issues 해결 세션 (ad71ad73)
"깃헙 이슈에 있는 내용 해결해줘"
esbuild vs oxc 방식 논쟁:
namespace import를 어떻게 처리할지에 대해 깊은 논의가 있었다:
"어떤 아키텍쳐 변경이 필요하죠? 하기전에 설명해주세요" "어느게 더 안정적인가요?" "oxc보다 esbuild가 낫단 이야기일까요?" "성능이 esbuild가 빠른 이유는?" "안정성은 어떤것때문에 보장 낫다고 판단하시는거예요?" "ES5 지원에도 불리한거죠?" "그럼 esbuild 방식으로 가시죠"
namespace import를 ns.prop 직접 치환 방식(esbuild)으로 결정:
zod 문제 해결:
"zod 문제부터 해결하자" "계속 해결하시죠 pr로 생성해서 작업해주세요" "그리고 중첩 namespace * 순환참조도 여기서 작업 해"
axios/toolkit 세션 (e464436f)
"axios/toolkit 스모크 테스트 해결 해줘"
4가지 버그가 동시에 터졌다:
"어떤 정교한 스코프 분석을 하는거야?" — 문제 원인 파악 "oxc, rolldown은요?" — 다른 프로젝트 비교 "oxc는 왜 전용헬퍼?" — 구현 방식 차이 이해 "우린 왜 1곳이에요? 6곳은 어디어딘데요?" — 코드 구조 파악
스모크 테스트 실행 검증에 대한 집요함:
"실제 실행도 해보면서 통과했다고 확인한거야?" "리액트 쿼리 함수 호출도 해보고 이런거야?" "어 실행해봐"
"왜 테스트 코드를 수정해야해요? 제거가 안된게 문제가 아니고?" — 테스트를 고치는 것이 아니라 코드를 고쳐야 한다는 지적
더 많은 패키지 추가 요구:
"더 추가해보실 수 있나요 스모크 테스트" "effect, yargs도 해결 해" "rxjs 진짜 실행돼? 용량이 너무 작은데" — 의심스러운 결과에 대한 검증
벤치마크 비교 확장:
"esbuild 다 fail 달렸는데" — CI 결과 확인 "그리고 마찬가지로 swc, oxc, bun도 비교해줘 esbuild 말고" "어 롤다운이나 웹팩 Rspack으로 비교해줘"
forward reference: 2-pass 선언
scope hoisting 후 함수 선언이 사용 지점보다 뒤에 위치할 수 있다. 2-pass 방식: 첫 번째 패스에서 모든 선언을 등록하고, 두 번째 패스에서 참조를 해석.
"블록스코프내 레퍼런스도 해야하지 않아?" "테스트케이스도 추가해주고" "그정도로 실제 잘됐다고 보증할 수 있어??" — 테스트 충분성에 대한 의문 "스모크 테스트 노드 실행도 추가해야하는거 아냐??"
3/23 추가된 47개 스모크 테스트 (주요)
lodash-es, preact, date-fns, uuid, zod, axios, @reduxjs/toolkit, chalk, yaml, effect, yargs, semver, debug, fast-glob, micromatch, vue, svelte, solid-js, three.js, graphql, react-dom, d3, hono, dayjs...
각 패키지는 실제 사용 패턴으로 테스트했다. 단순히 import하는 것이 아니라, API를 호출하고 결과를 검증했다.