1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- "use strict";
- const MultiEntryDependency = require("./dependencies/MultiEntryDependency");
- const SingleEntryDependency = require("./dependencies/SingleEntryDependency");
- const MultiModuleFactory = require("./MultiModuleFactory");
- class MultiEntryPlugin {
-
- constructor(context, entries, name) {
- this.context = context;
- this.entries = entries;
- this.name = name;
- }
-
- apply(compiler) {
- compiler.hooks.compilation.tap(
- "MultiEntryPlugin",
- (compilation, { normalModuleFactory }) => {
- const multiModuleFactory = new MultiModuleFactory();
- compilation.dependencyFactories.set(
- MultiEntryDependency,
- multiModuleFactory
- );
- compilation.dependencyFactories.set(
- SingleEntryDependency,
- normalModuleFactory
- );
- }
- );
- compiler.hooks.make.tapAsync(
- "MultiEntryPlugin",
- (compilation, callback) => {
- const { context, entries, name } = this;
- const dep = MultiEntryPlugin.createDependency(entries, name);
- compilation.addEntry(context, dep, name, callback);
- }
- );
- }
-
- static createDependency(entries, name) {
- return new MultiEntryDependency(
- entries.map((e, idx) => {
- const dep = new SingleEntryDependency(e);
-
-
- dep.loc = {
- name,
- index: idx
- };
- return dep;
- }),
- name
- );
- }
- }
- module.exports = MultiEntryPlugin;
|