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,用于将条目和模块添加到您的编译中。