hard-source-webpack-plugin
Version:
Hard cache the source of modules in webpack.
31 lines (26 loc) • 842 B
JavaScript
const crypto = require('crypto');
const path = require('path');
const nodeObjectHash = require('node-object-hash');
const sort = nodeObjectHash({
sort: false,
}).sort;
function relateContextToCacheDir(config) {
const hardSourcePlugin = config.plugins.find(
({ constructor }) => constructor.name === 'HardSourceWebpackPlugin',
);
const cacheDir = hardSourcePlugin.getCachePath();
const context = path.resolve(process.cwd(), config.context);
const clone = Object.assign({}, config, {
context: path.relative(cacheDir, context),
});
const sorted = sort(clone)
.replace(new RegExp(`${context}[^,\\]}]*`, 'g'), match =>
path.relative(cacheDir, match),
)
.replace(/\\/g, '/');
return crypto
.createHash('sha256')
.update(sorted)
.digest('hex');
}
module.exports = relateContextToCacheDir;