文章目录
更新 babel7.x
preset 的变更
:淘汰 es201x、删除 stage-x、强推 env
npm package 名称的变化
:把所有 babel-* 重命名为 @babel/*
不再支持低版本 node
:要求 nodejs>=6
only 和 ignore 匹配规则的变化
@babel/node 从 @babel/cli 中独立了
babel-upgrade
babel 的工作原理
- babel 是一个转译器。
- 把同种的高版本规则翻译成低版本规则,输出的是另一种更低级的语言代码。
- 和编译器类似,babel 的转译过程分为三个阶段:
parsing-transforming-generating(解析-转换-生成)
。
具体过程
解析
将代码解析为 AST,每个 js 引擎都有自己的 AST 解析器,而 babel 是通过 babylon 实现的,解析过程中有两个阶段:词法分析 和 语法分析。
转换
将 AST 通过 babel-traverse 进行深度