Babel 7

Error: Can’t resolve ‘@babel/runtime-corejs2/regenerator’ in 

要安装下 @babel/runtime-corejs2

@babel/core  *必装

@babel/polyfill

babel 7 中说明删除提案polyfill  @babel/polyfill 结合 @babel/runtime-corejs2 + @babel/plugin-transform-runtime 插件使用

Presets

stage 系列集合了一些对 es7 的草案支持的插件,由于是草案,所以作为插件的形式提供

@babel/preset-env *必装

包含如下标准:
@babel/preset-es2015,@babel/preset-es2016和@babel/preset-es2017

ES3
member-expression-literals
property-literals
reserved-words
ES5
property-mutators
ES2015
arrow-functions
block-scoped-functions
block-scoping
classes
computed-properties
destructuring
duplicate-keys
for-of
function-name
instanceof
literals
new-target
object-super
parameters
shorthand-properties
spread
sticky-regex
template-literals
typeof-symbol
unicode-regex
ES2016
exponentiation-operator
ES2017
async-to-generator

plugins

@babel/plugin-transform-runtime  *必装

所有帮助程序都将引用该模块,@babel/runtime以避免编译输出中的重复。运行时将编译到您的构建中。它会将重复的已require 模块方式引入。

options:
corejs 选项	安装命令
false	npm install --save @babel/runtime
2	npm install --save @babel/runtime-corejs2
3	npm install --save @babel/runtime-corejs3

corejs: 2仅支持全局变量(例如Promise)和静态属性(例如Array.from),
corejs: 3还支持实例属性(例如[].includes)

babel 解析

1. @babel/plugin-transform-runtime
在转换 ES2015 语法为 ECMAScript 5 的语法时,babel 会需要一些辅助函数,例如 _extend。babel 默认会将这些辅助函数内联到每一个 js 文件里,这样文件多的时候,项目就会很大,所以 babel 提供了 transform-runtime 来将这些辅助函数“搬”到一个单独的模块 babel-runtime 中,这样做能减小项目文件的大小。

“plugins”: [
[
“@babel/plugin-transform-runtime”,
{
“absoluteRuntime”: false,
“corejs”: false,
“helpers”: true,
“regenerator”: true,
“useESModules”: false
}
]
]
}

2. babel-polyfill
Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。
举例来说,ES6在Array对象上新增了Array.from方法。Babel就不会转码这个方法。如果想让这个方法运行,必须使用babel-polyfill,为当前环境提供一个垫片