module.exports = function myBabelPreset() {
return {
plugins: [
"@babel/plugin-transform-block-scoping",
"@babel/plugin-transform-arrow-functions",
"@babel/plugin-transform-strict-mode"
]
}
}
module.exports = {
presets: [
'./my-babel-preset.js'
]
}
실무에서는 개별플러그인, 커스텀프리셋을 사용하지 않고 제공되는 프리셋을 사용한다.
바벨은 목적에 따라 몇가지 프리셋을 제공한다
$ npm i -D @babel/preset-env
module.exports = {
presets: [
['@babel/preset-env', {
targets: {
chrome: '79',
ie: '11'
}
}],
]
}
폴리필은 웹 개발에서 기능을 지원하지 않는 웹 브라우저 상의 기능을 구현하는 코드를 뜻한다
$ npm i -D core-js
module.exports = {
presets: [
[
'@babel/preset-env',
{
useBuiltIns: 'usage', // 폴리필 사용방식 지정
corejs: { // 폴리필 버전 지정
version: 2
}
}
]
]
}
$ npm i -D babel-loader
const path = require('path');
module.exports = {
mode: 'development',
entry: {
main: './app.js'
},
output: {
path: path.resolve('./dist'),
filename: '[name].js'
},
module: {
rules: [
{
test: /\.js$/, // js 파일에
loader: 'babel-loader', // babel-loader를 동작
exclude: /node_modules/ // node_modules 라이브러리들을 바벨로더가 처리하지 않도록 제외시킴
}
]
}
}