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