Skip to content

Commit f6673c8

Browse files
TrySoundmichael-ciniawsky
authored andcommitted
fix: preserve leading underscore in class names (#543)
1 parent 1a6b17d commit f6673c8

File tree

4 files changed

+31
-21
lines changed

4 files changed

+31
-21
lines changed

lib/processCss.js

+11-17
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ var loaderUtils = require("loader-utils");
99
var assign = require("object-assign");
1010
var getLocalIdent = require("./getLocalIdent");
1111

12+
var icssUtils = require('icss-utils');
1213
var localByDefault = require("postcss-modules-local-by-default");
1314
var extractImports = require("postcss-modules-extract-imports");
1415
var modulesScope = require("postcss-modules-scope");
@@ -65,24 +66,17 @@ var parserPlugin = postcss.plugin("css-loader-parser", function(options) {
6566
});
6667
}
6768

68-
css.walkRules(function(rule) {
69-
if(rule.selector === ":export") {
70-
rule.walkDecls(function(decl) {
71-
exports[decl.prop] = decl.value;
72-
});
73-
rule.remove();
74-
} else if(/^:import\(.+\)$/.test(rule.selector)) {
75-
var match = /^:import\((.+)\)$/.exec(rule.selector);
76-
var url = loaderUtils.parseString(match[1]);
77-
rule.walkDecls(function(decl) {
78-
imports["$" + decl.prop] = importItems.length;
79-
importItems.push({
80-
url: url,
81-
export: decl.value
82-
});
69+
var icss = icssUtils.extractICSS(css);
70+
exports = icss.icssExports;
71+
Object.keys(icss.icssImports).forEach(function(key) {
72+
var url = loaderUtils.parseString(key);
73+
Object.keys(icss.icssImports[key]).forEach(function(prop) {
74+
imports["$" + prop] = importItems.length;
75+
importItems.push({
76+
url: url,
77+
export: icss.icssImports[key][prop]
8378
});
84-
rule.remove();
85-
}
79+
})
8680
});
8781

8882
Object.keys(exports).forEach(function(exportName) {

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"babel-code-frame": "^6.11.0",
1616
"css-selector-tokenizer": "^0.7.0",
1717
"cssnano": ">=2.6.1 <4",
18+
"icss-utils": "^2.1.0",
1819
"loader-utils": "^1.0.2",
1920
"lodash.camelcase": "^4.3.0",
2021
"object-assign": "^4.0.1",

test/localTest.js

+5
Original file line numberDiff line numberDiff line change
@@ -217,4 +217,9 @@ describe("local", function() {
217217
], {
218218
test: "_--test"
219219
}, "?localIdentName=--[local]");
220+
testLocal("saves underscore prefix in exported class names", ":export { _test: _test }", [
221+
[1, "", ""]
222+
], {
223+
_test: '_test'
224+
}, "?localIdentName=[local]");
220225
});

yarn.lock

+14-4
Original file line numberDiff line numberDiff line change
@@ -520,10 +520,6 @@ conventional-recommended-bump@^0.3.0:
520520
meow "^3.3.0"
521521
object-assign "^4.0.1"
522522

523-
convert-source-map@^1.3.0:
524-
version "1.4.0"
525-
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3"
526-
527523
core-util-is@~1.0.0:
528524
version "1.0.2"
529525
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -1164,6 +1160,12 @@ icss-replace-symbols@^1.0.2:
11641160
version "1.0.2"
11651161
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5"
11661162

1163+
icss-utils@^2.1.0:
1164+
version "2.1.0"
1165+
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962"
1166+
dependencies:
1167+
postcss "^6.0.1"
1168+
11671169
ignore@^3.2.0:
11681170
version "3.2.4"
11691171
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.4.tgz#4055e03596729a8fabe45a43c100ad5ed815c4e8"
@@ -2036,6 +2038,14 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
20362038
source-map "^0.5.6"
20372039
supports-color "^3.2.3"
20382040

2041+
postcss@^6.0.1:
2042+
version "6.0.1"
2043+
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2"
2044+
dependencies:
2045+
chalk "^1.1.3"
2046+
source-map "^0.5.6"
2047+
supports-color "^3.2.3"
2048+
20392049
prelude-ls@~1.1.2:
20402050
version "1.1.2"
20412051
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"

0 commit comments

Comments
 (0)