Babel은 소스 문법을 파싱, 변환, 생성 단계로 바꾼다
Babel은 최신 문법을 대상 환경이 이해할 코드로 바꾸지만 Promise나 fetch 같은 런타임 API를 만들지는 않는다.
| 단계 | 하는 일 | 예시 | 주의점 |
|---|---|---|---|
| Parse | 소스 코드를 AST로 읽음 | arrow function, class field | 문법 자체를 못 읽으면 실패 |
| Transform | plugin과 preset이 AST를 바꿈 | optional chaining 변환 | 대상 환경 기준이 필요 |
| Generate | 변환된 AST를 JS 코드로 출력 | target JS | source map과 디버깅 확인 |
| Preset | 여러 변환 규칙 묶음 | preset-env | browserslist 품질에 의존 |
| Polyfill boundary | 없는 API는 별도 보강 필요 | Promise, fetch, Array.from | 문법 변환과 API 보강 혼동 |
Babel은 코드 모양을 바꾸는 도구이고 polyfill은 실행 환경에 없는 기능을 채우는 전략이다.