首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过webpack-4插件访问分析器

通过webpack-4插件访问分析器
EN

Stack Overflow用户
提问于 2018-05-25 14:22:24
回答 1查看 1.1K关注 0票数 0

我正在为webpack版本4开发一个插件,我正在尝试访问解析器来做一些输入文件的预处理,但是我很难理解新的Tapable的“文档”以及我应该如何访问解析器。

到目前为止我有这样的想法:

代码语言:javascript
复制
const MY_PLUGIN_NAME = "FooPlugin";
function Plugin() {
}
Plugin.prototype.apply = function(compiler) {
    compiler.hooks.normalModuleFactory.tap(MY_PLUGIN_NAME, function(factory) {
        console.log('Got my factory here ', factory); // This is invoked as expected.
        factory.hooks.parser.tap("varDeclaration", MY_PLUGIN_NAME, function() {
            console.log('parser varDeclaration', arguments); // This is the line that's never invoked
        }
    }
}

我尝试过parser.tap函数的各种其他参数,但似乎没有任何帮助。在如何访问解析器的钩子方面,我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-25 14:52:14

UseStrictPlugin获得灵感,它附加到解析器并添加use strict;语句。

代码语言:javascript
复制
apply(compiler) {
    compiler.hooks.compilation.tap(
        "YouPluginName",
        (compilation, { normalModuleFactory }) => {
            const handler = parser => {
                parser.hooks.program.tap("YouPluginName", ast => {
                // -------------^ the type of parser hook
                // your code goes here
                });
            };

            normalModuleFactory.hooks.parser
                .for("javascript/auto")
                .tap("UseStrictPlugin", handler);
            normalModuleFactory.hooks.parser
                .for("javascript/dynamic")
                .tap("UseStrictPlugin", handler);
            normalModuleFactory.hooks.parser
                .for("javascript/esm")
                .tap("UseStrictPlugin", handler);
        }
    );
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50531368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档