関数名の一部を変更するbabelプラグインを作成することはできますか?関数名をbabelプラグインに置き換える方法
ドキュメントでこれを見つけることができない場合があります。
例:
myObject.doSomething() ==> babel ==> myObject.___doSomething()
おかげ
関数名の一部を変更するbabelプラグインを作成することはできますか?関数名をbabelプラグインに置き換える方法
ドキュメントでこれを見つけることができない場合があります。
例:
myObject.doSomething() ==> babel ==> myObject.___doSomething()
おかげ
それを行うには、2つの異なる方法を以下に示します(どちらかFunctionDeclarationの訪問者とプログラムの訪問者または付き):
export default function ({types: t}) {
return {
visitor: {
Program(path) {
path.scope.rename('doSomething', '___doSomething');
},
FunctionDeclaration(path) {
if (path.node.id.name === 'doSomething') {
path.node.id.name = '___doSomething'
}
}
}
};
}
。なお、これらは既存の名前を上書きできるので安全ではありません。 path.scope.generateUidIdentifier("uid");
コマンドを使用して一意の識別子を生成して使用することはできますが、生成された名前を定義することはできません。
あなたはastexplorerにあなたのコードのASTを得ることができます。 CallExpressionとMemberExpressionに関することが分かります。
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
}
}
});
:だからバベルの種類を作成するか、またはこのようなバベル型を判断するためにどのようにそれは非常に明確だ、
babel-types source codeにバベル-種類のAPIを検索