Sha256: cadb742f2b163d939bd9d7126f03e624bf1b0afb9da8a01a1e7fd5fc7df37351
Contents?: true
Size: 1.12 KB
Versions: 10
Compression:
Stored size: 1.12 KB
Contents
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const createHash = require("crypto").createHash; class HashedModuleIdsPlugin { constructor(options) { this.options = Object.assign({ hashFunction: "md5", hashDigest: "base64", hashDigestLength: 4 }, options); } apply(compiler) { const options = this.options; compiler.plugin("compilation", (compilation) => { const usedIds = new Set(); compilation.plugin("before-module-ids", (modules) => { modules.forEach((module) => { if(module.id === null && module.libIdent) { const id = module.libIdent({ context: this.options.context || compiler.options.context }); const hash = createHash(options.hashFunction); hash.update(id); const hashId = hash.digest(options.hashDigest); let len = options.hashDigestLength; while(usedIds.has(hashId.substr(0, len))) len++; module.id = hashId.substr(0, len); usedIds.add(module.id); } }); }); }); } } module.exports = HashedModuleIdsPlugin;
Version data entries
10 entries across 6 versions & 3 rubygems