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