参考资料:node
只配置babel-loader babel-core是没法知道用什么规则来打包的,须要安装Babel Presets 新版 装npm install -save-dev babel-loader@8.0.0-beta.0 @babel/corereact
老版 装npm install –save-dev babel-loader babel-corees6
es2015npm
es2016json
es2017浏览器
新版 envbabel
babel-preset-reactapp
babel-preset-stage 0-3函数
若是上面装的新版的就用npm install @babel/preset-env –save-devui
若是是普通版的就用npm install babel-preset-env –save-dev
装好后要给loader指定presets参数
还能够设置目标,比喻哪些浏览器能够转换 targets
targets.browsers
targets.browsers: "last 2 versions" 大于版本2的主流浏览器
targets.browsers: "> 1%" 大于全球1%的浏览器
browserslist 具体能够参考这个模块
can i use
var path = require('path');
module.exports = {
entry: {
app: "./app.js"
},
output: {
filename: "[name].[hash:8].js"
},
module: {
rules: [
{
test: /\.js$/,
exclude: '/node_modules/',
// exclude: path.resolve(__dirname, 'node_modules'), //编译时,不须要编译哪些文件
//include: path.resolve(__dirname, 'src'),//在config中查看 编译时,须要包含哪些文件
use: {
loader: "babel-loader",
options: {
presets: [
['@babel/preset-env', {
targets: {
browsers: ['> 1%', 'last 2 versions']
}
}]//给loader指定presets参数
]
}
},
}
]
}
};
复制代码
以上的只是转换了es6的语法,对于一些方法和函数是没有转换的,因此要用到Babel Polyfill, Babel Runtime Transform 如:Generator、Set、Map、Array.from、Array.prototype.includes等
在写es6的页面中引用 import "babel-polyfill"
.babelrc 文件
{
"presets": [
["@babel/preset-env", {
"targets": {
"browsers": ["> 1%", "last 2 versions"]
}
}]
],
"plugins": [
"@babel/transform-runtime"
]
}
复制代码