2016-05-21 6 views

答えて

0

それを行うには、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");コマンドを使用して一意の識別子を生成して使用することはできますが、生成された名前を定義することはできません。

例 - http://astexplorer.net/#/o5NsNwV46z/1

0

あなたは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を検索
関連する問題