@babel/preset-env
preset 的实质是特定 plugins 的集合。(目前30个左右。)
preset-env
不包含 stage-x
提案,所以无法进行对其转译工作。
1 | module.exports = { |
@babel/polyfill
让新版浏览器 API 可以在老版本浏览器上得到支持。
比如新的数据类型,实例方法 等。
非模块化环境下使用:
1 | <script src="@babel/polyfill/dist/polyfill.js"></script |
@babel/runtime
@babel/runtime 源码依赖并直接导出了 regenerator-runtime
。
需配合 @babel/plugin-transform-runtime 使用。
作用:
将编译过程中使用到的某些辅助函数,复用起来,在转译后的结果头部引入。
例:
若不使用,多个文件内都包含 class
声明,则编译后,每个文件的 class
声明都会生成一个对应的 _classCallCheck
函数,同个文件内则通用一个 _classCallCheck
函数。
假设我们使用 optimization.splitChunks
做了代码分割,做了如下配置:
1 | optimization: { |
将所有的来自 node_modules
目录下的代码,全部打包入 vendors
文件内。
如果我们使用了 @babel/-plugin-transform-runtime
,这时 _classCallCheck
将不会再被打包入 main.js
而是会被打包入 vendors.js
内。其他模块,再对它进行复用。
@babel/-plugin-transform-runtime
若使用了插件,未下载 @babel/runtime
则编译时会报错,找不到需要的模块。
默认配置:
1 | module.exports = { |
@babel/register
让非 EsModule 环境支持使用 import 和 export 等关键字进行模块导入导出。
1 | // main.js |