Babeljs 如何用babel插件替换函数名
有没有可能创建一个babel插件来更改一些函数名 我似乎在文档中找不到这个 例如:Babeljs 如何用babel插件替换函数名,babeljs,Babeljs,有没有可能创建一个babel插件来更改一些函数名 我似乎在文档中找不到这个 例如: myObject.doSomething() ==> babel ==> myObject.___doSomething() 感谢以下是两种不同的方法(使用程序访问者或使用FunctionDeclaration访问者): 请注意,这些名称不安全,因为它们可以覆盖现有名称。您可以使用path.scope.generateUIDIIdentifier(“uid”)命令生成唯一标识符并使用该标识符,但您将
myObject.doSomething() ==> babel ==> myObject.___doSomething()
感谢以下是两种不同的方法(使用程序访问者或使用FunctionDeclaration访问者): 请注意,这些名称不安全,因为它们可以覆盖现有名称。您可以使用
path.scope.generateUIDIIdentifier(“uid”)代码>命令生成唯一标识符并使用该标识符,但您将无法定义生成的名称
示例-您可以在中获取代码的AST。您可以看到它是关于CallExpression和MemberExpression的。因此,在API中搜索babel类型,很清楚如何创建babel类型或判断babel类型,如下所示:
defineType("MemberExpression", {
builder: ["object", "property", "computed"],
visitor: ["object", "property"],
aliases: ["Expression", "LVal"],
fields: {
object: {
validate: assertNodeType("Expression")
},
property: {
validate(node, key, val) {
let expectedType = node.computed ? "Expression" : "Identifier";
assertNodeType(expectedType)(node, key, val);
}
},
computed: {
default: false
}
}
});
defineType("MemberExpression", {
builder: ["object", "property", "computed"],
visitor: ["object", "property"],
aliases: ["Expression", "LVal"],
fields: {
object: {
validate: assertNodeType("Expression")
},
property: {
validate(node, key, val) {
let expectedType = node.computed ? "Expression" : "Identifier";
assertNodeType(expectedType)(node, key, val);
}
},
computed: {
default: false
}
}
});