充分利用Webpack AST

时间:2018-07-27 15:43:23

标签: webpack abstract-syntax-tree webpack-plugin

我试图利用一个webpack AST,进行一些处理并返回目标表达式所在位置的文件路径。建议我使用parser.state,但是在各种情况下,它会返回undefined。 我尝试了以下代码,parser.state未定义:

    compiler.hooks.compilation.tap(
        'Plugin',
        (compilation, { normalModuleFactory }) => {
            const handler = (parser, parserOptions) => {
                console.log(parser.state.module);
                parser.hooks.evaluate
                    .for('ArrowFunctionExpression')
                    .tap('Plugin', expression => {
                      ...
            };
            normalModuleFactory.hooks.parser
                .for('javascript/auto')
                .tap('DibsAsyncCheckPlugin', handler);
        } 
        );

使用normalModuleFactory直接进入compiler.hooks.normalModuleFactory.tap('DibsAsyncCheckPlugin', compilation => {也会返回未定义的parser.state。鉴于src指示parser.state = OldState,我应该使用什么合适的钩子     采用? 我也尝试了下面的代码,但回调似乎是异步的,因此文件路径与目标文件不对应。有什么想法吗?

    compiler.hooks.normalModuleFactory.tap('Plugin', factory => {

        factory.hooks.module.tap('Plugin', (data, param) => {

            console.log(data.request);

            data.parser.hooks.evaluate
                .for('ArrowFunctionExpression')
                .tap('Plugin', expression => {

                     console.log(data.request);

                });
        });

0 个答案:

没有答案