| /* |
| MIT License http://www.opensource.org/licenses/mit-license.php |
| Author Tobias Koppers @sokra |
| */ |
| "use strict"; |
| |
| const DllEntryDependency = require("./dependencies/DllEntryDependency"); |
| const SingleEntryDependency = require("./dependencies/SingleEntryDependency"); |
| const DllModuleFactory = require("./DllModuleFactory"); |
| |
| class DllEntryPlugin { |
| constructor(context, entries, name) { |
| this.context = context; |
| this.entries = entries; |
| this.name = name; |
| } |
| |
| apply(compiler) { |
| compiler.hooks.compilation.tap( |
| "DllEntryPlugin", |
| (compilation, { normalModuleFactory }) => { |
| const dllModuleFactory = new DllModuleFactory(); |
| compilation.dependencyFactories.set( |
| DllEntryDependency, |
| dllModuleFactory |
| ); |
| compilation.dependencyFactories.set( |
| SingleEntryDependency, |
| normalModuleFactory |
| ); |
| } |
| ); |
| compiler.hooks.make.tapAsync("DllEntryPlugin", (compilation, callback) => { |
| compilation.addEntry( |
| this.context, |
| new DllEntryDependency( |
| this.entries.map((e, idx) => { |
| const dep = new SingleEntryDependency(e); |
| dep.loc = { |
| name: this.name, |
| index: idx |
| }; |
| return dep; |
| }), |
| this.name |
| ), |
| this.name, |
| callback |
| ); |
| }); |
| } |
| } |
| |
| module.exports = DllEntryPlugin; |