Skip to content

Commit e8d9962

Browse files
authored
Merge pull request webpack#3882 from shubheksha/refactor-AMDPlugin
refactor(ES6): upgrade AMDPlugin to ES6
2 parents ec39460 + f22035d commit e8d9962

1 file changed

Lines changed: 116 additions & 115 deletions

File tree

lib/dependencies/AMDPlugin.js

Lines changed: 116 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -2,122 +2,123 @@
22
MIT License http://www.opensource.org/licenses/mit-license.php
33
Author Tobias Koppers @sokra
44
*/
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";
6798
dep.loc = expr.loc;
68-
this.state.current.addDependency(dep);
69-
return true;
99+
parser.state.current.addDependency(dep);
100+
return false;
70101
});
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"));
87104
});
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"));
105105
});
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

Comments
 (0)