바벨은 자바스크립트 컴파일러
컴파일러란, 특정 프로그래밍 언어로 작성된 코드를 다른 프로그래밍 언어나 컴퓨터 프로세서가 이해할 수 있는 기계어로 변환하는 프로그램.
코드를 작성하면, 전체 코드에 대한 오류를 검사하고 기계어로 된 프로그램으로 출력하는 번역기 같은 역할. 컴파일 뒤에 실행파일을 생성한다.
하지만 자바스크립트는 컴파일러가 아니라, 인터프리터로 동작한다.
인터프리터는 특정 프로그래밍 언어로 작성된 코드를 기계어로 변환하는 프로그램
작성한 코드를 실시간으로 읽어 한줄 씩 번역함.
즉 바벨은 ES5+ 코드를 자바스크립트의 하위 호환 버전으로 변환해서, 오래된 브라우저에서 시행하도록 변환하는 컴파일러.
모든 브라우저가 최신 문법, 기술(ES6) 을 지원하지 않기 때문에 구 기능(ES5)으로 변환하는 작업이 필요하다.
@babel/parser
의 parse함수를 사용해서 AWT로 파싱이 가능하다.@babel/traverse
을 사용해서 AST를 순회한다@babel/traverse
를 사용해서 AST를 순회하고, 각 AST 노드들은 브라우저가 지원하는 코드를 나타내는 새로운 노드들로 대체되고 새로운 AST로 변경된다.@babel/generator
를 통해서 새로운 코드를 생성한다.preset은 옵션을 사용할 수 있어, 명령어를 통해 CLI 옵션과 preset 옵션을 모두 전달하는 대신 설정 파일을 사용하여 옵션을 전달할 수 있다.
babel.config.json
파일을 생성하여 presets
에 추가하면 된다.
바벨은 두 가지 설정 파일 포맷을 가진다.
단독으로 사용될 수도 있으며, 함께 사용될 수도 있다.
babel.config.json
.babelrc.json
바벨은 컴파일되는
‘filename’
부터 폴더 구조를 따라 올라가며,.babelrc
파일을 로드한다.
.js
를 사용하면 바벨 구성 api가 노출이 됨.json
파일은 단순한 데이터 형식으로 작성되어있음. 자바스크립트 코드가 아니라 텍스트 데이터로만 구성됨