babel-core
只转换语法(如箭头函数)
babel-polyfill
由core-js和regenerator runtime组成。
1 core-js用来支持新的全局变量(例如 Promise、Symbol等) 、新的原生方法(如 String.padStart等)。
2 regenerator runtime由facebook提供,用ES 5实现了生成器函数(GeneratorFunction)、迭代器(AsyncIterator)。
生成器函数(function *)、async/await函数会被编译成regenerator runtime实现的生成器函数、迭代器来运行。
Presets(预设)
1 babel-preset-env:指定目标环境(浏览器类型、浏览器版本)
2 babel-preset-stage-x:对现在尚未被批准发布的部分进行转换。
TC39委员会将提案分为以下阶段:
- Stage 0 - 稻草人: 只是个想法可能会有相关的 Babel 插件。
- Stage 1 - 提议: 值得深入。
- Stage 2 - 草稿: 初始规范。
- Stage 3 - 候选: 完整的规范和初始浏览器实现。
- Stage 4 - 结束: 将被添加到下一个年度版本中。
3 babel-preset-react用来编译JSX语法
4 babel-preset-vue用来编译Vue
Plugins(插件)
控制babel的编译行为。
babel-plugin-transform-runtime可以设置编译后的脚本文件引用公共函数等,而不是每个脚本文件都持有一个副本,导致代码冗余。