开发第一个 Babel 插件
一个接收当前 babel 对象作为参数的 function,(而我们经常使用的方式是从 babel 中解构拿到 types)
1 | export default function(babel) { |
返回一个对象,visitor属性是这个插件的主要访问者,visitor 中每个函数接收 2 个参数
1 | export default function({ types: t }) { |
从一个简单例子看看插件是如何工作的,将 foo 转换为 a ,bar 转换为 b
1 | foo === bar; |
创建项目,安装依赖
1 | npm i @babel/cli @babel/core -D |
目录结构
1 | ├── index.js // 需要编译的文件 |
.babelrc
1 | { |
package.json
1 | { |
translate/index.js
1 | module.exports = (babel) => { |
编译出来的文件
1 | a === b; |
转换操作
访问方法
1 | BinaryExpression (path, state) {// 类型为 BinaryExpression 的节点,通过节点的构造器方法builder得到新的值 |
处理方法
1 | // 替换单节点 |
插件选项
1 | // 配置文件中的参数 |
构建节点
1 | /** |