diff options
Diffstat (limited to 'node_modules/webpack/lib/HashedModuleIdsPlugin.js')
-rw-r--r-- | node_modules/webpack/lib/HashedModuleIdsPlugin.js | 95 |
1 files changed, 53 insertions, 42 deletions
diff --git a/node_modules/webpack/lib/HashedModuleIdsPlugin.js b/node_modules/webpack/lib/HashedModuleIdsPlugin.js index 40a491b07..aeb9f1d93 100644 --- a/node_modules/webpack/lib/HashedModuleIdsPlugin.js +++ b/node_modules/webpack/lib/HashedModuleIdsPlugin.js @@ -1,42 +1,53 @@ -/*
- 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;
+/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; +const createHash = require("./util/createHash"); + +const validateOptions = require("schema-utils"); +const schema = require("../schemas/plugins/HashedModuleIdsPlugin.json"); + +class HashedModuleIdsPlugin { + constructor(options) { + validateOptions(schema, options || {}, "Hashed Module Ids Plugin"); + + this.options = Object.assign( + { + context: null, + hashFunction: "md4", + hashDigest: "base64", + hashDigestLength: 4 + }, + options + ); + } + + apply(compiler) { + const options = this.options; + compiler.hooks.compilation.tap("HashedModuleIdsPlugin", compilation => { + const usedIds = new Set(); + compilation.hooks.beforeModuleIds.tap( + "HashedModuleIdsPlugin", + modules => { + for (const module of modules) { + 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; |