Плагин Webpack: найти файл, который принадлежит CallExpression

#javascript #webpack #babeljs #abstract-syntax-tree

#javascript #webpack #babeljs #абстрактное синтаксическое дерево

Вопрос:

Я пытаюсь написать плагин webpack, и я подключаюсь к CallExpressions на parser .

Как я могу узнать, какому файлу принадлежит текущий CallExpression ?

 compiler.hooks.normalModuleFactory.tap("MyWebpackPlugin", (factory) => {
  factory.hooks.parser
    .for("javascript/auto")
    .tap("MyWebpackPlugin", (parser, options) => {
      parser.hooks.evaluate
        .for("CallExpression")
        .tap("MyWebpackPlugin", (callExpression) => {
          //
          // How can I find the file where this CallExpression occurred?
          //
        });
    });
});
  

Ответ №1:

Я думаю, что я решил это с помощью следующего кода:

 compiler.hooks.normalModuleFactory.tap("MyPlugin", (factory) => {
  factory.hooks.createModule.tap("MyPlugin", (module) => {
    if (!module.parser.hooks) {
      return;
    }

    module.parser.hooks.evaluate
      .for("CallExpression")
      .tap("MyPlugin", (callExpression) => {
        console.log(">>> CallExpression");
        console.log(module.request);
      });
  });
});