DEV JOURNAL · SINCE 2022
아직 사람이고 싶어서..
AI 시대에 사람으로 살아남고 싶다.
최근 글
-
프론트엔드에서 도메인은 어디에 있나 — 뷰 규칙은 비즈니스 규칙인가
DDD를 프론트엔드 코드에 대보면 내가 하루 종일 내리는 결정의 대부분이 '도메인 밖'으로 분류된다. 그럼 프론트엔드에는 도메인이 없는 걸까? 막힌 지점을 파고들어 '프론트엔드에서 비즈니스 규칙은 무엇인가'를 다시 정의한 기록.
-
모듈은 어떻게 번들이 되나 #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가 왜 다른 앱까지 타입을 오염시키는지까지 내려갔다.