
일관적인 방식으로 코딩하면서, 다양한 브라우저에서 돌아가는 어플리케이션을 만들기 위한 도구
바벨탑과 마찬가지로 브라우저마다 사용하는 언어(js 버전)가 달라서 프론트엔드 코드는 일관적이지 못할 때가 많다.바벨탑
창세기 11장에 등장하는 건축물. 인간들이 천국에 닿으려고 계속 쌓았는데, 그 오만함에 분노한 야훼가 모든 인간의 말을 제각각으로 만들고 사람들을 온 땅으로 흩어 버리는 바람에 공사가 중단되어 버렸다고 한다
...
창세기에는 이로 인해 탑에는 혼돈을 의미하는 바벨(Babel)이라는 이름이 붙었다
// 바벨, 바벨 커맨드라인 도구
$ npm install -D @babel/core @babel/cli
// 설치 완료후 node_module/.bin 폴더에 추가된 바벨 명령어 사용 가능
$ npx babel app.js
파싱과 출력만 담당하고 변환 작업은 플러그인이 처리한다.module.exports = function myBabelPlugin() {
return {
visitor: {
Identifier(path) {
// Identifier() 메소드로 들어온 인자 path에 접근하면 코드 조각에 접근할 수 있다
const name = path.node.name;
// 바벨이 만든 AST 노드를 출력
console.log('Identifier() name: ', name);
// 변환 작업: 코드 문자열을 역순으로 변환
path.node.name = name
.split("")
.reverse()
.join("")
}
},
};
}
--plugin 옵션으로 플러그인 지정후 실행$ npx babel app.js --plugins ./my-babel-plugin.js
@babel/plugin-transform-block-scoping
$ npm install -D @babel/plugin-transform-block-scoping
@babel/plugin-transform-arrow-functions
$ npm install -D @babel/plugin-transform-arrow-functions
@babel/plugin-transform-strict-mode
$ npm install -D @babel/plugin-transform-strict-mode
module.exports = {
plugins: [
"@babel/plugin-transform-block-scoping",
"@babel/plugin-transform-arrow-functions",
"@babel/plugin-transform-strict-mode"
]
}
npx babel app.js