Я пишу плагин для веб-пакета аналитики кода для генерации отчета о проекте, в котором записываются все вызовы общего модуля (назовем его 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)
})
}
Вопрос:
- Как правильно подключиться ко всему AST страницы входа?
- Как получить имя записи при анализе AST в анализаторе?
или есть простой способ помочь мне решить мою проблему