官網對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 }
]
]
}