summaryrefslogtreecommitdiffstats
path: root/node_modules/webpack/lib/MultiEntryPlugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/MultiEntryPlugin.js')
-rw-r--r--node_modules/webpack/lib/MultiEntryPlugin.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/MultiEntryPlugin.js b/node_modules/webpack/lib/MultiEntryPlugin.js
new file mode 100644
index 0000000..b38a823
--- /dev/null
+++ b/node_modules/webpack/lib/MultiEntryPlugin.js
@@ -0,0 +1,80 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const MultiEntryDependency = require("./dependencies/MultiEntryDependency");
+const SingleEntryDependency = require("./dependencies/SingleEntryDependency");
+const MultiModuleFactory = require("./MultiModuleFactory");
+
+/** @typedef {import("./Compiler")} Compiler */
+
+class MultiEntryPlugin {
+ /**
+ * The MultiEntryPlugin is invoked whenever this.options.entry value is an array of paths
+ * @param {string} context context path
+ * @param {string[]} entries array of entry paths
+ * @param {string} name entry key name
+ */
+ constructor(context, entries, name) {
+ this.context = context;
+ this.entries = entries;
+ this.name = name;
+ }
+
+ /**
+ * @param {Compiler} compiler the compiler instance
+ * @returns {void}
+ */
+ 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);
+ }
+ );
+ }
+
+ /**
+ * @param {string[]} entries each entry path string
+ * @param {string} name name of the entry
+ * @returns {MultiEntryDependency} returns a constructed Dependency
+ */
+ static createDependency(entries, name) {
+ return new MultiEntryDependency(
+ entries.map((e, idx) => {
+ const dep = new SingleEntryDependency(e);
+ // Because entrypoints are not dependencies found in an
+ // existing module, we give it a synthetic id
+ dep.loc = {
+ name,
+ index: idx
+ };
+ return dep;
+ }),
+ name
+ );
+ }
+}
+
+module.exports = MultiEntryPlugin;