123456789101112131415161718192021222324252627282930 |
- 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;
|