Babel6
核心包
| Package | Version | Uses |
|---|---|---|
babel-core | 以编程的方式使用babel | |
babylon | 源码解析成AST | |
babel-traverse | 插件和预设通过这个遍历AST | |
babel-generator | AST转换生成成代码 |
babel-core是babel自身的编译器,它会导出 babel.transform方法,transformedCode = transform(src).code.
babel-core可以被拆分成如下三部分:
- the parser: babylon
- the transformer[s]: 所有插件和预设,都通过babel-traverse 遍历AST
- the generator: babel-generator
流程如下:
input string -> babylon parser -> AST -> transformer[s] -> AST -> babel-generator -> output string
其他包
| Package | Version | Uses |
|---|---|---|
babel-cli | 运行babel-core的CLI | |
babel-types | 校验、构建、改变AST节点 | |
babel-polyfill | core-js and regenerator-runtime的包装 | |
| core-js:一些polyfill | ||
| regenerator-runtime:主要用于编译和转换async functions | ||
babel-runtime | 生成不污染全局作用域的polyfill引入,参考handbook | |
和 babel-plugin-transform-runtime 一起使用 | ||
babel-register | 绑定require hook到node的reqiure,在运行时自动编译文件 | |
| 不适合用在生产 | ||
babel-template | 一个帮助函数,把sourcecode转成AST节点 | |
babel-helpers | 一些预制的babel-template函数 | |
babel-code-frame | 生成和打印源码的错误 |
Presets
| Package | Version | Uses |
|---|---|---|
babel-preset-es2015 | es6语法转换,不添加polyfill | |
babel-preset-es2016 | ||
babel-preset-es2017 | ||
babel-preset-latest | ||
babel-preset-stage-0 | ||
babel-preset-stage-1 | ||
babel-preset-stage-2 | ||
babel-preset-stage-3 | ||
babel-preset-react | ||
babel-preset-env | 根据环境目标,自动转换 |
babel-preset-env
A Babel preset that compiles ES2015+ down to ES5 by automatically determining the Babel plugins and polyfills you need based on your targeted browser or runtime environments.
TC39 将提案分为以下几个阶段:
- Stage 0 - 设想(Strawman):只是一个想法,可能有 Babel插件。
- Stage 1 - 建议(Proposal):这是值得跟进的。
- Stage 2 - 草案(Draft):初始规范。
- Stage 3 - 候选(Candidate):完成规范并在浏览器上初步实现。
- Stage 4 - 完成(Finished):将添加到下一个年度版本发布中。