Skip to content

Commit 0961304

Browse files
authoredNov 28, 2019
fix: add an additional space after the escape sequence (#998)
1 parent 94378b7 commit 0961304

File tree

7 files changed

+694
-417
lines changed

7 files changed

+694
-417
lines changed
 

‎package-lock.json

+447-407
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

+9-9
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,15 @@
4949
"postcss": "^7.0.23",
5050
"postcss-modules-extract-imports": "^2.0.0",
5151
"postcss-modules-local-by-default": "^3.0.2",
52-
"postcss-modules-scope": "^2.1.0",
52+
"postcss-modules-scope": "^2.1.1",
5353
"postcss-modules-values": "^3.0.0",
5454
"postcss-value-parser": "^4.0.2",
55-
"schema-utils": "^2.5.0"
55+
"schema-utils": "^2.6.0"
5656
},
5757
"devDependencies": {
58-
"@babel/cli": "^7.7.0",
59-
"@babel/core": "^7.7.2",
60-
"@babel/preset-env": "^7.7.1",
58+
"@babel/cli": "^7.7.4",
59+
"@babel/core": "^7.7.4",
60+
"@babel/preset-env": "^7.7.4",
6161
"@commitlint/cli": "^8.2.0",
6262
"@commitlint/config-conventional": "^8.2.0",
6363
"@webpack-contrib/defaults": "^5.0.2",
@@ -68,14 +68,14 @@
6868
"del": "^5.1.0",
6969
"del-cli": "^3.0.0",
7070
"es-check": "^5.1.0",
71-
"eslint": "^6.6.0",
71+
"eslint": "^6.7.1",
7272
"eslint-config-prettier": "^6.7.0",
7373
"eslint-plugin-import": "^2.18.2",
74-
"file-loader": "^4.3.0",
74+
"file-loader": "^5.0.2",
7575
"husky": "^3.1.0",
7676
"jest": "^24.9.0",
7777
"jest-junit": "^9.0.0",
78-
"lint-staged": "^9.4.3",
78+
"lint-staged": "^9.5.0",
7979
"memory-fs": "^0.5.0",
8080
"npm-run-all": "^4.1.5",
8181
"postcss-loader": "^3.0.0",
@@ -85,7 +85,7 @@
8585
"sass-loader": "^8.0.0",
8686
"standard-version": "^7.0.1",
8787
"strip-ansi": "^6.0.0",
88-
"url-loader": "^2.3.0",
88+
"url-loader": "^3.0.0",
8989
"webpack": "^4.41.2"
9090
},
9191
"keywords": [

‎test/__snapshots__/modules-option.test.js.snap

+119
Original file line numberDiff line numberDiff line change
@@ -6446,6 +6446,125 @@ exports.locals = {
64466446
64476447
exports[`modules issue #980: warnings 1`] = `Array []`;
64486448
6449+
exports[`modules issue #995: errors 1`] = `Array []`;
6450+
6451+
exports[`modules issue #995: module (evaluated) 1`] = `
6452+
Array [
6453+
Array [
6454+
1,
6455+
"/* class=\\"😀\\" */
6456+
.a {
6457+
color: red;
6458+
}
6459+
6460+
/* class=\\"😀 😓\\" */
6461+
.a.b {
6462+
color: red;
6463+
}
6464+
6465+
/* class=\\"😀\\" > class=\\"😓\\" */
6466+
.a .b {
6467+
color: red;
6468+
}
6469+
6470+
/* class=\\"😀\\" */
6471+
.😀 {
6472+
color: red;
6473+
}
6474+
6475+
/* class=\\"😀 😓\\" */
6476+
.😀.😓 {
6477+
color: red;
6478+
}
6479+
6480+
/* class=\\"😀\\" > class=\\"😓\\" */
6481+
.😀 .😓 {
6482+
color: red;
6483+
}
6484+
6485+
/* class=\\"😀\\" */
6486+
.\\\\1F600 {
6487+
color: red;
6488+
}
6489+
6490+
/* class=\\"😀 😓\\" */
6491+
.\\\\1F600.\\\\1F613 {
6492+
color: red;
6493+
}
6494+
6495+
/* class=\\"😀\\" > class=\\"😓\\" */
6496+
.\\\\1F600 .\\\\1F613 {
6497+
color: red;
6498+
}
6499+
6500+
/* Local */
6501+
6502+
/* class=\\"😀\\" */
6503+
.\\\\1F600 {
6504+
color: red;
6505+
}
6506+
6507+
/* class=\\"😀 😓\\" */
6508+
.\\\\1F600.\\\\1F600 {
6509+
color: red;
6510+
}
6511+
6512+
/* class=\\"😀\\" > class=\\"😓\\" */
6513+
.\\\\1F600 .\\\\1F600 {
6514+
color: red;
6515+
}
6516+
6517+
.\\\\1F600 .a .\\\\1F600 {
6518+
color: red;
6519+
}
6520+
6521+
.\\\\1F600 .\\\\1F600 .\\\\1F600 {
6522+
color: red;
6523+
}
6524+
6525+
div:not(.\\\\1F600) {
6526+
color: red;
6527+
}
6528+
6529+
.\\\\1F600 .b {
6530+
color: red;
6531+
}
6532+
6533+
.b .\\\\1F600 {
6534+
color: red;
6535+
}
6536+
6537+
.\\\\1F613 .\\\\1F600 {
6538+
color: red;
6539+
}
6540+
6541+
.\\\\1F613 .\\\\1F600 {
6542+
color: red;
6543+
}
6544+
6545+
.\\\\1F600 > .\\\\1F600 > .\\\\1F600 {
6546+
color: red;
6547+
}
6548+
",
6549+
"",
6550+
],
6551+
]
6552+
`;
6553+
6554+
exports[`modules issue #995: module 1`] = `
6555+
"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
6556+
// Module
6557+
exports.push([module.id, \\"/* class=\\\\\\"😀\\\\\\" */\\\\n.a {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.a.b {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.a .b {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" */\\\\n.😀 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.😀.😓 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.😀 .😓 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" */\\\\n.\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.\\\\\\\\1F600.\\\\\\\\1F613 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.\\\\\\\\1F600 .\\\\\\\\1F613 {\\\\n color: red;\\\\n}\\\\n\\\\n/* Local */\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" */\\\\n.\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.\\\\\\\\1F600.\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.\\\\\\\\1F600 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 .a .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 .\\\\\\\\1F600 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\ndiv:not(.\\\\\\\\1F600) {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 .b {\\\\n color: red;\\\\n}\\\\n\\\\n.b .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F613 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F613 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 > .\\\\\\\\1F600 > .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]);
6558+
// Exports
6559+
exports.locals = {
6560+
\\"a\\": \\"😀\\",
6561+
\\"b\\": \\"😀\\",
6562+
\\"c\\": \\"😀\\"
6563+
};"
6564+
`;
6565+
6566+
exports[`modules issue #995: warnings 1`] = `Array []`;
6567+
64496568
exports[`modules should accepts all arguments for getLocalIdent option: errors 1`] = `Array []`;
64506569
64516570
exports[`modules should accepts all arguments for getLocalIdent option: locals 1`] = `

‎test/fixtures/modules/issue-995.css

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/* class="😀" */
2+
.a {
3+
color: red;
4+
}
5+
6+
/* class="😀 😓" */
7+
.a.b {
8+
color: red;
9+
}
10+
11+
/* class="😀" > class="😓" */
12+
.a .b {
13+
color: red;
14+
}
15+
16+
/* class="😀" */
17+
.😀 {
18+
color: red;
19+
}
20+
21+
/* class="😀 😓" */
22+
.😀.😓 {
23+
color: red;
24+
}
25+
26+
/* class="😀" > class="😓" */
27+
.😀 .😓 {
28+
color: red;
29+
}
30+
31+
/* class="😀" */
32+
.\1F600 {
33+
color: red;
34+
}
35+
36+
/* class="😀 😓" */
37+
.\1F600.\1F613 {
38+
color: red;
39+
}
40+
41+
/* class="😀" > class="😓" */
42+
.\1F600 .\1F613 {
43+
color: red;
44+
}
45+
46+
/* Local */
47+
48+
/* class="😀" */
49+
:local(.a) {
50+
color: red;
51+
}
52+
53+
/* class="😀 😓" */
54+
:local(.a.b) {
55+
color: red;
56+
}
57+
58+
/* class="😀" > class="😓" */
59+
:local(.a .b) {
60+
color: red;
61+
}
62+
63+
.\1F600 .a .\1F600 {
64+
color: red;
65+
}
66+
67+
:local(.a .b .a) {
68+
color: red;
69+
}
70+
71+
div:not(:local(.a)) {
72+
color: red;
73+
}
74+
75+
:local(.a) .b {
76+
color: red;
77+
}
78+
79+
.b :local(.a) {
80+
color: red;
81+
}
82+
83+
.\1F613 :local(.a) {
84+
color: red;
85+
}
86+
87+
.\1F613 :local(.a) {
88+
color: red;
89+
}
90+
91+
:local(.a) > :local(.b) > :local(.c) {
92+
color: red;
93+
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
body:before {
22
content: '';
3-
background: url('~!!file-loader!./img.png');
3+
background: url('~!!file-loader?esModule=false!./img.png');
44
}

‎test/helpers.js

+1
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ const moduleConfig = (config) => {
150150
loader: 'file-loader',
151151
options: config.fileLoaderOptions || {
152152
name: '[name].[ext]',
153+
esModule: false,
153154
},
154155
},
155156
},

‎test/modules-option.test.js

+24
Original file line numberDiff line numberDiff line change
@@ -532,4 +532,28 @@ describe('modules', () => {
532532
expect(stats.compilation.warnings).toMatchSnapshot('warnings');
533533
expect(stats.compilation.errors).toMatchSnapshot('errors');
534534
});
535+
536+
it('issue #995', async () => {
537+
const config = {
538+
loader: {
539+
options: {
540+
modules: {
541+
mode: 'global',
542+
localIdentName: '😀',
543+
},
544+
},
545+
},
546+
};
547+
const testId = './modules/issue-995.css';
548+
const stats = await webpack(testId, config);
549+
const { modules } = stats.toJson();
550+
const module = modules.find((m) => m.id === testId);
551+
552+
expect(module.source).toMatchSnapshot('module');
553+
expect(evaluated(module.source, modules)).toMatchSnapshot(
554+
'module (evaluated)'
555+
);
556+
expect(stats.compilation.warnings).toMatchSnapshot('warnings');
557+
expect(stats.compilation.errors).toMatchSnapshot('errors');
558+
});
535559
});

0 commit comments

Comments
 (0)
Please sign in to comment.