summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/ids/NamedChunkIdsPlugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/ids/NamedChunkIdsPlugin.js')
-rw-r--r--node_modules/webpack/lib/ids/NamedChunkIdsPlugin.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/ids/NamedChunkIdsPlugin.js b/node_modules/webpack/lib/ids/NamedChunkIdsPlugin.js
new file mode 100644
index 00000000..6a668937
--- /dev/null
+++ b/node_modules/webpack/lib/ids/NamedChunkIdsPlugin.js
@@ -0,0 +1,93 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+const { compareChunksNatural } = require("../util/comparators");
+const {
+ getShortChunkName,
+ getLongChunkName,
+ assignNames,
+ getUsedChunkIds,
+ assignAscendingChunkIds
+} = require("./IdHelpers");
+
+/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} Output */
+/** @typedef {import("../Chunk")} Chunk */
+/** @typedef {import("../Compiler")} Compiler */
+/** @typedef {import("../Module")} Module */
+
+/**
+ * @typedef {Object} NamedChunkIdsPluginOptions
+ * @property {string} [context] context
+ * @property {string} [delimiter] delimiter
+ */
+
+class NamedChunkIdsPlugin {
+ /**
+ * @param {NamedChunkIdsPluginOptions=} options options
+ */
+ constructor(options) {
+ this.delimiter = (options && options.delimiter) || "-";
+ this.context = options && options.context;
+ }
+
+ /**
+ * Apply the plugin
+ * @param {Compiler} compiler the compiler instance
+ * @returns {void}
+ */
+ apply(compiler) {
+ compiler.hooks.compilation.tap("NamedChunkIdsPlugin", compilation => {
+ const hashFunction =
+ /** @type {NonNullable<Output["hashFunction"]>} */
+ (compilation.outputOptions.hashFunction);
+ compilation.hooks.chunkIds.tap("NamedChunkIdsPlugin", chunks => {
+ const chunkGraph = compilation.chunkGraph;
+ const context = this.context ? this.context : compiler.context;
+ const delimiter = this.delimiter;
+
+ const unnamedChunks = assignNames(
+ Array.from(chunks).filter(chunk => {
+ if (chunk.name) {
+ chunk.id = chunk.name;
+ chunk.ids = [chunk.name];
+ }
+ return chunk.id === null;
+ }),
+ chunk =>
+ getShortChunkName(
+ chunk,
+ chunkGraph,
+ context,
+ delimiter,
+ hashFunction,
+ compiler.root
+ ),
+ chunk =>
+ getLongChunkName(
+ chunk,
+ chunkGraph,
+ context,
+ delimiter,
+ hashFunction,
+ compiler.root
+ ),
+ compareChunksNatural(chunkGraph),
+ getUsedChunkIds(compilation),
+ (chunk, name) => {
+ chunk.id = name;
+ chunk.ids = [name];
+ }
+ );
+ if (unnamedChunks.length > 0) {
+ assignAscendingChunkIds(unnamedChunks, compilation);
+ }
+ });
+ });
+ }
+}
+
+module.exports = NamedChunkIdsPlugin;