| /* |
| MIT License http://www.opensource.org/licenses/mit-license.php |
| Author Tobias Koppers @sokra |
| */ |
| "use strict"; |
| |
| module.exports = class RuntimeChunkPlugin { |
| constructor(options) { |
| this.options = Object.assign( |
| { |
| name: entrypoint => `runtime~${entrypoint.name}` |
| }, |
| options |
| ); |
| } |
| |
| apply(compiler) { |
| compiler.hooks.thisCompilation.tap("RuntimeChunkPlugin", compilation => { |
| compilation.hooks.optimizeChunksAdvanced.tap("RuntimeChunkPlugin", () => { |
| for (const entrypoint of compilation.entrypoints.values()) { |
| const chunk = entrypoint.getRuntimeChunk(); |
| let name = this.options.name; |
| if (typeof name === "function") { |
| name = name(entrypoint); |
| } |
| if ( |
| chunk.getNumberOfModules() > 0 || |
| !chunk.preventIntegration || |
| chunk.name !== name |
| ) { |
| const newChunk = compilation.addChunk(name); |
| newChunk.preventIntegration = true; |
| entrypoint.unshiftChunk(newChunk); |
| newChunk.addGroup(entrypoint); |
| entrypoint.setRuntimeChunk(newChunk); |
| } |
| } |
| }); |
| }); |
| } |
| }; |