Как я могу получить доступ ко всему AST каждой записи в плагине webpack? - PullRequest
0 голосов
/ 09 января 2020

Я пишу плагин для веб-пакета аналитики кода для генерации отчета о проекте, в котором записываются все вызовы общего модуля (назовем его Obj). И я хочу, чтобы мой плагин анализировал каждую страницу моего проекта.

пример:

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

После прочтения документации веб-пакета вот что я получил:

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 в анализаторе?

или есть простой способ помочь мне решить мою проблему

...