From de98e0b232509d5f40c135d540a70e415272ff85 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 3 May 2017 15:35:00 +0200 Subject: node_modules --- node_modules/webpack/lib/DynamicEntryPlugin.js | 59 ++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 node_modules/webpack/lib/DynamicEntryPlugin.js (limited to 'node_modules/webpack/lib/DynamicEntryPlugin.js') diff --git a/node_modules/webpack/lib/DynamicEntryPlugin.js b/node_modules/webpack/lib/DynamicEntryPlugin.js new file mode 100644 index 000000000..2079e1276 --- /dev/null +++ b/node_modules/webpack/lib/DynamicEntryPlugin.js @@ -0,0 +1,59 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Naoyuki Kanezawa @nkzawa +*/ +"use strict"; + +const MultiEntryDependency = require("./dependencies/MultiEntryDependency"); +const SingleEntryDependency = require("./dependencies/SingleEntryDependency"); +const MultiModuleFactory = require("./MultiModuleFactory"); +const MultiEntryPlugin = require("./MultiEntryPlugin"); +const SingleEntryPlugin = require("./SingleEntryPlugin"); + +class DynamicEntryPlugin { + constructor(context, entry) { + this.context = context; + this.entry = entry; + } + + apply(compiler) { + compiler.plugin("compilation", (compilation, params) => { + const multiModuleFactory = new MultiModuleFactory(); + const normalModuleFactory = params.normalModuleFactory; + + compilation.dependencyFactories.set(MultiEntryDependency, multiModuleFactory); + compilation.dependencyFactories.set(SingleEntryDependency, normalModuleFactory); + }); + + compiler.plugin("make", (compilation, callback) => { + const addEntry = (entry, name) => { + const dep = DynamicEntryPlugin.createDependency(entry, name); + return new Promise((resolve, reject) => { + compilation.addEntry(this.context, dep, name, (err) => { + if(err) return reject(err); + resolve(); + }); + }); + }; + + Promise.resolve(this.entry()).then((entry) => { + if(typeof entry === "string" || Array.isArray(entry)) { + addEntry(entry, "main").then(() => callback(), callback); + } else if(typeof entry === "object") { + Promise.all(Object.keys(entry).map((name) => { + return addEntry(entry[name], name); + })).then(() => callback(), callback); + } + }); + }); + } +} + +module.exports = DynamicEntryPlugin; + +DynamicEntryPlugin.createDependency = function(entry, name) { + if(Array.isArray(entry)) + return MultiEntryPlugin.createDependency(entry, name); + else + return SingleEntryPlugin.createDependency(entry, name); +}; -- cgit v1.2.3