You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.2 KiB
55 lines
1.2 KiB
/* |
|
MIT License http://www.opensource.org/licenses/mit-license.php |
|
Author Tobias Koppers @sokra |
|
*/ |
|
|
|
"use strict"; |
|
|
|
const DllModuleFactory = require("./DllModuleFactory"); |
|
const DllEntryDependency = require("./dependencies/DllEntryDependency"); |
|
const EntryDependency = require("./dependencies/EntryDependency"); |
|
|
|
class DllEntryPlugin { |
|
constructor(context, entries, options) { |
|
this.context = context; |
|
this.entries = entries; |
|
this.options = options; |
|
} |
|
|
|
apply(compiler) { |
|
compiler.hooks.compilation.tap( |
|
"DllEntryPlugin", |
|
(compilation, { normalModuleFactory }) => { |
|
const dllModuleFactory = new DllModuleFactory(); |
|
compilation.dependencyFactories.set( |
|
DllEntryDependency, |
|
dllModuleFactory |
|
); |
|
compilation.dependencyFactories.set( |
|
EntryDependency, |
|
normalModuleFactory |
|
); |
|
} |
|
); |
|
compiler.hooks.make.tapAsync("DllEntryPlugin", (compilation, callback) => { |
|
compilation.addEntry( |
|
this.context, |
|
new DllEntryDependency( |
|
this.entries.map((e, idx) => { |
|
const dep = new EntryDependency(e); |
|
dep.loc = { |
|
name: this.options.name, |
|
index: idx |
|
}; |
|
return dep; |
|
}), |
|
this.options.name |
|
), |
|
this.options, |
|
callback |
|
); |
|
}); |
|
} |
|
} |
|
|
|
module.exports = DllEntryPlugin;
|
|
|