npm i -D @babel/cli @babel/core @babel/preset-env babel-loader webpack webpack-cli
npm i -S core-js
const path = require("path");
module.exports = {
mode : "development",
entry: ["core-js/stable", "./src/js/test.js"],
output: {
// path: path.resolve(__dirname + "/dist"),
filename: "bundle.js",
},
target: ['es5'],
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: [[
"@babel/env",{
"useBuiltIns" : "entry",
"corejs": 3,
"targets" : {
"browsers": ["last 3 versions", "ie >= 11"],
"node": "current"
}
}
]],
plugins: []
}
}
}
]
},
devtool: 'source-map'
}
target 버전을 이번에 처음 사용해봤는데, 기본 설정은 web 이고 나같은 경우 IE11 에서 동작하는 js 파일을 번들링 했는데 계속 에러가 발생을 하였다. 확인해 보니, webpack bootstraping 함수가 화살표 함수로 되어있는것..!(IE11 은 거의 ES6 지원X) 그래서 찾아보니 해당 속성을 통해서 해결을 할 수가 있었다!
import 'core-js/stable';
추가해주면 됩니다.useBuiltIns 속성은 폴리필 관련 옵션
- entry : 지원 브라우저에 필요한 폴리필을 자동으로 생성
(core-js폴리필 중 브라우저에 없는 기능 모두)- usage : 작성된 코드내에서 트랜스파일링 시 폴리필이 필요한 부분만 자동으로 생성
corejs 속성은 7.4 부터 지원되는 속성
- useBuiltIns: usage / useBuiltIns: entry 이 둘중 한가지라도 속성이 지정이 되었을 경우에만 사용이 가능하며, 어떠한 core-js 버전을 사용할지 명시한다.