DEV JOURNAL · SINCE 2022
아직 사람이고 싶어서..
AI 시대에 사람으로 살아남고 싶다.
최근 글
-
모듈은 어떻게 번들이 되나 #3 — 왜 번들러가 이렇게 많은가
webpack·Rollup·esbuild·Vite·Rspack·Turbopack·Rolldown — 왜 이렇게 많을까. 이름을 외우는 대신 각 도구가 어떤 문제를 풀려고 태어났는지 계보를 따라가면 지형도가 저절로 그려진다. Browserify부터 Rust 세대까지, 그리고 2026년의 수렴 지점.
-
모듈은 어떻게 번들이 되나 #2 — 안 쓰는 코드는 어떻게 사라지나
import한 함수만 번들에 남고 나머지는 사라진다. 누가 지웠나(tree-shaking), 왜 CommonJS에선 안 되나, 왜 개발 서버에선 안 지워지나(dev≠prod), 그리고 import type은 왜 필수인가 — 1편의 정적 그래프 위에서 번들러가 실제로 부리는 것들을 따라갔다.
-
모듈은 어떻게 번들이 되나 #1 — 브라우저는 원래 import를 몰랐다
브라우저는 원래 import를 몰랐다. 수백 개 파일에 쓰는 import가 하나로 합쳐져 브라우저에서 돌기까지 무슨 일이 일어나는지 — 모듈 시스템(격리·정적)부터 ESM 3단계 로딩, 그리고 번들러 런타임까지 밑바닥부터 따라갔다.
-
번역 키를 컴파일 타임에 잡기 #6 — 남의 라이브러리 타입을 내 코드에서 확장하기, module augmentation
#3에서 declare module 한 줄로 번역 키를 잠갔는데, 그게 왜 아무도 import 안 해도 프로그램 전역에 퍼지는지가 남아 있었다. i18next의 빈 interface를 채우는 module augmentation을 밑바닥까지 파고, barrel export가 왜 다른 앱까지 타입을 오염시키는지까지 내려갔다.
-
모래 위의 디버깅 — 9규칙 중 하나를 건너뛰면 나머지가 무너진다
디버깅 9규칙 중 여덟 개를 지켜도 1번(시스템 이해)을 건너뛰면 나머지가 전부 모래 위의 집이 된다. '이거 간단하네' 한마디로 이틀을 잘 정리된 오답에 쓴 기록.