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.
		
		
		
		
		
			
		
			
				
					
					
						
							74 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							74 lines
						
					
					
						
							1.9 KiB
						
					
					
				/* | 
						|
	MIT License http://www.opensource.org/licenses/mit-license.php | 
						|
	Author Tobias Koppers @sokra | 
						|
*/ | 
						|
"use strict"; | 
						|
 | 
						|
const RequireEnsureItemDependency = require("./RequireEnsureItemDependency"); | 
						|
const RequireEnsureDependency = require("./RequireEnsureDependency"); | 
						|
 | 
						|
const NullFactory = require("../NullFactory"); | 
						|
 | 
						|
const RequireEnsureDependenciesBlockParserPlugin = require("./RequireEnsureDependenciesBlockParserPlugin"); | 
						|
 | 
						|
const ParserHelpers = require("../ParserHelpers"); | 
						|
 | 
						|
class RequireEnsurePlugin { | 
						|
	apply(compiler) { | 
						|
		compiler.hooks.compilation.tap( | 
						|
			"RequireEnsurePlugin", | 
						|
			(compilation, { normalModuleFactory }) => { | 
						|
				compilation.dependencyFactories.set( | 
						|
					RequireEnsureItemDependency, | 
						|
					normalModuleFactory | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					RequireEnsureItemDependency, | 
						|
					new RequireEnsureItemDependency.Template() | 
						|
				); | 
						|
 | 
						|
				compilation.dependencyFactories.set( | 
						|
					RequireEnsureDependency, | 
						|
					new NullFactory() | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					RequireEnsureDependency, | 
						|
					new RequireEnsureDependency.Template() | 
						|
				); | 
						|
 | 
						|
				const handler = (parser, parserOptions) => { | 
						|
					if ( | 
						|
						parserOptions.requireEnsure !== undefined && | 
						|
						!parserOptions.requireEnsure | 
						|
					) | 
						|
						return; | 
						|
 | 
						|
					new RequireEnsureDependenciesBlockParserPlugin().apply(parser); | 
						|
					parser.hooks.evaluateTypeof | 
						|
						.for("require.ensure") | 
						|
						.tap( | 
						|
							"RequireEnsurePlugin", | 
						|
							ParserHelpers.evaluateToString("function") | 
						|
						); | 
						|
					parser.hooks.typeof | 
						|
						.for("require.ensure") | 
						|
						.tap( | 
						|
							"RequireEnsurePlugin", | 
						|
							ParserHelpers.toConstantDependency( | 
						|
								parser, | 
						|
								JSON.stringify("function") | 
						|
							) | 
						|
						); | 
						|
				}; | 
						|
 | 
						|
				normalModuleFactory.hooks.parser | 
						|
					.for("javascript/auto") | 
						|
					.tap("RequireEnsurePlugin", handler); | 
						|
				normalModuleFactory.hooks.parser | 
						|
					.for("javascript/dynamic") | 
						|
					.tap("RequireEnsurePlugin", handler); | 
						|
			} | 
						|
		); | 
						|
	} | 
						|
} | 
						|
module.exports = RequireEnsurePlugin;
 | 
						|
 |