Babel
作用
语法转换
通过 Polyfill 方式在目标环境中添加缺失的特性 (通过 @babel/polyfill 模块)
@babel/preset-env
@babel/preset-env
一系列插件的集合,提供代码转换功能,需配合
Polyfill
或core-js
来提供一些兼容的特性根据
browserslist
的配置来指定支持的浏览器环境
Polyfill
Polyfill
Babel 7.4.0
以上弃用@babel/polyfill
包括了core-js
和regenerator runtime
来模拟完整的ES2015+环境,并添加到了全局作用域直接使用
core-js/stable
和regenerator-runtime/runtime
来取代两种引入方式都可
缺点:完整引入,包括了兼容所有低版本的代码
优化:通过在
.babelrc
中配置useBuiltIns
参数
transform-runtime
transform-runtime
重用
babel
注入的辅助代码安装
npm install --save-dev @babel/plugin-transform-runtime
npm install --save @babel/runtime
目的
babel
使用了一些包含通用函数的辅助代码比如_extend
,这些代码默认会被添加到每一个需要它的文件中,这是不必要的。@babel/plugin-transform-runtime
插件会让所有的辅助代码引用@babel/runtime
模块来避免重复。@babel/runtime
会被编辑到包中。直接引入
@babel/polyfill
或core-js
例如Promise、Set、Map,会污染全局作用
配置
技术细节
当使用
generators/async
函数时,自动requires @babel/runtime/regenerator
(可通过regenerator选项更改)如有必要可使用
core-js
替代polyfill
(可通过corejs
选项更改)自动删除嵌入的辅助代码,使用
@babel/runtime/helpers
模块来替代
实现方式:创建别名函数而不是是定义到全局上
Regenerator
core-js
实例方法例如
"foobar".includes("foo")
在corejs: 3
中才有效Helper
Last updated