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.
		
		
		
		
		
			
		
			
				
					
					
						
							46 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							46 lines
						
					
					
						
							1.5 KiB
						
					
					
				/* | 
						|
	MIT License http://www.opensource.org/licenses/mit-license.php | 
						|
	Author Tobias Koppers @sokra | 
						|
*/ | 
						|
"use strict"; | 
						|
 | 
						|
const SingleEntryPlugin = require("./SingleEntryPlugin"); | 
						|
const MultiEntryPlugin = require("./MultiEntryPlugin"); | 
						|
const DynamicEntryPlugin = require("./DynamicEntryPlugin"); | 
						|
 | 
						|
/** @typedef {import("../declarations/WebpackOptions").EntryItem} EntryItem */ | 
						|
/** @typedef {import("./Compiler")} Compiler */ | 
						|
 | 
						|
/** | 
						|
 * @param {string} context context path | 
						|
 * @param {EntryItem} item entry array or single path | 
						|
 * @param {string} name entry key name | 
						|
 * @returns {SingleEntryPlugin | MultiEntryPlugin} returns either a single or multi entry plugin | 
						|
 */ | 
						|
const itemToPlugin = (context, item, name) => { | 
						|
	if (Array.isArray(item)) { | 
						|
		return new MultiEntryPlugin(context, item, name); | 
						|
	} | 
						|
	return new SingleEntryPlugin(context, item, name); | 
						|
}; | 
						|
 | 
						|
module.exports = class EntryOptionPlugin { | 
						|
	/** | 
						|
	 * @param {Compiler} compiler the compiler instance one is tapping into | 
						|
	 * @returns {void} | 
						|
	 */ | 
						|
	apply(compiler) { | 
						|
		compiler.hooks.entryOption.tap("EntryOptionPlugin", (context, entry) => { | 
						|
			if (typeof entry === "string" || Array.isArray(entry)) { | 
						|
				itemToPlugin(context, entry, "main").apply(compiler); | 
						|
			} else if (typeof entry === "object") { | 
						|
				for (const name of Object.keys(entry)) { | 
						|
					itemToPlugin(context, entry[name], name).apply(compiler); | 
						|
				} | 
						|
			} else if (typeof entry === "function") { | 
						|
				new DynamicEntryPlugin(context, entry).apply(compiler); | 
						|
			} | 
						|
			return true; | 
						|
		}); | 
						|
	} | 
						|
};
 | 
						|
 |