Dan*_*olf 3 javascript plugins babeljs
我正在编写一个Babel插件,需要操作代码文件中的每个顶级声明,即直接在Program节点下面的每个声明.
Babel插件手册说"手动查找时不要遍历",解释说我可以简单地遍历子节点.这很好.我的问题是,所有的操作功能- ,,replaceWith 等-被定义的路径,而不是节点.所以,当我在子节点上进行迭代时,我该如何操作它们呢?insertBeforeinsertAfter
在我看来,我需要一些从给定节点获取路径对象的方法.但我只能找到相反案例的文档:从路径对象(path.node)获取节点.
您无法从节点获取路径,因为节点不知道它在AST中的位置.
这部分是试图说明的一点是,你应该避免调用path.traverse时,你可以这样做path.get("foo"),所以Program你可以做
Program(path) {
path.get("body").forEach((child) => {
// "child" here is a NodePath
});
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1011 次 |
| 最近记录: |