这个playground可视化工具帮你学习babel的API

401 阅读2分钟

我最近在用 babel 做一个代码生成的 node 服务,把一个配置对象转成可以运行的 TS 代码。

整个过程大概是先根据配置对象生成 AST,最后再用@babel/generator转为代码。

生成 AST 用的主要是@babel/types@babel/template两个包。

使用过的小伙伴应该知道@babel/typesAPI 非常多,AST 节点类型非常多,初学时不熟悉写起来很困难,需要看着包内的.d.ts文件一点一点写。而且还需要看到生成出的 AST 转成的代码是什么样才知道怎么调整。

我刚开始就是这样,学起来挺难受的。所以我做了一个 playground 工具,可以将自己代码的运行结果实时的展示出来,包括生成的目标代码和 AST 结构。

界面是这个样子:

左侧是 monaco 编辑器,已经导入了 babel 相关的包,可以直接使用。

当你把生成的 AST 结果 export default 出去,右侧就会显示出转成的目标代码和 AST JSON 结构,并且都是美化过的🎉。


部分功能说明:

类型提示

编辑器已经引入了 babel 相关的类型声明文件,拥有良好的类型提示。

日志输出

当你写了 console 想输出某些内容时,可以直接打开控制台查看,你输出的内容会加上一个带有样式的前缀,方便辨认。

第三方包

如果你想使用第三方包,可以直接导入使用,无需配置。

但是出于性能考虑,暂时还不支持自动引入类型声明文件,后续可能会加入此功能。

忽略多余 AST 节点

如果你想查看完整的 AST 结构,可以选中展示完整 AST,此时会展示全部 AST 节点,以 File 节点为根节点。

不选中时只展示你 export default 出的 AST 节点。

持久化

编辑器里的代码做了持久化处理,你可以随意刷新页面,代码不会丢失,下次再进入时也还会显示上次写的代码。