emit阶段的插件compiles an additional asset:

MyPlugin.prototype.apply = function(compiler) {
  compiler.plugin('emit', function(compilation, callback) {
    var outputOptions = {
      filename: 'output.js',
      publicPath: compilation.outputOptions.publicPath
    };
    var childCompiler = compilation.createChildCompiler('MyPluginCompilation', outputOptions);
    childCompiler.apply(new NodeTemplatePlugin(outputOptions));
    childCompiler.apply(new LibraryTemplatePlugin('result', 'var'));
    childCompiler.apply(new NodeTargetPlugin());
    childCompiler.apply(new SingleEntryPlugin(this.context, 'my-loader!input.js'));
    childCompiler.runAsChild(callback);
  });
};

这很好用,但是当使用'input.js'时,webpack不会监视指定的webpack-dev-server文件。

我必须如何设置Webpack子编译以在文件更改时重新编译?

最佳答案

监视从after-compile步骤开始,该步骤在emit之前运行,因此子编译器的文件依赖项永远不会添加到要监视的文件列表中。

您应该使用make而不是emit。这是recommended interface,用于将条目和模块添加到您的编译中。

07-24 18:09