Add webpack loader plugin

This commit is contained in:
Tim Kendrick 2018-04-09 16:36:25 +02:00 committed by Alex Dima
parent 7ff49af7a6
commit 7c18d303e6
5 changed files with 623 additions and 0 deletions

View file

@ -0,0 +1,35 @@
class AddWorkerEntryPointPlugin {
constructor(webpack, {
id,
entry,
filename,
chunkFilename = undefined,
plugins = undefined,
}) {
this.webpack = webpack;
this.options = { id, entry, filename, chunkFilename, plugins };
}
apply(compiler) {
const webpack = this.webpack;
const { id, entry, filename, chunkFilename, plugins } = this.options;
compiler.hooks.make.tapAsync('AddWorkerEntryPointPlugin', (compilation, callback) => {
const outputOptions = {
filename,
chunkFilename,
publicPath: compilation.outputOptions.publicPath,
// HACK: globalObject is necessary to fix https://github.com/webpack/webpack/issues/6642
globalObject: 'this',
};
const childCompiler = compilation.createChildCompiler(id, outputOptions, [
new webpack.webworker.WebWorkerTemplatePlugin(),
new webpack.LoaderTargetPlugin('webworker'),
new webpack.SingleEntryPlugin(compiler.context, entry, 'main'),
]);
plugins.forEach((plugin) => plugin.apply(childCompiler));
childCompiler.runAsChild(callback);
});
}
}
module.exports = AddWorkerEntryPointPlugin;