| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
 
- const validateOptions = require("schema-utils");
 
- const schema = require("../schemas/plugins/LoaderOptionsPlugin.json");
 
- /** @typedef {import("../declarations/plugins/LoaderOptionsPlugin").LoaderOptionsPluginOptions} LoaderOptionsPluginOptions */
 
- class LoaderOptionsPlugin {
 
- 	/**
 
- 	 * @param {LoaderOptionsPluginOptions} options options object
 
- 	 */
 
- 	constructor(options) {
 
- 		validateOptions(schema, options || {}, "Loader Options Plugin");
 
- 		if (typeof options !== "object") options = {};
 
- 		if (!options.test) {
 
- 			options.test = {
 
- 				test: () => true
 
- 			};
 
- 		}
 
- 		this.options = options;
 
- 	}
 
- 	apply(compiler) {
 
- 		const options = this.options;
 
- 		compiler.hooks.compilation.tap("LoaderOptionsPlugin", compilation => {
 
- 			compilation.hooks.normalModuleLoader.tap(
 
- 				"LoaderOptionsPlugin",
 
- 				(context, module) => {
 
- 					const resource = module.resource;
 
- 					if (!resource) return;
 
- 					const i = resource.indexOf("?");
 
- 					if (
 
- 						ModuleFilenameHelpers.matchObject(
 
- 							options,
 
- 							i < 0 ? resource : resource.substr(0, i)
 
- 						)
 
- 					) {
 
- 						for (const key of Object.keys(options)) {
 
- 							if (key === "include" || key === "exclude" || key === "test") {
 
- 								continue;
 
- 							}
 
- 							context[key] = options[key];
 
- 						}
 
- 					}
 
- 				}
 
- 			);
 
- 		});
 
- 	}
 
- }
 
- module.exports = LoaderOptionsPlugin;
 
 
  |