WXL
4 天以前 9bce51f651aad297ef9eb6df832bfdaf1de05d84
node_modules/webpack/lib/ids/HashedModuleIdsPlugin.js
@@ -9,7 +9,6 @@
const {
   compareModulesByPreOrderIndexOrIdentifier
} = require("../util/comparators");
const createSchemaValidation = require("../util/create-schema-validation");
const createHash = require("../util/createHash");
const {
   getFullModuleName,
@@ -19,41 +18,38 @@
/** @typedef {import("../../declarations/plugins/ids/HashedModuleIdsPlugin").HashedModuleIdsPluginOptions} HashedModuleIdsPluginOptions */
/** @typedef {import("../Compiler")} Compiler */
const validate = createSchemaValidation(
   require("../../schemas/plugins/ids/HashedModuleIdsPlugin.check"),
   () => require("../../schemas/plugins/ids/HashedModuleIdsPlugin.json"),
   {
      name: "Hashed Module Ids Plugin",
      baseDataPath: "options"
   }
);
const PLUGIN_NAME = "HashedModuleIdsPlugin";
class HashedModuleIdsPlugin {
   /**
    * Creates an instance of HashedModuleIdsPlugin.
    * @param {HashedModuleIdsPluginOptions=} options options object
    */
   constructor(options = {}) {
      validate(options);
      /** @type {Required<Omit<HashedModuleIdsPluginOptions, "context">> & { context?: string | undefined }} */
      this.options = {
         context: undefined,
         hashFunction: DEFAULTS.HASH_FUNCTION,
         hashDigest: "base64",
         hashDigestLength: 4,
         ...options
      };
      /** @type {HashedModuleIdsPluginOptions} */
      this.options = options;
   }
   /**
    * Apply the plugin
    * Applies the plugin by registering its hooks on the compiler.
    * @param {Compiler} compiler the compiler instance
    * @returns {void}
    */
   apply(compiler) {
      const options = this.options;
      compiler.hooks.validate.tap(PLUGIN_NAME, () => {
         compiler.validate(
            () => require("../../schemas/plugins/ids/HashedModuleIdsPlugin.json"),
            this.options,
            {
               name: "Hashed Module Ids Plugin",
               baseDataPath: "options"
            },
            (options) =>
               require("../../schemas/plugins/ids/HashedModuleIdsPlugin.check")(
                  options
               )
         );
      });
      compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
         compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
            const chunkGraph = compilation.chunkGraph;
@@ -68,13 +64,11 @@
            for (const module of modulesInNaturalOrder) {
               const ident = getFullModuleName(module, context, compiler.root);
               const hash = createHash(
                  /** @type {NonNullable<HashedModuleIdsPluginOptions["hashFunction"]>} */ (
                     options.hashFunction
                  )
                  this.options.hashFunction || DEFAULTS.HASH_FUNCTION
               );
               hash.update(ident || "");
               const hashId = hash.digest(options.hashDigest);
               let len = options.hashDigestLength;
               const hashId = hash.digest(this.options.hashDigest || "base64");
               let len = this.options.hashDigestLength || 4;
               while (usedIds.has(hashId.slice(0, len))) {
                  /** @type {number} */ (len)++;
               }