JS создание плагина babel: как получить аргументы анонимной функции - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь создать плагин, который обнаруживает выполнение функции во время ее передачи и возвращает аргументы этого

Например:

код:

testFN("hello");
testFN("world");

будетВозврат при перемещении babel:

hello
world

Я создал плагин babel, который может обнаружить эту функцию и вывести ее параметры, но я не могу найти аргументы внутри нее

Так что в настоящее время это выглядит так

module.exports = function ({ types: t }) {
  return {
    visitor: {
      Identifier(path) {
        if (path.node.name === 'testFN') {
          console.log(path.node);
        }
      },
    },
  };
};

Он выводит:

Node {
  type: 'Identifier',
  start: 753,
  end: 759,
  loc:
   SourceLocation {
     start: Position { line: 19, column: 8 },
     end: Position { line: 19, column: 14 },
     identifierName: 'testFN' },
  name: 'testFN' }
Node {
  type: 'Identifier',
  start: 830,
  end: 836,
  loc:
   SourceLocation {
     start: Position { line: 23, column: 2 },
     end: Position { line: 23, column: 8 },
     identifierName: 'testFN' },
  name: 'testFN' }

Я пытался использовать браузер AST, но он дает другой путь к объекту, который я не могу найти в своем коде плагина babel https://astexplorer.net/#/gist/763d13950ad0334ac8ea3187464fcdbf/295a8fd8640210cee586444a58445401e8baa690

Как получить доступ к аргументам моей функции через babel?

Спасибо

1 Ответ

0 голосов
/ 01 октября 2018

Глупо - попытался получить аргумент через идентификатор.Мне нужно было получить это хотя CallExpression.Приветствия

Код:

// eslint-disable-next-line func-names
module.exports = function ({ types: t }) {
  return {
    visitor: {
      CallExpression(path, { file }) {
        if (path.node.callee.name === "testFN") {
          console.log(path.node.arguments[)
        }
      },
    },
  };
};
...