Fix context modules
This commit is contained in:
parent
8a4bb64611
commit
453c0226aa
|
@ -42,7 +42,7 @@ ContextModule.prototype.readableIdentifier = function(requestShortener) {
|
|||
if(!this.recursive)
|
||||
identifier += "nonrecursive ";
|
||||
if(this.addon)
|
||||
identifier += this.addon;
|
||||
identifier += requestShortener.shorten(this.addon);
|
||||
if(this.regExp)
|
||||
identifier += prettyRegExp(this.regExp + "");
|
||||
return identifier.replace(/ $/, "");
|
||||
|
|
|
@ -30,22 +30,31 @@ ContextModuleFactory.prototype.create = function(context, dependency, callback)
|
|||
var recursive = result.recursive;
|
||||
var regExp = result.regExp;
|
||||
|
||||
var loaders, resource;
|
||||
var loaders, resource, loadersPrefix = "";
|
||||
var idx = request.lastIndexOf("!");
|
||||
if(idx >= 0) {
|
||||
loaders = request.substr(0, idx+1);
|
||||
for(var i = 0; i < loaders.length && loaders[i] === "!"; i++) {
|
||||
loadersPrefix += "!";
|
||||
}
|
||||
loaders = loaders.substr(i).replace(/!+$/, "").replace(/!!+/g, "!");
|
||||
if(loaders == "") loaders = [];
|
||||
else loaders = loaders.split("!");
|
||||
resource = request.substr(idx+1);
|
||||
} else {
|
||||
loaders = "";
|
||||
loaders = [];
|
||||
resource = request;
|
||||
}
|
||||
|
||||
this.resolvers.context.resolve(context, resource, function(err, resource) {
|
||||
async.parallel([
|
||||
this.resolvers.context.resolve.bind(this.resolvers.context, context, resource),
|
||||
async.map.bind(async, loaders, this.resolvers.loader.resolve.bind(this.resolvers.loader, context))
|
||||
], function(err, result) {
|
||||
if(err) return callback(err);
|
||||
|
||||
this.applyPluginsAsyncWaterfall("after-resolve", {
|
||||
loaders: loaders,
|
||||
resource: resource,
|
||||
loaders: loadersPrefix + result[1].join("!") + (result[1].length > 0 ? "!" : ""),
|
||||
resource: result[0],
|
||||
recursive: recursive,
|
||||
regExp: regExp
|
||||
}, function(err, result) {
|
||||
|
@ -56,6 +65,7 @@ ContextModuleFactory.prototype.create = function(context, dependency, callback)
|
|||
}.bind(this));
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
ContextModuleFactory.prototype.resolveDependencies = function resolveDependencies(fs, resource, recursive, regExp, callback) {
|
||||
(function addDirectory(directory, callback) {
|
||||
fs.readdir(directory, function(err, files) {
|
||||
|
@ -71,9 +81,9 @@ ContextModuleFactory.prototype.resolveDependencies = function resolveDependencie
|
|||
|
||||
if(!recursive) return callback();
|
||||
addDirectory.call(this, subResource, callback);
|
||||
|
||||
|
||||
} else if(stat.isFile()) {
|
||||
|
||||
|
||||
var obj = {
|
||||
context: resource,
|
||||
request: "." + subResource.substr(resource.length).replace(/\\/g, "/")
|
||||
|
@ -88,16 +98,16 @@ ContextModuleFactory.prototype.resolveDependencies = function resolveDependencie
|
|||
});
|
||||
callback(null, alternatives);
|
||||
});
|
||||
|
||||
|
||||
} else callback();
|
||||
|
||||
}.bind(this));
|
||||
|
||||
}.bind(this), function(err, result) {
|
||||
if(err) return callback(err);
|
||||
|
||||
|
||||
if(!result) return callback();
|
||||
|
||||
|
||||
callback(null, result.filter(function(i) { return !!i; }).reduce(function(a, i) {
|
||||
return a.concat(i);
|
||||
}, []));
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "webpack",
|
||||
"version": "0.9.0-beta4",
|
||||
"version": "0.9.0-beta5",
|
||||
"author": "Tobias Koppers @sokra",
|
||||
"description": "Packs CommonJs/AMD Modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jade, coffee, css, less, ... and your custom stuff.",
|
||||
"dependencies": {
|
||||
|
|
|
@ -159,6 +159,15 @@ describe("main", function() {
|
|||
require("../resources/" + scr).should.be.eql("coffee test");
|
||||
require("raw!../resources/" + abc + ".txt").should.be.eql("abc");
|
||||
});
|
||||
|
||||
it("should resolve loaders relative to require", function() {
|
||||
var index = "index";
|
||||
require("../loaders/queryloader?query!../node_modules/subcontent/" + index + ".js").should.be.eql({
|
||||
resourceQuery: null,
|
||||
query: "?query",
|
||||
prev: "module.exports = \"error\";"
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("parsing", function() {
|
||||
|
|
Loading…
Reference in New Issue