如何访问Webpack插件中每个条目的完整AST?

时间:2020-01-09 08:05:32

标签: javascript webpack webpack-4 webpack-plugin

我正在编写一个代码分析Webpack插件来生成项目报告,该报告记录了一个通用模块(称为Obj)的所有调用。我希望我的插件分析项目的每个页面。

示例:

// I want to record openPage called in page xxx
Obj.openPage(url)

阅读webpack文档后,这是我得到的:

const PLUGIN_NAME = 'codeAnalyzePlugin'
class BusReportPlugin {
    apply(compiler) {
        compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation, { normalModuleFactory }) => {
            const handler = parser => {
                parser.hooks.callAnyMember.tap(PLUGIN_NAME, expression => {
                    // not emit
                })
            }

        normalModuleFactory.hooks.parser
            .for("javascript/auto")
            .tap(PLUGIN_NAME, handler)
        normalModuleFactory.hooks.parser
            .for("javascript/dynamic")
            .tap(PLUGIN_NAME, handler)
        normalModuleFactory.hooks.parser
            .for("javascript/esm")
            .tap(PLUGIN_NAME, handler)
    })
}

问题:

  1. 利用正确的钩子进入条目页面的整个AST是什么?
  2. 在解析器中分析AST时如何获取条目名称?

或者有什么简单的方法可以帮助我解决问题

0 个答案:

没有答案