Projekt

Obecné

Profil

Stáhnout (1.76 KB) Statistiky
| Větev: | Revize:
1
/*
2
	MIT License http://www.opensource.org/licenses/mit-license.php
3
	Author Tobias Koppers @sokra
4
*/
5
"use strict";
6

    
7
const ParserHelpers = require("./ParserHelpers");
8
const ConstDependency = require("./dependencies/ConstDependency");
9
const NullFactory = require("./NullFactory");
10

    
11
module.exports = class RequireJsStuffPlugin {
12
	apply(compiler) {
13
		compiler.hooks.compilation.tap(
14
			"RequireJsStuffPlugin",
15
			(compilation, { normalModuleFactory }) => {
16
				compilation.dependencyFactories.set(ConstDependency, new NullFactory());
17
				compilation.dependencyTemplates.set(
18
					ConstDependency,
19
					new ConstDependency.Template()
20
				);
21
				const handler = (parser, parserOptions) => {
22
					if (parserOptions.requireJs !== undefined && !parserOptions.requireJs)
23
						return;
24

    
25
					parser.hooks.call
26
						.for("require.config")
27
						.tap(
28
							"RequireJsStuffPlugin",
29
							ParserHelpers.toConstantDependency(parser, "undefined")
30
						);
31
					parser.hooks.call
32
						.for("requirejs.config")
33
						.tap(
34
							"RequireJsStuffPlugin",
35
							ParserHelpers.toConstantDependency(parser, "undefined")
36
						);
37

    
38
					parser.hooks.expression
39
						.for("require.version")
40
						.tap(
41
							"RequireJsStuffPlugin",
42
							ParserHelpers.toConstantDependency(
43
								parser,
44
								JSON.stringify("0.0.0")
45
							)
46
						);
47
					parser.hooks.expression
48
						.for("requirejs.onError")
49
						.tap(
50
							"RequireJsStuffPlugin",
51
							ParserHelpers.toConstantDependencyWithWebpackRequire(
52
								parser,
53
								"__webpack_require__.oe"
54
							)
55
						);
56
				};
57
				normalModuleFactory.hooks.parser
58
					.for("javascript/auto")
59
					.tap("RequireJsStuffPlugin", handler);
60
				normalModuleFactory.hooks.parser
61
					.for("javascript/dynamic")
62
					.tap("RequireJsStuffPlugin", handler);
63
			}
64
		);
65
	}
66
};
(115-115/144)