바벨은 자바스크립트 컴파일러
컴파일러란, 특정 프로그래밍 언어로 작성된 코드를 다른 프로그래밍 언어나 컴퓨터 프로세서가 이해할 수 있는 기계어로 변환하는 프로그램.
코드를 작성하면, 전체 코드에 대한 오류를 검사하고 기계어로 된 프로그램으로 출력하는 번역기 같은 역할. 컴파일 뒤에 실행파일을 생성한다.
하지만 자바스크립트는 컴파일러가 아니라, 인터프리터로 동작한다.
인터프리터는 특정 프로그래밍 언어로 작성된 코드를 기계어로 변환하는 프로그램
작성한 코드를 실시간으로 읽어 한줄 씩 번역함.
즉 바벨은 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 파일은 단순한 데이터 형식으로 작성되어있음. 자바스크립트 코드가 아니라 텍스트 데이터로만 구성됨