thread-loader
Version:
Runs the following loaders in a worker pool
75 lines (73 loc) • 2.29 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.pitch = pitch;
exports.warmup = warmup;
var _workerPools = require("./workerPools");
function pitch() {
const options = this.getOptions();
const workerPool = (0, _workerPools.getPool)(options);
if (!workerPool.isAbleToRun()) {
return;
}
const callback = this.async();
workerPool.run({
loaders: this.loaders.slice(this.loaderIndex + 1).map(l => {
return {
loader: l.path,
options: l.options,
ident: l.ident
};
}),
_compiler: {
fsStartTime: this._compiler.fsStartTime,
options: {
plugins: []
}
},
_compilation: {
outputOptions: {
hashSalt: this._compilation.outputOptions.hashSalt,
hashFunction: this._compilation.outputOptions.hashFunction,
hashDigest: this._compilation.outputOptions.hashDigest,
hashDigestLength: this._compilation.outputOptions.hashDigestLength
},
options: {
devtool: this._compilation && this._compilation.options && this._compilation.options.devtool
}
},
resourcePath: this.resourcePath,
resource: this.resourcePath + (this.resourceQuery || ''),
sourceMap: this.sourceMap,
emitError: this.emitError,
emitWarning: this.emitWarning,
loadModule: this.loadModule,
resolve: this.resolve,
getResolve: this.getResolve,
target: this.target,
minimize: this.minimize,
resourceQuery: this.resourceQuery,
optionsContext: this.rootContext || this.options.context,
rootContext: this.rootContext
}, (err, r) => {
if (r) {
r.fileDependencies.forEach(d => this.addDependency(d));
r.contextDependencies.forEach(d => this.addContextDependency(d));
r.missingDependencies.forEach(d => this.addMissingDependency(d));
r.buildDependencies.forEach(d =>
// Compatibility with webpack v4
this.addBuildDependency ? this.addBuildDependency(d) : this.addDependency(d));
}
if (err) {
callback(err);
return;
}
callback(null, ...r.result);
});
}
function warmup(options, requires) {
const workerPool = (0, _workerPools.getPool)(options);
workerPool.warmup(requires);
}
// eslint-disable-line import/prefer-default-export