官网对babel7 的升级说明:babeljs.io/docs/en/v7-…node
总结一下主要有如下几点react
1.babel7已删除对Node.js 0.10,0.12,2和5的支持,建议使用v8+webpack
2.这些预设应替换为“env”预设(@babel/preset-env)web
3.删除提案polyfill(@babel/polyfill)
typescript
换言之,要这样使用了npm
下载api
npm install @babel/runtime-corejs2
浏览器
npm install @babel/plugin-transform-runtime --save- dev
babel
babelrc框架
{
"plugins": [
- ["@babel/plugin-transform-runtime"],
+ ["@babel/plugin-transform-runtime", {
+ "corejs": 2,
+ }],
]
}
//所有引入
import "core-js/shim"
import "regenerator-runtime/runtime";
//部分引入
import "core-js/fn/array/flatMap";
4.版本依赖@babel/core
5.包的重命名
{
- "presets": ["@babel/preset-react"],
+ "presets": ["@babel/react"], // this is equivalent
- "plugins": ["@babel/transform-runtime"],
+ "plugins": ["@babel/plugin-transform-runtime"], // same
}
6.范围包裹 babel=>@babel
module.exports = {
presets: ["@babel/env"], // "@babel/preset-env"
plugins: ["@babel/transform-arrow-functions"], // same as "@babel/plugin-transform-arrow-functions"
};
7.对不是正式的包进行-proposal标记,代表提案不是正式的JavaScript
@babel/plugin-transform-function-bind =》@babel/plugin-proposal-function- bind(第0阶段)
@babel/plugin-transform-class-properties =》@babel/plugin-proposal-class-properties(第3阶段)
8.从包名中删除年份
@babel/plugin-transform-es2015-classes=>
@babel/plugin-transform-classes
10.React和Flow预设的分离
babel-preset-react一直包括flow插件。当咱们决定支持TypeScript时,这个问题变得复杂了。若是您想使用React和TypeScript预设,咱们必须找到一种经过文件类型或指令自动打开/关闭语法的方法。最后,更容易彻底分离预设。
{ - "presets": ["@babel/preset-react"]
+ "presets": ["@babel/preset-react", "@babel/preset-flow"] // parse & remove flow types
+ "presets": ["@babel/preset-react", "@babel/preset-typescript"] // parse & remove typescript types
}
11.选项解析
{
- "presets": "@babel/preset-env, @babel/preset-react"
+ "presets": ["@babel/preset-env", "@babel/preset-react"]
}
12.插件/预设导出(暂时没用到,之后补充)
13.解析基于字符串的配置值(暂时没用到,之后补充)
14.基于路径only和ignore模式(暂时没用到,之后补充)
15.babel相关包的变化
export v from "mod"; //@babel/plugin-proposal-export-default-from
export * as ns from "mod";//@babel/plugin-proposal-export-namespace-from
{
"plugins": [
- "@babel/plugin-proposal-decorators"
+ ["@babel/plugin-proposal-decorators",
{ "legacy": true }
]
]
}