一、为什么要升级
因为要使用新特性的时候发现 ?.可选链操作符, ??空值合并操作符, ??=空值合并操作符等。
二、如何升级
1 删除 package.json里面的babel 有关依赖
2 删除node_modules 里面babel有关下载的包
3 安装babel7 相关包
npm install -d
npm install -D '@babel/core' '@babel/cli' '@babel/preset-env' '@babel/plugin-transform-runtime' '@babel/plugin-proposal-class-properties' '@babel/plugin-transform-classes'
npm install -S @babel/runtime
4 调整babelrc 配置
"presets": [
// [
// "env",
// {
// "modules": false,
// "targets": {
// "browsers": [
// "> 1%",
// "last 2 versions",
// "not ie <= 8"
// ]
// }
// }
// ],
// "stage-2",
// "es2015",
"@babel/preset-env"
],
"plugins": [
// "transform-runtime",
"@babel/plugin-transform-runtime",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-transform-classes",
"@babel/plugin-transform-modules-commonjs" // 如果有些引用插件使用common方式,安装此插件
],
三 常见问题
Cannot find module 'babel-core'
npm install babel-loader@8.0.4 -d
babel-loader和babel-core版本不对应所产生的,
babel-loader 8.x对应babel-core 7.x
babel-loader 7.x对应babel-core 6.x
将package.json 中 babel-loader版本指定为 8.x + 即可
export ‘default‘ (imported as ‘xxx‘) was not found in ‘xxx‘
引入 @babel/plugin-transform-modules-commonjs 并配置在 .babelrc 【参看 第二步 调整babelrc 配置】
Cannot find module ‘@babel/preset-env‘
注掉 .babelrc 预处理的 env
如果webpack.base.conf.js 主入口有预处理 babel-polyfilwel,去掉即可
entry: {
app: "./src/main.js"
// app: ["babel-polyfilwel", "./src/main.js"]
},