Skip to content

Commit 1999af3

Browse files
committed
feature(alias): allow loader query to be used for aliased loader
1 parent bd3d830 commit 1999af3

File tree

6 files changed

+48
-2
lines changed

6 files changed

+48
-2
lines changed

lib/NormalModuleFactory.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,8 @@ NormalModuleFactory.prototype.resolveRequestArray = function resolveRequestArray
228228
if(array.length === 0) return callback(null, []);
229229
async.map(array, function(item, callback) {
230230
resolver.resolve(contextInfo, context, item.loader, function(err, result) {
231+
var resultQuery;
232+
var queryIndex = result.indexOf("?");
231233
if(err && /^[^/]*$/.test(item.loader) && !/-loader$/.test(item.loader)) {
232234
return resolver.resolve(contextInfo, context, item.loader + "-loader", function(err2) {
233235
if(!err2) {
@@ -239,9 +241,20 @@ NormalModuleFactory.prototype.resolveRequestArray = function resolveRequestArray
239241
});
240242
}
241243
if(err) return callback(err);
242-
return callback(null, objectAssign({}, item, {
244+
245+
if(queryIndex > -1) {
246+
resultQuery = result.substr(queryIndex + 1, result.length);
247+
result = result.substr(0, queryIndex)
248+
}
249+
250+
var resultRequest = {
243251
loader: result
244-
}));
252+
};
253+
254+
if(resultQuery)
255+
item.options = resultQuery;
256+
257+
return callback(null, objectAssign({}, item, resultRequest));
245258
});
246259
}, callback);
247260
};

test/ConfigTestCases.test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ var webpack = require("../lib/webpack");
1111
describe("ConfigTestCases", function() {
1212
var casesPath = path.join(__dirname, "configCases");
1313
var categories = fs.readdirSync(casesPath);
14+
1415
categories = categories.map(function(cat) {
1516
return {
1617
name: cat,

test/configCases/loaders/issue-3320/a.js

Whitespace-only changes.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
it("should resolve aliased loader module with query (issue-3320)", function() {
2+
var foo = require('./a');
3+
4+
foo.should.be.eql("someMessage");
5+
});

test/configCases/loaders/issue-3320/node_modules/any-loader.js

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module.exports = {
2+
resolveLoader: {
3+
alias: {
4+
"any-loader": 'any-loader?foo="someMessage"'
5+
}
6+
},
7+
module: {
8+
rules: [
9+
{
10+
test: /a\.js$/,
11+
use: [
12+
{
13+
loader: "any-loader"
14+
}
15+
]
16+
}
17+
]
18+
}
19+
}

0 commit comments

Comments
 (0)