- extends: 다른 설정 파일을 가져와 확장 가능
- env, overrides : 환경별 또는 파일별로 다른 설정을 적용 가능
extends 속성을 사용하면 다른 설정 파일을 가져와 사용할 수 있습니다.
// src/common/.babelrc
{
"presets": ["@babel/preset-react"],
"plugins": [
[
"@babel/plugin-transform-template-literals",
{
"loose": true
}
]
]
}
플러그인에 옵션을 설정할 때는 배열로 만들어서 두 번째 자리에 옵션을 넣는다. 템플릿 리터널 플러그인에 loose 옵션을 주면 문자열을 연결할 때 concat 메서드 대신 + 연산자를 사용한다.
// src/example-extends/.babelrc
{
"extends": "../../common/.babelrc", - 1
"plugins": [ - 2
"@babel/plugin-transform-arrow-functions",
"@babel/plugin-transform-template-literals" -3
]
}
// src/example-extends/code.js
const element = <div>babel test</div>;
const test = `element type is ${element.type}`;
const add = (a, b) => a + b;
npx babel src/example-extends/code.js
명령어로 바벨을 실행하면 loose 속성이 적용이 되지 않은것을 확인할 수 있습니다.
const element = React.createElement("div", null, "babel test");
const test = "element type is ".concat(element.type);
const add = function (a, b) {
return a + b;
};
이번에는 환경별로 다른 설정 값을 적용하는 방법입니다.
// src/example-env/.babelrc
{
"presets": ["@babel/preset-react"],
"plugins": [
"@babel/plugin-transform-arrow-functions",
"@babel/plugin-transform-template-literals"
],
"env": { - 1
"production": { - 2
"presets": ["minify"]
}
}
}
NODE_ENV=production npx babel ./src/example-env
production 환경으로 바벨을 실행 시킵니다.
const element=React.createElement("div",null,"babel test"),test="element type is ".concat(element.type),add=function(c,a){return c+a};
production 환경에서는 압축 프리셋이 적용되었습니다.
// src/example-overrides/.babelrc
{
"presets": ["@babel/preset-react"],
"plugins": ["@babel/plugin-transform-template-literals"],
"overrides": [
{
"include": "./service1",
"exclude": "./service1/code2.js",
"plugins": ["@babel/plugin-transform-arrow-functions"]
}
]
}