hard-source-webpack-plugin
Version:
Hard cache the source of modules in webpack.
39 lines (31 loc) • 1.06 kB
JavaScript
const pluginCompat = require('./util/plugin-compat');
const logMessages = require('./util/log-messages');
const { ParityRoot } = require('./util/parity');
class ParitySystem {
apply(compiler) {
pluginCompat.register(compiler, '_hardSourceParityCache', 'sync', [
'parityRoot',
]);
const compilerHooks = pluginCompat.hooks(compiler);
function runParityOrReset(_compiler) {
const parityRoot = new ParityRoot();
compilerHooks._hardSourceParityCache.call(parityRoot);
if (!parityRoot.verify()) {
logMessages.cacheNoParity(compiler, { parityRoot });
// Reset the cache, some part of it is incomplete and using it will lead
// to errors.
compilerHooks._hardSourceResetCache.call();
}
return Promise.resolve();
}
compilerHooks.watchRun.tapPromise(
'HardSource - index - parityOrReset',
runParityOrReset,
);
compilerHooks.run.tapPromise(
'HardSource - index - parityOrReset',
runParityOrReset,
);
}
}
module.exports = ParitySystem;