summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/ids/NamedModuleIdsPlugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/ids/NamedModuleIdsPlugin.js')
-rw-r--r--node_modules/webpack/lib/ids/NamedModuleIdsPlugin.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/ids/NamedModuleIdsPlugin.js b/node_modules/webpack/lib/ids/NamedModuleIdsPlugin.js
new file mode 100644
index 00000000..7ae3c3d8
--- /dev/null
+++ b/node_modules/webpack/lib/ids/NamedModuleIdsPlugin.js
@@ -0,0 +1,69 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+const { compareModulesByIdentifier } = require("../util/comparators");
+const {
+ getShortModuleName,
+ getLongModuleName,
+ assignNames,
+ getUsedModuleIdsAndModules,
+ assignAscendingModuleIds
+} = require("./IdHelpers");
+
+/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} Output */
+/** @typedef {import("../Compiler")} Compiler */
+/** @typedef {import("../Module")} Module */
+
+/**
+ * @typedef {Object} NamedModuleIdsPluginOptions
+ * @property {string} [context] context
+ */
+
+class NamedModuleIdsPlugin {
+ /**
+ * @param {NamedModuleIdsPluginOptions} [options] options
+ */
+ constructor(options = {}) {
+ this.options = options;
+ }
+
+ /**
+ * Apply the plugin
+ * @param {Compiler} compiler the compiler instance
+ * @returns {void}
+ */
+ apply(compiler) {
+ const { root } = compiler;
+ compiler.hooks.compilation.tap("NamedModuleIdsPlugin", compilation => {
+ const hashFunction =
+ /** @type {NonNullable<Output["hashFunction"]>} */
+ (compilation.outputOptions.hashFunction);
+ compilation.hooks.moduleIds.tap("NamedModuleIdsPlugin", () => {
+ const chunkGraph = compilation.chunkGraph;
+ const context = this.options.context
+ ? this.options.context
+ : compiler.context;
+
+ const [usedIds, modules] = getUsedModuleIdsAndModules(compilation);
+ const unnamedModules = assignNames(
+ modules,
+ m => getShortModuleName(m, context, root),
+ (m, shortName) =>
+ getLongModuleName(shortName, m, context, hashFunction, root),
+ compareModulesByIdentifier,
+ usedIds,
+ (m, name) => chunkGraph.setModuleId(m, name)
+ );
+ if (unnamedModules.length > 0) {
+ assignAscendingModuleIds(usedIds, unnamedModules, compilation);
+ }
+ });
+ });
+ }
+}
+
+module.exports = NamedModuleIdsPlugin;