Skip to content

Commit 04f479b

Browse files
author
Nikita Gusakov
committed
Added missing camelCase option for locals loader
Fixes webpack-contrib#149 (comment)
1 parent 05f8d22 commit 04f479b

File tree

3 files changed

+30
-23
lines changed

3 files changed

+30
-23
lines changed

lib/compile-exports.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
var camelCase = require("lodash.camelcase");
2+
3+
module.exports = function compileExports(result, importItemMatcher, camelCaseKeys) {
4+
if (!Object.keys(result.exports).length) {
5+
return "";
6+
}
7+
8+
var exportJs = Object.keys(result.exports).reduce(function(res, key) {
9+
var valueAsString = JSON.stringify(result.exports[key]);
10+
valueAsString = valueAsString.replace(result.importItemRegExpG, importItemMatcher);
11+
res.push("\t" + JSON.stringify(key) + ": " + valueAsString);
12+
if (camelCaseKeys) {
13+
res.push("\t" + JSON.stringify(camelCase(key)) + ": " + valueAsString);
14+
}
15+
return res;
16+
}, []).join(",\n");
17+
18+
return "{\n" + exportJs + "\n}";
19+
};

lib/loader.js

+5-15
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
*/
55
var path = require("path");
66
var loaderUtils = require("loader-utils");
7-
var camelCase = require("lodash.camelcase");
87
var processCss = require("./processCss");
98
var getImportPrefix = require("./getImportPrefix");
9+
var compileExports = require("./compile-exports");
1010

1111

1212
module.exports = function(content, map) {
@@ -82,21 +82,11 @@ module.exports = function(content, map) {
8282
return "\" + require(" + loaderUtils.stringifyRequest(this, urlRequest) + ") + \"";
8383
}.bind(this));
8484

85-
var exportJs = "";
86-
if(Object.keys(result.exports).length > 0) {
87-
var boundImportItemMatcher = importItemMatcher.bind(this);
88-
exportJs = Object.keys(result.exports).reduce(function(res, key) {
89-
var valueAsString = JSON.stringify(result.exports[key]);
90-
valueAsString = valueAsString.replace(result.importItemRegExpG, boundImportItemMatcher);
91-
res.push("\t" + JSON.stringify(key) + ": " + valueAsString);
92-
if (camelCaseKeys) {
93-
res.push("\t" + JSON.stringify(camelCase(key)) + ": " + valueAsString);
94-
}
95-
return res;
96-
}, []).join(",\n");
97-
exportJs = "exports.locals = {\n" + exportJs + "\n};";
98-
}
9985

86+
var exportJs = compileExports(result, importItemMatcher.bind(this), camelCaseKeys);
87+
if (exportJs) {
88+
exportJs = "exports.locals = " + exportJs;
89+
}
10090

10191
var moduleJs;
10292
if(query.sourceMap && result.map) {

lib/localsLoader.js

+6-8
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
var loaderUtils = require("loader-utils");
66
var processCss = require("./processCss");
77
var getImportPrefix = require("./getImportPrefix");
8+
var compileExports = require("./compile-exports");
89

910

1011
module.exports = function(content) {
1112
if(this.cacheable) this.cacheable();
1213
var callback = this.async();
1314
var query = loaderUtils.parseQuery(this.query);
1415
var moduleMode = query.modules || query.module;
16+
var camelCaseKeys = query.camelCase || query.camelcase;
1517

1618
processCss(content, null, {
1719
mode: moduleMode ? "local" : "global",
@@ -33,16 +35,12 @@ module.exports = function(content) {
3335
"[" + JSON.stringify(importItem.export) + "] + \"";
3436
}
3537

36-
var exportJs = "";
37-
if(Object.keys(result.exports).length > 0) {
38-
exportJs = Object.keys(result.exports).map(function(key) {
39-
var valueAsString = JSON.stringify(result.exports[key]);
40-
valueAsString = valueAsString.replace(result.importItemRegExpG, importItemMatcher.bind(this));
41-
return "\t" + JSON.stringify(key) + ": " + valueAsString;
42-
}.bind(this)).join(",\n");
43-
exportJs = "module.exports = {\n" + exportJs + "\n};";
38+
var exportJs = compileExports(result, importItemMatcher.bind(this), camelCaseKeys);
39+
if (exportJs) {
40+
exportJs = "module.exports = " + exportJs;
4441
}
4542

43+
4644
callback(null, exportJs);
4745
}.bind(this));
4846
};

0 commit comments

Comments
 (0)