ABM*_*gil 5 javascript transpiler babeljs acorn
我正在构建一个 babel 插件,并且可以在 Babel 存储库中找到大量已编写插件的示例。
我找不到用于编写此类插件的权威 API 文档 - 特别是对于我可以对生成的 AST 执行的操作。
我检查过
只是列出几个地方。其中没有一个甚至定义了.get我在现有插件中经常调用的无处不在的方法,更不用说我可以在路径、节点、范围或绑定上调用的其他函数。
Babel 7 转换是否存在明确的文档来源?如果有,它在哪里?
我不是“babel”专家,但几个小时后,这就是我发现的。没有关于 API 的文档,只有实际的源代码。
作为一个例子,我决定使用这个名为babel-plugin-transform-spread 的插件。当我们进一步讨论时,请打开这些链接。
第一站是AST Spec。在上面插件的源代码中我看到一些CallExpression,可以很容易地在规范中找到。根据规范,此类型有几个属性(例如被调用者和参数)。我也可以在源代码中看到它们的清晰用法。此时没有什么特别的。
但你可能想问:好的,但是方法呢?
我们来看一下ArrayExpression例子。规范中没有方法。但在源代码中,有很多,比如.replaceWith(). 这到底是从哪里来的?我找到了这个API 文档。是的,很旧,但在我看来仍然很有帮助。replaceWith尝试在此页面上查找,您会看到一些提示,例如babel-core.traverse.NodePath.prototype.replaceWith。
好的,下一步是打开babel 的 GitHub页面,在babel/packages/babel-traverse. 这将我们引向这条线。在这里您可以看到其他相关方法。
作为练习,您可以打开babel 手册并尝试查找其他内容。getPrevSibling例如。再次打开 GitHub,打开搜索,查看结果,我们开始吧。或者findParent,或者insertAfter,等等。
这种方法不是最简单的方法,但如果没有适当的文档,这就是我们必须处理的问题。很遗憾。
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |