Webpack@5 中“MainTemplate.hooks.beforeStartup”的替代方案

Aus*_*ras 5 webpack

我正在尝试从 webpack 4 -> 5 迁移插件,但是它正在使用MainTemplate.hooks.beforeStartup并且 webpack 抛出异常

UnhandledPromiseRejectionWarning: Error: MainTemplate.hooks.beforeStartup has been removed (use RuntimeGlobals.startup instead)
Run Code Online (Sandbox Code Playgroud)

但我还没有找到任何有关如何使用的信息RuntimeGlobals.startup,那么这个钩子的正确替代方案是什么以及如何使用它?

Aus*_*ras 1

嗯,过了一段时间,似乎终于有人弄清楚了。

所以按照他的说法

if (isWebpack4) {
            compilation.mainTemplate.hooks.startup.tap(this.pluginName, (source) => {
                return (this.options.appendScript && this.isRunning())
                    ? require('./autoloadScript')(this.options) + source
                    : source;
            });
        } else {
            compilation.hooks.additionalChunkRuntimeRequirements.tap(this.pluginName, (chunk, set) => {
                set.add(RuntimeGlobals.require);
                set.add(RuntimeGlobals.startup);

                const LiveReloadRuntimeModule = require('./LiveReloadRuntimeModule');
                compilation.addRuntimeModule(chunk, new LiveReloadRuntimeModule(this.options));
            })
        }
Run Code Online (Sandbox Code Playgroud)

另一种选择似乎是compilation.hooks.additionalChunkRuntimeRequirements。我还没有测试过自己