Skip to content

Commit 461c49a

Browse files
committed
updated partly to new enhanced-resolve API
1 parent 4c7c929 commit 461c49a

File tree

19 files changed

+97
-143
lines changed

19 files changed

+97
-143
lines changed

lib/CompatibilityPlugin.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
var path = require("path");
66
var ConstDependency = require("./dependencies/ConstDependency");
77

8-
var ModuleAliasPlugin = require("enhanced-resolve/lib/ModuleAliasPlugin");
9-
108
var NullFactory = require("./NullFactory");
119

1210
function CompatibilityPlugin() {}
@@ -17,11 +15,6 @@ CompatibilityPlugin.prototype.apply = function(compiler) {
1715
compilation.dependencyFactories.set(ConstDependency, new NullFactory());
1816
compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
1917
});
20-
compiler.resolvers.normal.apply(
21-
new ModuleAliasPlugin({
22-
"enhanced-require": path.join(__dirname, "..", "buildin", "return-require.js")
23-
})
24-
);
2518
compiler.parser.plugin("call require", function(expr) {
2619
// support for browserify style require delegator: "require(o, !0)"
2720
if(expr.arguments.length !== 2) return;

lib/ContextModuleFactory.js

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ ContextModuleFactory.prototype = Object.create(Tapable.prototype);
1919
ContextModuleFactory.prototype.constructor = ContextModuleFactory;
2020

2121
ContextModuleFactory.prototype.create = function(context, dependency, callback) {
22+
var module = this;
2223
this.applyPluginsAsyncWaterfall("before-resolve", {
2324
context: context,
2425
request: dependency.request,
@@ -53,13 +54,27 @@ ContextModuleFactory.prototype.create = function(context, dependency, callback)
5354
resource = request;
5455
}
5556

57+
var resolvers = module.resolvers;
58+
5659
async.parallel([
57-
this.resolvers.context.resolve.bind(this.resolvers.context, {}, context, resource),
58-
async.map.bind(async, loaders, this.resolvers.loader.resolve.bind(this.resolvers.loader, {}, context))
60+
function(callback) {
61+
resolvers.context.resolve({}, context, resource, function(err, result) {
62+
if(err) return callback(err);
63+
callback(null, result);
64+
});
65+
},
66+
function(callback) {
67+
async.map(loaders, function(loader, callback) {
68+
resolvers.loader.resolve({}, context, loader, function(err, result) {
69+
if(err) return callback(err);
70+
callback(null, result);
71+
})
72+
}, callback)
73+
}
5974
], function(err, result) {
6075
if(err) return callback(err);
6176

62-
this.applyPluginsAsyncWaterfall("after-resolve", {
77+
module.applyPluginsAsyncWaterfall("after-resolve", {
6378
loaders: loadersPrefix + result[1].join("!") + (result[1].length > 0 ? "!" : ""),
6479
resource: result[0],
6580
recursive: recursive,
@@ -71,10 +86,10 @@ ContextModuleFactory.prototype.create = function(context, dependency, callback)
7186
// Ignored
7287
if(!result) return callback();
7388

74-
return callback(null, new ContextModule(this.resolveDependencies.bind(this), result.resource, result.recursive, result.regExp, result.loaders, result.async));
75-
}.bind(this));
76-
}.bind(this));
77-
}.bind(this));
89+
return callback(null, new ContextModule(module.resolveDependencies.bind(module), result.resource, result.recursive, result.regExp, result.loaders, result.async));
90+
});
91+
});
92+
});
7893
};
7994

