|
2 | 2 | MIT License http://www.opensource.org/licenses/mit-license.php |
3 | 3 | Author Tobias Koppers @sokra |
4 | 4 | */ |
5 | | -var path = require("path"); |
6 | | -var AMDRequireDependency = require("./AMDRequireDependency"); |
7 | | -var AMDRequireItemDependency = require("./AMDRequireItemDependency"); |
8 | | -var AMDRequireArrayDependency = require("./AMDRequireArrayDependency"); |
9 | | -var AMDRequireContextDependency = require("./AMDRequireContextDependency"); |
10 | | -var AMDDefineDependency = require("./AMDDefineDependency"); |
11 | | -var UnsupportedDependency = require("./UnsupportedDependency"); |
12 | | -var LocalModuleDependency = require("./LocalModuleDependency"); |
13 | | - |
14 | | -var NullFactory = require("../NullFactory"); |
15 | | - |
16 | | -var AMDRequireDependenciesBlockParserPlugin = require("./AMDRequireDependenciesBlockParserPlugin"); |
17 | | -var AMDDefineDependencyParserPlugin = require("./AMDDefineDependencyParserPlugin"); |
18 | | - |
19 | | -var AliasPlugin = require("enhanced-resolve/lib/AliasPlugin"); |
20 | | - |
21 | | -var BasicEvaluatedExpression = require("../BasicEvaluatedExpression"); |
22 | | -var ParserHelpers = require("../ParserHelpers"); |
23 | | - |
24 | | -function AMDPlugin(options, amdOptions) { |
25 | | - this.amdOptions = amdOptions; |
26 | | - this.options = options; |
27 | | -} |
28 | | -module.exports = AMDPlugin; |
29 | | - |
30 | | -AMDPlugin.prototype.apply = function(compiler) { |
31 | | - var options = this.options; |
32 | | - var amdOptions = this.amdOptions; |
33 | | - compiler.plugin("compilation", function(compilation, params) { |
34 | | - var normalModuleFactory = params.normalModuleFactory; |
35 | | - var contextModuleFactory = params.contextModuleFactory; |
36 | | - |
37 | | - compilation.dependencyFactories.set(AMDRequireDependency, new NullFactory()); |
38 | | - compilation.dependencyTemplates.set(AMDRequireDependency, new AMDRequireDependency.Template()); |
39 | | - |
40 | | - compilation.dependencyFactories.set(AMDRequireItemDependency, normalModuleFactory); |
41 | | - compilation.dependencyTemplates.set(AMDRequireItemDependency, new AMDRequireItemDependency.Template()); |
42 | | - |
43 | | - compilation.dependencyFactories.set(AMDRequireArrayDependency, new NullFactory()); |
44 | | - compilation.dependencyTemplates.set(AMDRequireArrayDependency, new AMDRequireArrayDependency.Template()); |
45 | | - |
46 | | - compilation.dependencyFactories.set(AMDRequireContextDependency, contextModuleFactory); |
47 | | - compilation.dependencyTemplates.set(AMDRequireContextDependency, new AMDRequireContextDependency.Template()); |
48 | | - |
49 | | - compilation.dependencyFactories.set(AMDDefineDependency, new NullFactory()); |
50 | | - compilation.dependencyTemplates.set(AMDDefineDependency, new AMDDefineDependency.Template()); |
51 | | - |
52 | | - compilation.dependencyFactories.set(UnsupportedDependency, new NullFactory()); |
53 | | - compilation.dependencyTemplates.set(UnsupportedDependency, new UnsupportedDependency.Template()); |
54 | | - |
55 | | - compilation.dependencyFactories.set(LocalModuleDependency, new NullFactory()); |
56 | | - compilation.dependencyTemplates.set(LocalModuleDependency, new LocalModuleDependency.Template()); |
57 | | - |
58 | | - params.normalModuleFactory.plugin("parser", function(parser, parserOptions) { |
59 | | - |
60 | | - if(typeof parserOptions.amd !== "undefined" && !parserOptions.amd) |
61 | | - return; |
62 | | - |
63 | | - function setExpressionToModule(expr, module) { |
64 | | - parser.plugin("expression " + expr, function(expr) { |
65 | | - var dep = new AMDRequireItemDependency(module, expr.range); |
66 | | - dep.userRequest = expr; |
| 5 | +"use strict"; |
| 6 | + |
| 7 | +const path = require("path"); |
| 8 | +const AMDRequireDependency = require("./AMDRequireDependency"); |
| 9 | +const AMDRequireItemDependency = require("./AMDRequireItemDependency"); |
| 10 | +const AMDRequireArrayDependency = require("./AMDRequireArrayDependency"); |
| 11 | +const AMDRequireContextDependency = require("./AMDRequireContextDependency"); |
| 12 | +const AMDDefineDependency = require("./AMDDefineDependency"); |
| 13 | +const UnsupportedDependency = require("./UnsupportedDependency"); |
| 14 | +const LocalModuleDependency = require("./LocalModuleDependency"); |
| 15 | + |
| 16 | +const NullFactory = require("../NullFactory"); |
| 17 | + |
| 18 | +const AMDRequireDependenciesBlockParserPlugin = require("./AMDRequireDependenciesBlockParserPlugin"); |
| 19 | +const AMDDefineDependencyParserPlugin = require("./AMDDefineDependencyParserPlugin"); |
| 20 | + |
| 21 | +const AliasPlugin = require("enhanced-resolve/lib/AliasPlugin"); |
| 22 | + |
| 23 | +const BasicEvaluatedExpression = require("../BasicEvaluatedExpression"); |
| 24 | +const ParserHelpers = require("../ParserHelpers"); |
| 25 | + |
| 26 | +class AMDPlugin { |
| 27 | + constructor(options, amdOptions) { |
| 28 | + this.amdOptions = amdOptions; |
| 29 | + this.options = options; |
| 30 | + } |
| 31 | + |
| 32 | + apply(compiler) { |
| 33 | + const options = this.options; |
| 34 | + const amdOptions = this.amdOptions; |
| 35 | + compiler.plugin("compilation", (compilation, params) => { |
| 36 | + const normalModuleFactory = params.normalModuleFactory; |
| 37 | + const contextModuleFactory = params.contextModuleFactory; |
| 38 | + |
| 39 | + compilation.dependencyFactories.set(AMDRequireDependency, new NullFactory()); |
| 40 | + compilation.dependencyTemplates.set(AMDRequireDependency, new AMDRequireDependency.Template()); |
| 41 | + |
| 42 | + compilation.dependencyFactories.set(AMDRequireItemDependency, normalModuleFactory); |
| 43 | + compilation.dependencyTemplates.set(AMDRequireItemDependency, new AMDRequireItemDependency.Template()); |
| 44 | + |
| 45 | + compilation.dependencyFactories.set(AMDRequireArrayDependency, new NullFactory()); |
| 46 | + compilation.dependencyTemplates.set(AMDRequireArrayDependency, new AMDRequireArrayDependency.Template()); |
| 47 | + |
| 48 | + compilation.dependencyFactories.set(AMDRequireContextDependency, contextModuleFactory); |
| 49 | + compilation.dependencyTemplates.set(AMDRequireContextDependency, new AMDRequireContextDependency.Template()); |
| 50 | + |
| 51 | + compilation.dependencyFactories.set(AMDDefineDependency, new NullFactory()); |
| 52 | + compilation.dependencyTemplates.set(AMDDefineDependency, new AMDDefineDependency.Template()); |
| 53 | + |
| 54 | + compilation.dependencyFactories.set(UnsupportedDependency, new NullFactory()); |
| 55 | + compilation.dependencyTemplates.set(UnsupportedDependency, new UnsupportedDependency.Template()); |
| 56 | + |
| 57 | + compilation.dependencyFactories.set(LocalModuleDependency, new NullFactory()); |
| 58 | + compilation.dependencyTemplates.set(LocalModuleDependency, new LocalModuleDependency.Template()); |
| 59 | + |
| 60 | + params.normalModuleFactory.plugin("parser", (parser, parserOptions) => { |
| 61 | + |
| 62 | + if(typeof parserOptions.amd !== "undefined" && !parserOptions.amd) |
| 63 | + return; |
| 64 | + |
| 65 | + function setExpressionToModule(expr, module) { |
| 66 | + parser.plugin("expression " + expr, (expr) => { |
| 67 | + const dep = new AMDRequireItemDependency(module, expr.range); |
| 68 | + dep.userRequest = expr; |
| 69 | + dep.loc = expr.loc; |
| 70 | + parser.state.current.addDependency(dep); |
| 71 | + return true; |
| 72 | + }); |
| 73 | + } |
| 74 | + |
| 75 | + parser.apply( |
| 76 | + new AMDRequireDependenciesBlockParserPlugin(options), |
| 77 | + new AMDDefineDependencyParserPlugin(options) |
| 78 | + ); |
| 79 | + setExpressionToModule("require.amd", "!!webpack amd options"); |
| 80 | + setExpressionToModule("define.amd", "!!webpack amd options"); |
| 81 | + setExpressionToModule("define", "!!webpack amd define"); |
| 82 | + parser.plugin("expression __webpack_amd_options__", () => |
| 83 | + parser.state.current.addVariable("__webpack_amd_options__", JSON.stringify(amdOptions))); |
| 84 | + parser.plugin("evaluate typeof define.amd", ParserHelpers.evaluateToString(typeof amdOptions)); |
| 85 | + parser.plugin("evaluate typeof require.amd", ParserHelpers.evaluateToString(typeof amdOptions)); |
| 86 | + parser.plugin("evaluate Identifier define.amd", (expr) => { |
| 87 | + return new BasicEvaluatedExpression().setBoolean(true).setRange(expr.range); |
| 88 | + }); |
| 89 | + parser.plugin("evaluate Identifier require.amd", (expr) => { |
| 90 | + return new BasicEvaluatedExpression().setBoolean(true).setRange(expr.range); |
| 91 | + }); |
| 92 | + parser.plugin("typeof define", ParserHelpers.toConstantDependency("function")); |
| 93 | + parser.plugin("evaluate typeof define", ParserHelpers.evaluateToString("function")); |
| 94 | + parser.plugin("can-rename define", () => true); |
| 95 | + parser.plugin("rename define", (expr) => { |
| 96 | + const dep = new AMDRequireItemDependency("!!webpack amd define", expr.range); |
| 97 | + dep.userRequest = "define"; |
67 | 98 | dep.loc = expr.loc; |
68 | | - this.state.current.addDependency(dep); |
69 | | - return true; |
| 99 | + parser.state.current.addDependency(dep); |
| 100 | + return false; |
70 | 101 | }); |
71 | | - } |
72 | | - |
73 | | - parser.apply( |
74 | | - new AMDRequireDependenciesBlockParserPlugin(options), |
75 | | - new AMDDefineDependencyParserPlugin(options) |
76 | | - ); |
77 | | - setExpressionToModule("require.amd", "!!webpack amd options"); |
78 | | - setExpressionToModule("define.amd", "!!webpack amd options"); |
79 | | - setExpressionToModule("define", "!!webpack amd define"); |
80 | | - parser.plugin("expression __webpack_amd_options__", function() { |
81 | | - return this.state.current.addVariable("__webpack_amd_options__", JSON.stringify(amdOptions)); |
82 | | - }); |
83 | | - parser.plugin("evaluate typeof define.amd", ParserHelpers.evaluateToString(typeof amdOptions)); |
84 | | - parser.plugin("evaluate typeof require.amd", ParserHelpers.evaluateToString(typeof amdOptions)); |
85 | | - parser.plugin("evaluate Identifier define.amd", function(expr) { |
86 | | - return new BasicEvaluatedExpression().setBoolean(true).setRange(expr.range); |
| 102 | + parser.plugin("typeof require", ParserHelpers.toConstantDependency("function")); |
| 103 | + parser.plugin("evaluate typeof require", ParserHelpers.evaluateToString("function")); |
87 | 104 | }); |
88 | | - parser.plugin("evaluate Identifier require.amd", function(expr) { |
89 | | - return new BasicEvaluatedExpression().setBoolean(true).setRange(expr.range); |
90 | | - }); |
91 | | - parser.plugin("typeof define", ParserHelpers.toConstantDependency("function")); |
92 | | - parser.plugin("evaluate typeof define", ParserHelpers.evaluateToString("function")); |
93 | | - parser.plugin("can-rename define", function() { |
94 | | - return true; |
95 | | - }); |
96 | | - parser.plugin("rename define", function(expr) { |
97 | | - var dep = new AMDRequireItemDependency("!!webpack amd define", expr.range); |
98 | | - dep.userRequest = "define"; |
99 | | - dep.loc = expr.loc; |
100 | | - this.state.current.addDependency(dep); |
101 | | - return false; |
102 | | - }); |
103 | | - parser.plugin("typeof require", ParserHelpers.toConstantDependency("function")); |
104 | | - parser.plugin("evaluate typeof require", ParserHelpers.evaluateToString("function")); |
105 | 105 | }); |
106 | | - }); |
107 | | - compiler.plugin("after-resolvers", function() { |
108 | | - compiler.resolvers.normal.apply( |
109 | | - new AliasPlugin("described-resolve", { |
110 | | - name: "amdefine", |
111 | | - alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js") |
112 | | - }, "resolve"), |
113 | | - new AliasPlugin("described-resolve", { |
114 | | - name: "webpack amd options", |
115 | | - alias: path.join(__dirname, "..", "..", "buildin", "amd-options.js") |
116 | | - }, "resolve"), |
117 | | - new AliasPlugin("described-resolve", { |
118 | | - name: "webpack amd define", |
119 | | - alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js") |
120 | | - }, "resolve") |
121 | | - ); |
122 | | - }); |
123 | | -}; |
| 106 | + compiler.plugin("after-resolvers", () => { |
| 107 | + compiler.resolvers.normal.apply( |
| 108 | + new AliasPlugin("described-resolve", { |
| 109 | + name: "amdefine", |
| 110 | + alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js") |
| 111 | + }, "resolve"), |
| 112 | + new AliasPlugin("described-resolve", { |
| 113 | + name: "webpack amd options", |
| 114 | + alias: path.join(__dirname, "..", "..", "buildin", "amd-options.js") |
| 115 | + }, "resolve"), |
| 116 | + new AliasPlugin("described-resolve", { |
| 117 | + name: "webpack amd define", |
| 118 | + alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js") |
| 119 | + }, "resolve") |
| 120 | + ); |
| 121 | + }); |
| 122 | + } |
| 123 | +} |
| 124 | +module.exports = AMDPlugin; |
0 commit comments