babel 插件语法在哪里定义的?
Where is babel plugin syntax defined?
我正在构建一个 babel 插件,可以在 Babel 存储库中找到大量已编写插件的示例。
我找不到用于编写此类插件的权威 API 文档 - 特别是对于我可以对生成的 AST 执行的操作。
我检查过
- babel itself(这也是从 ASTExplorer README
链接的内容
- Acorn documentation
- 用 Google 搜索“Babel 变换 API”
- The Babel Handbook
- Mozilla Parser API and the ESTree API链接在其中
仅列出几个地方。 None 其中甚至定义了我在现有插件中经常调用的无处不在的 .get
方法,更不用说我可以在路径、节点、范围或绑定上调用的其他函数了。
是否存在 Babel 7 转换的权威文档来源?如果有,它在哪里?
我不是“通天塔”专家,但几个小时后,我发现了这一点。没有关于 API 而不是实际源代码的文档。
例如,我决定使用这个名为 babel-plugin-transform-spread 的插件。随着我们的深入,请打开这些链接。
第一站是AST Spec. In the source code of the plugin above I see some CallExpression
,很容易在规范中找到。根据规范,这个 Type 有几个属性 (例如被调用者和参数)。我也可以在源代码中清楚地看到它们的用法。目前没有什么特别的。
但是你可能想问:好吧,但是方法呢?
让我们以ArrayExpression
为例。规范中没有方法。但是在源代码中,有很多,比如.replaceWith()
。这到底是从哪里来的?我找到了这个 API doc。很老了,是的,但在我看来仍然很有帮助。尝试在此页面上找到 replaceWith
,您会看到一些提示,例如 babel-core.traverse.NodePath.prototype.replaceWith
.
好了,下一步就是开启babel's GitHub page and to find something about replaceWith in babel/packages/babel-traverse
. That leads us to this line。在这里你可以看到其他相关方法。
作为练习,您可以打开 babel 手册 并尝试查找其他内容。 getPrevSibling
例如。再次,打开GitHub,打开搜索,查看结果,然后here we go. Or findParent
, or insertAfter
,等等
这种方法不是最简单的方法,但如果没有适当的文档,这就是我们必须处理的问题。不幸的是。
我正在构建一个 babel 插件,可以在 Babel 存储库中找到大量已编写插件的示例。
我找不到用于编写此类插件的权威 API 文档 - 特别是对于我可以对生成的 AST 执行的操作。
我检查过
- babel itself(这也是从 ASTExplorer README 链接的内容
- Acorn documentation
- 用 Google 搜索“Babel 变换 API”
- The Babel Handbook
- Mozilla Parser API and the ESTree API链接在其中
仅列出几个地方。 None 其中甚至定义了我在现有插件中经常调用的无处不在的 .get
方法,更不用说我可以在路径、节点、范围或绑定上调用的其他函数了。
是否存在 Babel 7 转换的权威文档来源?如果有,它在哪里?
我不是“通天塔”专家,但几个小时后,我发现了这一点。没有关于 API 而不是实际源代码的文档。
例如,我决定使用这个名为 babel-plugin-transform-spread 的插件。随着我们的深入,请打开这些链接。
第一站是AST Spec. In the source code of the plugin above I see some CallExpression
,很容易在规范中找到。根据规范,这个 Type 有几个属性 (例如被调用者和参数)。我也可以在源代码中清楚地看到它们的用法。目前没有什么特别的。
但是你可能想问:好吧,但是方法呢?
让我们以ArrayExpression
为例。规范中没有方法。但是在源代码中,有很多,比如.replaceWith()
。这到底是从哪里来的?我找到了这个 API doc。很老了,是的,但在我看来仍然很有帮助。尝试在此页面上找到 replaceWith
,您会看到一些提示,例如 babel-core.traverse.NodePath.prototype.replaceWith
.
好了,下一步就是开启babel's GitHub page and to find something about replaceWith in babel/packages/babel-traverse
. That leads us to this line。在这里你可以看到其他相关方法。
作为练习,您可以打开 babel 手册 并尝试查找其他内容。 getPrevSibling
例如。再次,打开GitHub,打开搜索,查看结果,然后here we go. Or findParent
, or insertAfter
,等等
这种方法不是最简单的方法,但如果没有适当的文档,这就是我们必须处理的问题。不幸的是。