8095
ContextModuleFactory.prototype.resolveDependencies = function resolveDependencies(fs, resource, recursive, regExp, callback) {
@@ -104,6 +119,7 @@ ContextModuleFactory.prototype.resolveDependencies = function resolveDependencie
104119
context: resource,
105120
request: "." + subResource.substr(resource.length).replace(/\\/g, "/")
106121
};
122+
107123
this.applyPluginsAsyncWaterfall("alternatives", [obj], function(err, alternatives) {
108124
if(err) return callback(err);
109125
alternatives = alternatives.filter(function(obj) {

lib/NormalModuleFactory.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ function NormalModuleFactory(context, resolvers, parser, options) {
7979
function(callback) {
8080
if(resource === "" || resource[0] === "?")
8181
return callback(null, resource);
82-
_this.resolvers.normal.resolve({}, context, resource, callback);
82+
_this.resolvers.normal.resolve({}, context, resource, function(err, result) {
83+
if(err) return callback(err);
84+
callback(null, result);
85+
});
8386
}
8487
], function(err, results) {
8588
if(err) return callback(err);

lib/ResolverPlugin.js

Lines changed: 0 additions & 34 deletions
This file was deleted.

lib/WebpackOptionsApply.js

Lines changed: 13 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
MIT License http://www.opensource.org/licenses/mit-license.php
33
Author Tobias Koppers @sokra
44
*/
5+
var assign = require("object-assign");
56
var OptionsApply = require("./OptionsApply");
67

78
var LoaderTargetPlugin = require("./LoaderTargetPlugin");
@@ -38,19 +39,7 @@ var FlagIncludedChunksPlugin = require("./optimize/FlagIncludedChunksPlugin");
3839
var OccurrenceOrderPlugin = require("./optimize/OccurrenceOrderPlugin");
3940
var FlagDependencyUsagePlugin = require("./FlagDependencyUsagePlugin");
4041

41-
var UnsafeCachePlugin = require("enhanced-resolve/lib/UnsafeCachePlugin");
42-
var ModulesInDirectoriesPlugin = require("enhanced-resolve/lib/ModulesInDirectoriesPlugin");
43-
var ModulesInRootPlugin = require("enhanced-resolve/lib/ModulesInRootPlugin");
44-
var ModuleTemplatesPlugin = require("enhanced-resolve/lib/ModuleTemplatesPlugin");
45-
var ModuleAsFilePlugin = require("enhanced-resolve/lib/ModuleAsFilePlugin");
46-
var ModuleAsDirectoryPlugin = require("enhanced-resolve/lib/ModuleAsDirectoryPlugin");
47-
var ModuleAliasPlugin = require("enhanced-resolve/lib/ModuleAliasPlugin");
48-
var DirectoryDefaultFilePlugin = require("enhanced-resolve/lib/DirectoryDefaultFilePlugin");
49-
var DirectoryDescriptionFilePlugin = require("enhanced-resolve/lib/DirectoryDescriptionFilePlugin");
50-
var DirectoryDescriptionFileFieldAliasPlugin = require("enhanced-resolve/lib/DirectoryDescriptionFileFieldAliasPlugin");
51-
var FileAppendPlugin = require("enhanced-resolve/lib/FileAppendPlugin");
52-
var DirectoryResultPlugin = require("enhanced-resolve/lib/DirectoryResultPlugin");
53-
var ResultSymlinkPlugin = require("enhanced-resolve/lib/ResultSymlinkPlugin");
42+
var ResolverFactory = require("enhanced-resolve").ResolverFactory;
5443

5544
function WebpackOptionsApply() {
5645
OptionsApply.call(this);
@@ -247,7 +236,7 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
247236
new ConstPlugin(),
248237
new RequireIncludePlugin(),
249238
new RequireEnsurePlugin(),
250-
new RequireContextPlugin(options.resolve.modulesDirectories, options.resolve.extensions),
239+
new RequireContextPlugin(options.resolve.modules, options.resolve.extensions),
251240
new AMDPlugin(options.module, options.amd || {}),
252241
new CommonJsPlugin(options.module),
253242
new HarmonyModulesPlugin(options.module),
@@ -275,45 +264,16 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
275264
}
276265

277266
compiler.applyPlugins("after-plugins", compiler);
278-
compiler.resolvers.normal.apply(
279-
new UnsafeCachePlugin(options.resolve.unsafeCache),
280-
options.resolve.packageAlias ? new DirectoryDescriptionFileFieldAliasPlugin("package.json", options.resolve.packageAlias) : function() {},
281-
new ModuleAliasPlugin(options.resolve.alias),
282-
makeRootPlugin("module", options.resolve.root),
283-
new ModulesInDirectoriesPlugin("module", options.resolve.modulesDirectories),
284-
makeRootPlugin("module", options.resolve.fallback),
285-
new ModuleAsFilePlugin("module"),
286-
new ModuleAsDirectoryPlugin("module"),
287-
new DirectoryDescriptionFilePlugin("package.json", options.resolve.packageMains),
288-
new DirectoryDefaultFilePlugin(["index"]),
289-
new FileAppendPlugin(options.resolve.extensions),
290-
new ResultSymlinkPlugin()
291-
);
292-
compiler.resolvers.context.apply(
293-
new UnsafeCachePlugin(options.resolve.unsafeCache),
294-
new ModuleAliasPlugin(options.resolve.alias),
295-
makeRootPlugin("module", options.resolve.root),
296-
new ModulesInDirectoriesPlugin("module", options.resolve.modulesDirectories),
297-
makeRootPlugin("module", options.resolve.fallback),
298-
new ModuleAsFilePlugin("module"),
299-
new ModuleAsDirectoryPlugin("module"),
300-
new DirectoryResultPlugin(),
301-
new ResultSymlinkPlugin()
302-
);
303-
compiler.resolvers.loader.apply(
304-
new UnsafeCachePlugin(options.resolve.unsafeCache),
305-
new ModuleAliasPlugin(options.resolveLoader.alias),
306-
makeRootPlugin("loader-module", options.resolveLoader.root),
307-
new ModulesInDirectoriesPlugin("loader-module", options.resolveLoader.modulesDirectories),
308-
makeRootPlugin("loader-module", options.resolveLoader.fallback),
309-
new ModuleTemplatesPlugin("loader-module", options.resolveLoader.moduleTemplates, "module"),
310-
new ModuleAsFilePlugin("module"),
311-
new ModuleAsDirectoryPlugin("module"),
312-
new DirectoryDescriptionFilePlugin("package.json", options.resolveLoader.packageMains),
313-
new DirectoryDefaultFilePlugin(["index"]),
314-
new FileAppendPlugin(options.resolveLoader.extensions),
315-
new ResultSymlinkPlugin()
316-
);
267+
compiler.resolvers.normal = ResolverFactory.createResolver(assign({
268+
resolver: compiler.resolvers.normal
269+
}, options.resolve));
270+
compiler.resolvers.context = ResolverFactory.createResolver(assign({
271+
resolver: compiler.resolvers.context,
272+
resolveToContext: true
273+
}, options.resolve));
274+
compiler.resolvers.loader = ResolverFactory.createResolver(assign({
275+
resolver: compiler.resolvers.loader
276+
}, options.resolveLoader));
317277
compiler.applyPlugins("after-resolvers", compiler);
318278
return options;
319279
};

lib/dependencies/AMDPlugin.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ var NullFactory = require("../NullFactory");
1616
var AMDRequireDependenciesBlockParserPlugin = require("./AMDRequireDependenciesBlockParserPlugin");
1717
var AMDDefineDependencyParserPlugin = require("./AMDDefineDependencyParserPlugin");
1818

19-
var ModuleAliasPlugin = require("enhanced-resolve/lib/ModuleAliasPlugin");
19+
var AliasPlugin = require("enhanced-resolve/lib/AliasPlugin");
2020

2121
var BasicEvaluatedExpression = require("../BasicEvaluatedExpression");
2222

@@ -106,10 +106,17 @@ AMDPlugin.prototype.apply = function(compiler) {
106106
});
107107
setTypeof("require", "function");
108108
compiler.resolvers.normal.apply(
109-
new ModuleAliasPlugin({
110-
"amdefine": path.join(__dirname, "..", "..", "buildin", "amd-define.js"),
111-
"webpack amd options": path.join(__dirname, "..", "..", "buildin", "amd-options.js"),
112-
"webpack amd define": path.join(__dirname, "..", "..", "buildin", "amd-define.js")
113-
})
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")
114121
);
115122
};

lib/dependencies/RequireContextPlugin.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ var ContextElementDependency = require("./ContextElementDependency");
88
var RequireContextDependencyParserPlugin = require("./RequireContextDependencyParserPlugin");
99

1010
function RequireContextPlugin(modulesDirectories, extensions) {
11+
if(!Array.isArray(modulesDirectories))
12+
throw new Error("modulesDirectories must be an array");
13+
if(!Array.isArray(extensions))
14+
throw new Error("extensions must be an array");
1115
this.modulesDirectories = modulesDirectories;
1216
this.extensions = extensions;
1317
}
@@ -39,7 +43,7 @@ RequireContextPlugin.prototype.apply = function(compiler) {
3943
context: obj.context,
4044
request: obj.request.substr(0, l - ext.length)
4145
};
42-
});
46+
}).concat(obj);
4347
}).reduce(function(a, b) {
4448
return a.concat(b);
4549
}, []));

