diff options
Diffstat (limited to 'node_modules/webpack/lib/ids/NamedModuleIdsPlugin.js')
| -rw-r--r-- | node_modules/webpack/lib/ids/NamedModuleIdsPlugin.js | 69 |
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; |
