UNPKG

1.8 kBJavaScriptView Raw
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5"use strict";
6
7const ParserHelpers = require("./ParserHelpers");
8const ConstDependency = require("./dependencies/ConstDependency");
9const NullFactory = require("./NullFactory");
10
11module.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};