lib/node/NodeSourcePlugin.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
MIT License http://www.opensource.org/licenses/mit-license.php
33
Author Tobias Koppers @sokra
44
*/
5-
var ModuleAliasPlugin = require("enhanced-resolve/lib/ModuleAliasPlugin");
5+
var AliasPlugin = require("enhanced-resolve/lib/AliasPlugin");
66
var ModuleParserHelpers = require("../ModuleParserHelpers");
77
var nodeLibsBrowser = require("node-libs-browser");
88

@@ -58,13 +58,15 @@ NodeSourcePlugin.prototype.apply = function(compiler) {
5858
compiler.plugin("after-resolvers", function(compiler) {
5959
var alias = {};
6060
Object.keys(nodeLibsBrowser).forEach(function(lib) {
61-
if(options[lib] !== false)
62-
alias[lib + "$"] = getPathToModule(lib, options[lib]);
61+
if(options[lib] !== false) {
62+
compiler.resolvers.normal.apply(
63+
new AliasPlugin("described-resolve", {
64+
name: lib,
65+
onlyModule: true,
66+
alias: getPathToModule(lib, options[lib])
67+
}, "resolve")
68+
);
69+
}
6370
});
64-
if(Object.keys(alias).length > 0) {
65-
compiler.resolvers.normal.apply(
66-
new ModuleAliasPlugin(alias)
67-
);
68-
}
6971
});
7072
};

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
"webpack-sources": "~0.1.0",
2020
"uglify-js": "~2.6.0",
2121
"watchpack": "^0.2.1",
22-
"webpack-core": "~0.6.0"
22+
"webpack-core": "~0.6.0",
23+
"object-assign": "^4.0.1"
2324
},
2425
"license": "MIT",
2526
"devDependencies": {

test/ConfigTestCases.test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ describe("ConfigTestCases", function() {
3939
});
4040
webpack(options, function(err, stats) {
4141
if(err) return done(err);
42+
fs.writeFileSync(path.join(outputDirectory, "stats.txt"), stats.toString(), "utf-8");
4243
var jsonStats = stats.toJson({
4344
errorDetails: true
4445
});

0 commit comments

Comments
 (0)