问题描述
我正在尝试编写一个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?
//
});
});
});
解决方法
我想我已经用以下代码解决了它:
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);
});
});
});