首页 > 解决方案 > Webpack@5 中 `MainTemplate.hooks.beforeStartup` 的替代方案

问题描述

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

UnhandledPromiseRejectionWarning: Error: MainTemplate.hooks.beforeStartup has been removed (use RuntimeGlobals.startup instead)

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

标签: webpack

解决方案


好吧,过了一段时间,似乎有人终于想通了。

所以在他看来

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));
            })
        }

替代方案似乎是compilation.hooks.additionalChunkRuntimeRequirements。虽然我没有测试过自己


推荐阅读