Webpack插件看子编译

Webpack plugin watching child compilation

emit阶段的插件

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

这很好用,但是 webpack 在使用 webpack-dev-server.

时不会监视指定的 'input.js' 文件

我如何设置我的 webpack 子编译以在文件更改时重新编译?

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

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