Skip to content

Commit 9f974be

Browse files
authoredSep 24, 2020
feat: reduce runtime
BREAKING CHANGE: runtime doesn't contain source maps function without `sourceMap: true`
1 parent d779eb1 commit 9f974be

13 files changed

+397
-363
lines changed
 

Diff for: ‎src/index.js

+10
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,16 @@ export default async function loader(content, map, meta) {
197197
importName: '___CSS_LOADER_API_IMPORT___',
198198
url: stringifyRequest(this, require.resolve('./runtime/api')),
199199
});
200+
201+
if (options.sourceMap) {
202+
imports.unshift({
203+
importName: '___CSS_LOADER_API_SOURCEMAP_IMPORT___',
204+
url: stringifyRequest(
205+
this,
206+
require.resolve('./runtime/cssWithMappingToString')
207+
),
208+
});
209+
}
200210
}
201211

202212
const importCode = getImportCode(imports, options);

Diff for: ‎src/runtime/api.js

+2-32
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
*/
55
// css base code, injected by the css-loader
66
// eslint-disable-next-line func-names
7-
module.exports = function (useSourceMap) {
7+
module.exports = function (cssWithMappingToString) {
88
const list = [];
99

1010
// return the list of modules as css string
1111
list.toString = function toString() {
1212
return this.map((item) => {
13-
const content = cssWithMappingToString(item, useSourceMap);
13+
const content = cssWithMappingToString(item);
1414

1515
if (item[2]) {
1616
return `@media ${item[2]} {${content}}`;
@@ -63,33 +63,3 @@ module.exports = function (useSourceMap) {
6363

6464
return list;
6565
};
66-
67-
function cssWithMappingToString(item, useSourceMap) {
68-
const content = item[1] || '';
69-
// eslint-disable-next-line prefer-destructuring
70-
const cssMapping = item[3];
71-
72-
if (!cssMapping) {
73-
return content;
74-
}
75-
76-
if (useSourceMap && typeof btoa === 'function') {
77-
const sourceMapping = toComment(cssMapping);
78-
const sourceURLs = cssMapping.sources.map(
79-
(source) => `/*# sourceURL=${cssMapping.sourceRoot || ''}${source} */`
80-
);
81-
82-
return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
83-
}
84-
85-
return [content].join('\n');
86-
}
87-
88-
// Adapted from convert-source-map (MIT)
89-
function toComment(sourceMap) {
90-
// eslint-disable-next-line no-undef
91-
const base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
92-
const data = `sourceMappingURL=data:application/json;charset=utf-8;base64,${base64}`;
93-
94-
return `/*# ${data} */`;
95-
}

Diff for: ‎src/runtime/cssWithMappingToString.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
module.exports = function cssWithMappingToString(item) {
2+
const [, content, , cssMapping] = item;
3+
4+
if (typeof btoa === 'function') {
5+
// eslint-disable-next-line no-undef
6+
const base64 = btoa(
7+
unescape(encodeURIComponent(JSON.stringify(cssMapping)))
8+
);
9+
const data = `sourceMappingURL=data:application/json;charset=utf-8;base64,${base64}`;
10+
const sourceMapping = `/*# ${data} */`;
11+
12+
const sourceURLs = cssMapping.sources.map(
13+
(source) => `/*# sourceURL=${cssMapping.sourceRoot || ''}${source} */`
14+
);
15+
16+
return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
17+
}
18+
19+
return [content].join('\n');
20+
};

Diff for: ‎src/utils.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,12 @@ function getModuleCode(result, api, replacements, options, loaderContext) {
484484
: '';
485485

486486
let code = JSON.stringify(result.css);
487-
let beforeCode = `var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(${options.sourceMap});\n`;
487+
488+
let beforeCode = `var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(${
489+
options.sourceMap
490+
? '___CSS_LOADER_API_SOURCEMAP_IMPORT___'
491+
: 'function(i){return i[1]}'
492+
});\n`;
488493

489494
for (const item of api) {
490495
const { url, media, dedupe } = item;

Diff for: ‎test/__snapshots__/esModule-option.test.js.snap

+6-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
88
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\";
99
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
1010
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
11-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
11+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
1212
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
1313
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
1414
// Module
@@ -54,7 +54,7 @@ var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\");
5454
var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\");
5555
var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\");
5656
var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\");
57-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
57+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
5858
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
5959
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
6060
// Module
@@ -100,7 +100,7 @@ import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
100100
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\";
101101
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
102102
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
103-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
103+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
104104
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
105105
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
106106
// Module
@@ -146,7 +146,7 @@ import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
146146
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\";
147147
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
148148
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
149-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
149+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
150150
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
151151
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
152152
// Module
@@ -195,7 +195,7 @@ import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
195195
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\";
196196
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
197197
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
198-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
198+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
199199
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
200200
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
201201
// Module
@@ -244,7 +244,7 @@ import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
244244
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\";
245245
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
246246
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
247-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
247+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
248248
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
249249
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
250250
// Module

Diff for: ‎test/__snapshots__/import-option.test.js.snap

+11-11
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident
99
import ___CSS_LOADER_AT_RULE_IMPORT_1___ from \\"-!../../../src/index.js??[ident]!./order-2.css\\";
1010
import ___CSS_LOADER_AT_RULE_IMPORT_2___ from \\"-!../../../src/index.js??[ident]!./order-3.css\\";
1111
import ___CSS_LOADER_AT_RULE_IMPORT_3___ from \\"-!../../../src/index.js??[ident]!./order-4.css\\";
12-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
12+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
1313
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
1414
___CSS_LOADER_EXPORT___.push([module.id, \\"@import url(http://example.com/style.css);\\"]);
1515
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);
@@ -158,7 +158,7 @@ exports[`"import" option should resolve "file" protocol: module 1`] = `
158158
"// Imports
159159
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
160160
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./test.css\\";
161-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
161+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
162162
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
163163
// Module
164164
___CSS_LOADER_EXPORT___.push([module.id, \\"\\", \\"\\"]);
@@ -193,7 +193,7 @@ exports[`"import" option should resolve absolute path: module 1`] = `
193193
"// Imports
194194
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
195195
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./test.css\\";
196-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
196+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
197197
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
198198
// Module
199199
___CSS_LOADER_EXPORT___.push([module.id, \\"\\", \\"\\"]);
@@ -228,7 +228,7 @@ exports[`"import" option should resolve server-relative url relative rootContext
228228
"// Imports
229229
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
230230
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./test.css\\";
231-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
231+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
232232
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
233233
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
234234
// Module
@@ -275,7 +275,7 @@ exports[`"import" option should respect conditionNames: module 1`] = `
275275
"// Imports
276276
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
277277
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./node_modules/package-with-exports/style.css\\";
278-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
278+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
279279
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
280280
// Module
281281
___CSS_LOADER_EXPORT___.push([module.id, \\"\\\\n\\", \\"\\"]);
@@ -310,7 +310,7 @@ exports[`"import" option should respect style field in package.json: errors 1`]
310310
exports[`"import" option should respect style field in package.json: module 1`] = `
311311
"// Imports
312312
import ___CSS_LOADER_API_IMPORT___ from \\"../../../../../src/runtime/api.js\\";
313-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
313+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
314314
// Module
315315
___CSS_LOADER_EXPORT___.push([module.id, \\".test {\\\\n color: coral;\\\\n}\\\\n\\", \\"\\"]);
316316
// Exports
@@ -356,7 +356,7 @@ import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
356356
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./test.css\\";
357357
import ___CSS_LOADER_AT_RULE_IMPORT_1___ from \\"-!../../../src/index.js??[ident]!./issue-683.css\\";
358358
import ___CSS_LOADER_AT_RULE_IMPORT_2___ from \\"-!../../../src/index.js??[ident]!./node_modules/package/tilde.css\\";
359-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
359+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
360360
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
361361
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);
362362
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_2___);
@@ -436,7 +436,7 @@ import ___CSS_LOADER_AT_RULE_IMPORT_17___ from \\"-!../../../src/index.js??[iden
436436
import ___CSS_LOADER_AT_RULE_IMPORT_18___ from \\"-!../../../src/index.js??[ident]!./something.css?foo=2&bar=1\\";
437437
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
438438
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
439-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
439+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
440440
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and (orientation:landscape)\\");
441441
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___, \\"(min-width: 100px)\\");
442442
___CSS_LOADER_EXPORT___.push([module.id, \\"@import url(http://example.com/style.css);\\"]);
@@ -960,7 +960,7 @@ import ___CSS_LOADER_AT_RULE_IMPORT_23___ from \\"-!../../../src/index.js??[iden
960960
import ___CSS_LOADER_AT_RULE_IMPORT_24___ from \\"-!../../../src/index.js??[ident]!./something.css?foo=2&bar=1\\";
961961
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
962962
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
963-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
963+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
964964
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
965965
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
966966
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
@@ -1791,7 +1791,7 @@ exports[`"import" option should work with a value equal to "false": module 1`] =
17911791
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
17921792
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
17931793
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
1794-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
1794+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
17951795
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
17961796
// Module
17971797
___CSS_LOADER_EXPORT___.push([module.id, \\"@import url(test.css);\\\\n@import url('test.css');\\\\n@import url(\\\\\\"test.css\\\\\\");\\\\n@IMPORT url(test.css);\\\\n@import URL(test.css);\\\\n@import url(test.css );\\\\n@import url( test.css);\\\\n@import url( test.css );\\\\n@import url(\\\\n test.css\\\\n);\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import \\\\\\"test.css\\\\\\";\\\\n@import 'test.css';\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\" \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import url(test.css) screen and (orientation:landscape);\\\\n@import url(test.css) SCREEN AND (ORIENTATION: LANDSCAPE);\\\\n@import url(test.css)screen and (orientation:landscape);\\\\n@import url(test.css) screen and (orientation:landscape);\\\\n@import url(test-media.css) screen and (orientation:landscape);\\\\n@import url(test-other.css) (min-width: 100px);\\\\n@import url(http://example.com/style.css);\\\\n@import url(http://example.com/style.css);\\\\n@import url(http://example.com/style.css#hash);\\\\n@import url(http://example.com/style.css?#hash);\\\\n@import url(http://example.com/style.css?foo=bar#hash);\\\\n@import url(http://example.com/other-style.css) screen and (orientation:landscape);\\\\n@import url(http://example.com/other-style.css) screen and (orientation:landscape);\\\\n@import url(\\\\\\"//example.com/style.css\\\\\\");\\\\n@import url(~package/test.css);\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n@import url('query.css?foo=1&bar=1');\\\\n@import url('other-query.css?foo=1&bar=1#hash');\\\\n@import url('other-query.css?foo=1&bar=1#hash') screen and (orientation:landscape);\\\\n@import url('https://fonts.googleapis.com/css?family=Roboto');\\\\n@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC');\\\\n@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto');\\\\n\\\\n.class {\\\\n a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n @import 'path.css';\\\\n}\\\\n\\\\n@import url('./relative.css');\\\\n@import url('../import/top-relative.css');\\\\n@import url(~package/tilde.css);\\\\n@import url(~aliasesImport/alias.css);\\\\n@import url('./url.css');\\\\n\\\\n.background {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n@import url(./test.css);\\\\n\\\\n@import './te\\\\\\\\\\\\nst.css';\\\\n@import './te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css';\\\\n@import url('./te\\\\\\\\\\\\nst.css');\\\\n@import url('./te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css');\\\\n\\\\n@import \\\\\\"./te'st.css\\\\\\";\\\\n@import url(\\\\\\"./te'st.css\\\\\\");\\\\n@import './te\\\\\\\\'st.css';\\\\n@import url('./te\\\\\\\\'st.css');\\\\n@import './test test.css';\\\\n@import url('./test test.css');\\\\n@import './test\\\\\\\\ test.css';\\\\n@import url('./test\\\\\\\\ test.css');\\\\n@import './test%20test.css';\\\\n@import url('./test%20test.css');\\\\n@import './\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import './t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import url(./test\\\\\\\\ test.css);\\\\n@import url(./t\\\\\\\\65st%20test.css);\\\\n@import url('./t\\\\\\\\65st%20test.css');\\\\n@import url(\\\\\\"./t\\\\\\\\65st%20test.css\\\\\\");\\\\n@import \\\\\\"./t\\\\\\\\65st%20test.css\\\\\\";\\\\n@import './t\\\\\\\\65st%20test.css';\\\\n@import url( test.css );\\\\n@import nourl(test.css);\\\\n@import '\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n';\\\\n@import url('!!../../helpers/string-loader.js?esModule=false!~package/tilde.css');\\\\n@import url(test.css?foo=bar);\\\\n@import url(test.css?foo=bar#hash);\\\\n@import url(test.css?#hash);\\\\n@import \\\\\\"test.css\\\\\\" supports(display: flex);\\\\n@import \\\\\\"test.css\\\\\\" supports(display: flex) screen and (orientation:landscape);\\\\n\\\\n/* Should be one import and two css modules */\\\\n\\\\n@import url('something.css');\\\\n@import url('something.css');\\\\n\\\\n/* Should be one import and two css modules */\\\\n\\\\n@import url('something.css?foo=bar');\\\\n@import url('something.css?foo=bar');\\\\n\\\\n/* Should be one import and two css modules */\\\\n\\\\n@import url('something.css?foo=bar#hash');\\\\n@import url('something.css?foo=bar#hash');\\\\n\\\\n/* Should be two import and two css modules */\\\\n\\\\n@import url('something.css?foo=bar');\\\\n@import url('something.css?bar=foo');\\\\n\\\\n/* Should be two import and two css modules */\\\\n\\\\n@import url('something.css?foo=bar#one');\\\\n@import url('something.css?foo=bar#two');\\\\n\\\\n/* Should be two import and two css modules */\\\\n\\\\n@import url('something.css?foo=1&bar=2');\\\\n@import url('something.css?foo=2&bar=1');\\\\n\\", \\"\\"]);
@@ -1989,7 +1989,7 @@ import ___CSS_LOADER_AT_RULE_IMPORT_23___ from \\"-!../../../src/index.js??[iden
19891989
import ___CSS_LOADER_AT_RULE_IMPORT_24___ from \\"-!../../../src/index.js??[ident]!./something.css?foo=2&bar=1\\";
19901990
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
19911991
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\";
1992-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
1992+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
19931993
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
19941994
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
19951995
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);

Diff for: ‎test/__snapshots__/importLoaders-option.test.js.snap

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ exports[`"importLoaders" option should work when not specified: module 1`] = `
77
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
88
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js!./imported.css\\";
99
import ___CSS_LOADER_AT_RULE_IMPORT_1___ from \\"-!../../../src/index.js!./other-imported.css\\";
10-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
10+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
1111
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
1212
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);
1313
// Module
@@ -58,7 +58,7 @@ exports[`"importLoaders" option should work with a value equal to ""1"" ("postcs
5858
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
5959
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\";
6060
import ___CSS_LOADER_AT_RULE_IMPORT_1___ from \\"-!../../../src/index.js??[ident]!./other-imported.css\\";
61-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
61+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
6262
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
6363
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);
6464
// Module
@@ -109,7 +109,7 @@ exports[`"importLoaders" option should work with a value equal to "0" (\`postcss
109109
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
110110
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\";
111111
import ___CSS_LOADER_AT_RULE_IMPORT_1___ from \\"-!../../../src/index.js??[ident]!./other-imported.css\\";
112-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
112+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
113113
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
114114
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);
115115
// Module
@@ -160,7 +160,7 @@ exports[`"importLoaders" option should work with a value equal to "1" ("postcss-
160160
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
161161
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\";
162162
import ___CSS_LOADER_AT_RULE_IMPORT_1___ from \\"-!../../../src/index.js??[ident]!./other-imported.css\\";
163-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
163+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
164164
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
165165
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);
166166
// Module
@@ -211,7 +211,7 @@ exports[`"importLoaders" option should work with a value equal to "1" (no loader
211211
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
212212
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\";
213213
import ___CSS_LOADER_AT_RULE_IMPORT_1___ from \\"-!../../../src/index.js??[ident]!./other-imported.css\\";
214-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
214+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
215215
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
216216
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);
217217
// Module
@@ -262,7 +262,7 @@ exports[`"importLoaders" option should work with a value equal to "2" ("postcss-
262262
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
263263
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\";
264264
import ___CSS_LOADER_AT_RULE_IMPORT_1___ from \\"-!../../../src/index.js??[ident]!./other-imported.css\\";
265-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
265+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
266266
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
267267
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);
268268
// Module

Diff for: ‎test/__snapshots__/loader.test.js.snap

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ exports[`loader issue #1033 (2): errors 1`] = `Array []`;
55
exports[`loader issue #1033 (2): module 1`] = `
66
"// Imports
77
import ___CSS_LOADER_API_IMPORT___ from \\"../../../../src/runtime/api.js\\";
8-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
8+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
99
// Module
1010
___CSS_LOADER_EXPORT___.push([module.id, \\"\\", \\"\\"]);
1111
// Exports
@@ -47,7 +47,7 @@ import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
4747
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\";
4848
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img1x.png\\";
4949
import ___CSS_LOADER_URL_IMPORT_1___ from \\"./img2x.png\\";
50-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
50+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
5151
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
5252
var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);
5353
// Module
@@ -177,7 +177,7 @@ import ___CSS_LOADER_API_IMPORT___ from \\"../../src/runtime/api.js\\";
177177
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../src/index.js!./imported.css\\";
178178
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../src/runtime/getUrl.js\\";
179179
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./url/img.png\\";
180-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
180+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
181181
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
182182
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
183183
// Module
@@ -347,7 +347,7 @@ exports[`loader should work with "sass-loader": errors 1`] = `Array []`;
347347
exports[`loader should work with "sass-loader": module 1`] = `
348348
"// Imports
349349
import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\";
350-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
350+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
351351
// Module
352352
___CSS_LOADER_EXPORT___.push([module.id, \\"body {\\\\n font: 100% Helvetica, sans-serif;\\\\n color: #333;\\\\n}\\", \\"\\"]);
353353
// Exports
@@ -387,7 +387,7 @@ exports[`loader should work with empty css: errors 1`] = `Array []`;
387387
exports[`loader should work with empty css: module 1`] = `
388388
"// Imports
389389
import ___CSS_LOADER_API_IMPORT___ from \\"../../src/runtime/api.js\\";
390-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
390+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
391391
// Module
392392
___CSS_LOADER_EXPORT___.push([module.id, \\"\\", \\"\\"]);
393393
// Exports
@@ -415,7 +415,7 @@ import ___CSS_LOADER_API_IMPORT___ from \\"../../src/runtime/api.js\\";
415415
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../src/index.js??[ident]!./imported.css\\";
416416
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../src/runtime/getUrl.js\\";
417417
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./url/img.png\\";
418-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
418+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
419419
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
420420
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
421421
// Module
@@ -675,7 +675,7 @@ import ___CSS_LOADER_API_IMPORT___ from \\"../../src/runtime/api.js\\";
675675
import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../src/index.js??[ident]!./imported.css\\";
676676
import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../src/runtime/getUrl.js\\";
677677
import ___CSS_LOADER_URL_IMPORT_0___ from \\"./url/img.png\\";
678-
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
678+
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
679679
___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);
680680
var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
681681
// Module

Diff for: ‎test/__snapshots__/modules-option.test.js.snap

+267-267
Large diffs are not rendered by default.

Diff for: ‎test/__snapshots__/sourceMap-option.test.js.snap

+26-15
Large diffs are not rendered by default.

Diff for: ‎test/__snapshots__/url-option.test.js.snap

+6-6
Large diffs are not rendered by default.

Diff for: ‎test/runtime/api.test.js

+28-10
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
* @jest-environment jsdom
33
*/
44

5+
/* eslint-disable func-names */
6+
57
const api = require('../../src/runtime/api');
8+
const cssWithMappingToString = require('../../src/runtime/cssWithMappingToString');
69

710
describe('api', () => {
811
beforeAll(() => {
@@ -24,15 +27,19 @@ describe('api', () => {
2427
});
2528

2629
it('should toString a single module', () => {
27-
const m = api();
30+
const m = api(function (i) {
31+
return i[1];
32+
});
2833

2934
m.push([1, 'body { a: 1; }', '']);
3035

3136
expect(m.toString()).toMatchSnapshot();
3237
});
3338

3439
it('should toString multiple modules', () => {
35-
const m = api();
40+
const m = api(function (i) {
41+
return i[1];
42+
});
3643

3744
m.push([2, 'body { b: 2; }', '']);
3845
m.push([1, 'body { a: 1; }', '']);
@@ -41,7 +48,9 @@ describe('api', () => {
4148
});
4249

4350
it('should toString with media query', () => {
44-
const m = api();
51+
const m = api(function (i) {
52+
return i[1];
53+
});
4554

4655
const m1 = [1, 'body { a: 1; }', 'screen'];
4756
const m2 = [2, 'body { b: 2; }', ''];
@@ -57,7 +66,9 @@ describe('api', () => {
5766
});
5867

5968
it('should import modules', () => {
60-
const m = api();
69+
const m = api(function (i) {
70+
return i[1];
71+
});
6172
const m1 = [1, 'body { a: 1; }', '(orientation:landscape)'];
6273
const m2 = [2, 'body { b: 2; }', ''];
6374
const m3 = [3, 'body { c: 3; }', ''];
@@ -73,7 +84,9 @@ describe('api', () => {
7384
});
7485

7586
it('should import named modules', () => {
76-
const m = api();
87+
const m = api(function (i) {
88+
return i[1];
89+
});
7790
const m1 = ['./module1', 'body { a: 1; }', 'screen'];
7891
const m2 = ['./module2', 'body { b: 2; }', ''];
7992
const m3 = ['./module3', 'body { c: 3; }', ''];
@@ -88,7 +101,7 @@ describe('api', () => {
88101
});
89102

90103
it('should toString with source mapping', () => {
91-
const m = api(true);
104+
const m = api(cssWithMappingToString);
92105

93106
m.push([
94107
1,
@@ -106,7 +119,7 @@ describe('api', () => {
106119
});
107120

108121
it('should toString with a source map without "sourceRoot"', () => {
109-
const m = api(true);
122+
const m = api(cssWithMappingToString);
110123

111124
m.push([
112125
1,
@@ -125,7 +138,7 @@ describe('api', () => {
125138
it('should toString without source mapping if btoa not available', () => {
126139
global.btoa = null;
127140

128-
const m = api(true);
141+
const m = api(cssWithMappingToString);
129142

130143
m.push([
131144
1,
@@ -143,7 +156,9 @@ describe('api', () => {
143156
});
144157

145158
it('should import modules with dedupe', () => {
146-
const m = api();
159+
const m = api(function (i) {
160+
return i[1];
161+
});
147162

148163
const m1 = [null, 'body { b: 1; }', ''];
149164
const m2 = ['./module2', 'body { b: 2; }', ''];
@@ -160,11 +175,14 @@ describe('api', () => {
160175
});
161176

162177
it('should import modules when module string', () => {
163-
const m = api();
178+
const m = api(function (i) {
179+
return i[1];
180+
});
164181

165182
m.i('.button { b: 2; }');
166183
m.i('');
167184

168185
expect(m.toString()).toMatchSnapshot();
169186
});
170187
});
188+
/* eslint-enable func-names */

Diff for: ‎test/sourceMap-option.test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,8 @@ describe('"sourceMap" option', () => {
501501

502502
expect(chunkName).toBe(
503503
webpack.version[0] === '5'
504-
? 'main.f8a941345941e8190135.bundle.js'
505-
: 'main.bad4e3fa71e9f3e4c073.bundle.js'
504+
? 'main.02755d36ce181558963d.bundle.js'
505+
: 'main.535d928b9abb27709302.bundle.js'
506506
);
507507
expect(
508508
getModuleSource('fixtures/source-map/basic.css', stats)

0 commit comments

Comments
 (0)
Please sign in to comment.