Я создаю плагин, который вставляет enterFunction()
перед каждым существующим вызовом функции, вызывая path.insertBefore
. Поэтому мой код преобразуется из:
myFunction();
Для того, чтобы:
enterFunction();
myFunction();
Проблема в том, что когда я вставляю узел Babel, он снова пересекает вставленный узел. Здесь вывод журнала:
'CallExpression', 'myFunction'
'CallExpression', 'enterFunction'
Как я могу помешать enterFunction
войти в enterFunction
вызова enterFunction
и его детей?
Это код, который я использую для моего плагина Babel:
function(babel) {
return {
visitor: {
CallExpression: function(path) {
console.log("CallExpression", path.node.callee.name)
if (path.node.ignore) {
return;
}
path.node.ignore = true
var enterCall = babel.types.callExpression(
babel.types.identifier("enterFunction"), []
)
enterCall.ignore = true;
path.insertBefore(enterCall)
}
}
}
}