css-loader 4.2.1 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/README.md +110 -3
- package/dist/CssSyntaxError.js +3 -1
- package/dist/index.js +17 -7
- package/dist/options.json +3 -4
- package/dist/plugins/postcss-icss-parser.js +101 -96
- package/dist/plugins/postcss-import-parser.js +189 -183
- package/dist/plugins/postcss-url-parser.js +198 -194
- package/dist/runtime/api.js +3 -31
- package/dist/runtime/cssWithMappingToString.js +32 -0
- package/dist/utils.js +142 -51
- package/package.json +37 -34
package/dist/utils.js
CHANGED
|
@@ -28,8 +28,6 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
28
28
|
|
|
29
29
|
var _loaderUtils = require("loader-utils");
|
|
30
30
|
|
|
31
|
-
var _normalizePath = _interopRequireDefault(require("normalize-path"));
|
|
32
|
-
|
|
33
31
|
var _cssesc = _interopRequireDefault(require("cssesc"));
|
|
34
32
|
|
|
35
33
|
var _postcssModulesValues = _interopRequireDefault(require("postcss-modules-values"));
|
|
@@ -66,6 +64,10 @@ function unescape(str) {
|
|
|
66
64
|
String.fromCharCode(high >> 10 | 0xd800, high & 0x3ff | 0xdc00);
|
|
67
65
|
/* eslint-enable line-comment-position */
|
|
68
66
|
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function normalizePath(file) {
|
|
70
|
+
return _path.default.sep === '\\' ? file.replace(/\\/g, '/') : file;
|
|
69
71
|
} // eslint-disable-next-line no-control-regex
|
|
70
72
|
|
|
71
73
|
|
|
@@ -73,6 +75,13 @@ const filenameReservedRegex = /[<>:"/\\|?*]/g; // eslint-disable-next-line no-co
|
|
|
73
75
|
|
|
74
76
|
const reControlChars = /[\u0000-\u001f\u0080-\u009f]/g;
|
|
75
77
|
|
|
78
|
+
function escapeLocalident(localident) {
|
|
79
|
+
return (0, _cssesc.default)(localident // For `[hash]` placeholder
|
|
80
|
+
.replace(/^((-?[0-9])|--)/, '_$1').replace(filenameReservedRegex, '-').replace(reControlChars, '-').replace(/\./g, '-'), {
|
|
81
|
+
isIdentifier: true
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
76
85
|
function defaultGetLocalIdent(loaderContext, localIdentName, localName, options) {
|
|
77
86
|
const {
|
|
78
87
|
context,
|
|
@@ -81,22 +90,17 @@ function defaultGetLocalIdent(loaderContext, localIdentName, localName, options)
|
|
|
81
90
|
const {
|
|
82
91
|
resourcePath
|
|
83
92
|
} = loaderContext;
|
|
84
|
-
const request = (
|
|
85
|
-
|
|
86
|
-
options.content = `${hashPrefix + request}\x00${unescape(localName)}`; // Using `[path]` placeholder outputs `/` we need escape their
|
|
87
|
-
// Also directories can contains invalid characters for css we need escape their too
|
|
93
|
+
const request = normalizePath(_path.default.relative(context, resourcePath)); // eslint-disable-next-line no-param-reassign
|
|
88
94
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
isIdentifier: true
|
|
92
|
-
}).replace(/\\\[local\\]/gi, localName);
|
|
95
|
+
options.content = `${hashPrefix + request}\x00${localName}`;
|
|
96
|
+
return (0, _loaderUtils.interpolateName)(loaderContext, localIdentName, options);
|
|
93
97
|
}
|
|
94
98
|
|
|
95
99
|
function normalizeUrl(url, isStringValue) {
|
|
96
100
|
let normalizedUrl = url;
|
|
97
101
|
|
|
98
|
-
if (isStringValue && /\\
|
|
99
|
-
normalizedUrl = normalizedUrl.replace(/\\
|
|
102
|
+
if (isStringValue && /\\(\n|\r\n|\r|\f)/.test(normalizedUrl)) {
|
|
103
|
+
normalizedUrl = normalizedUrl.replace(/\\(\n|\r\n|\r|\f)/g, '');
|
|
100
104
|
}
|
|
101
105
|
|
|
102
106
|
if (matchNativeWin32Path.test(url)) {
|
|
@@ -124,17 +128,31 @@ function getFilter(filter, resourcePath) {
|
|
|
124
128
|
};
|
|
125
129
|
}
|
|
126
130
|
|
|
127
|
-
|
|
131
|
+
function getValidLocalName(localName, exportLocalsConvention) {
|
|
132
|
+
if (exportLocalsConvention === 'dashesOnly') {
|
|
133
|
+
return dashesCamelCase(localName);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return (0, _camelcase.default)(localName);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const moduleRegExp = /\.module(s)?\.\w+$/i;
|
|
140
|
+
const icssRegExp = /\.icss\.\w+$/i;
|
|
128
141
|
|
|
129
142
|
function getModulesOptions(rawOptions, loaderContext) {
|
|
130
143
|
const {
|
|
131
144
|
resourcePath
|
|
132
145
|
} = loaderContext;
|
|
146
|
+
let isIcss;
|
|
133
147
|
|
|
134
148
|
if (typeof rawOptions.modules === 'undefined') {
|
|
135
149
|
const isModules = moduleRegExp.test(resourcePath);
|
|
136
150
|
|
|
137
151
|
if (!isModules) {
|
|
152
|
+
isIcss = icssRegExp.test(resourcePath);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (!isModules && !isIcss) {
|
|
138
156
|
return false;
|
|
139
157
|
}
|
|
140
158
|
} else if (typeof rawOptions.modules === 'boolean' && rawOptions.modules === false) {
|
|
@@ -142,7 +160,7 @@ function getModulesOptions(rawOptions, loaderContext) {
|
|
|
142
160
|
}
|
|
143
161
|
|
|
144
162
|
let modulesOptions = {
|
|
145
|
-
compileType:
|
|
163
|
+
compileType: isIcss ? 'icss' : 'module',
|
|
146
164
|
auto: true,
|
|
147
165
|
mode: 'local',
|
|
148
166
|
exportGlobals: false,
|
|
@@ -151,7 +169,8 @@ function getModulesOptions(rawOptions, loaderContext) {
|
|
|
151
169
|
localIdentHashPrefix: '',
|
|
152
170
|
// eslint-disable-next-line no-undefined
|
|
153
171
|
localIdentRegExp: undefined,
|
|
154
|
-
|
|
172
|
+
// eslint-disable-next-line no-undefined
|
|
173
|
+
getLocalIdent: undefined,
|
|
155
174
|
namedExport: false,
|
|
156
175
|
exportLocalsConvention: 'asIs',
|
|
157
176
|
exportOnlyLocals: false
|
|
@@ -200,28 +219,26 @@ function getModulesOptions(rawOptions, loaderContext) {
|
|
|
200
219
|
throw new Error('The "modules.namedExport" option requires the "esModules" option to be enabled');
|
|
201
220
|
}
|
|
202
221
|
|
|
203
|
-
if (modulesOptions.exportLocalsConvention !== 'camelCaseOnly') {
|
|
204
|
-
throw new Error('The "modules.namedExport" option requires the "modules.exportLocalsConvention" option to be "camelCaseOnly"');
|
|
222
|
+
if (modulesOptions.exportLocalsConvention !== 'camelCaseOnly' && modulesOptions.exportLocalsConvention !== 'dashesOnly') {
|
|
223
|
+
throw new Error('The "modules.namedExport" option requires the "modules.exportLocalsConvention" option to be "camelCaseOnly" or "dashesOnly"');
|
|
205
224
|
}
|
|
206
225
|
}
|
|
207
226
|
|
|
227
|
+
if (/\[emoji(?::(\d+))?\]/i.test(modulesOptions.localIdentName)) {
|
|
228
|
+
loaderContext.emitWarning('Emoji is deprecated and will be removed in next major release.');
|
|
229
|
+
}
|
|
230
|
+
|
|
208
231
|
return modulesOptions;
|
|
209
232
|
}
|
|
210
233
|
|
|
211
234
|
function normalizeOptions(rawOptions, loaderContext) {
|
|
212
|
-
if (rawOptions.icss) {
|
|
213
|
-
loaderContext.emitWarning(new Error('The "icss" option is deprecated, use "modules.compileType: "icss"" instead'));
|
|
214
|
-
}
|
|
215
|
-
|
|
216
235
|
const modulesOptions = getModulesOptions(rawOptions, loaderContext);
|
|
217
236
|
return {
|
|
218
237
|
url: typeof rawOptions.url === 'undefined' ? true : rawOptions.url,
|
|
219
238
|
import: typeof rawOptions.import === 'undefined' ? true : rawOptions.import,
|
|
220
239
|
modules: modulesOptions,
|
|
221
|
-
// TODO remove in the next major release
|
|
222
|
-
icss: typeof rawOptions.icss === 'undefined' ? false : rawOptions.icss,
|
|
223
240
|
sourceMap: typeof rawOptions.sourceMap === 'boolean' ? rawOptions.sourceMap : loaderContext.sourceMap,
|
|
224
|
-
importLoaders: rawOptions.importLoaders,
|
|
241
|
+
importLoaders: typeof rawOptions.importLoaders === 'string' ? parseInt(rawOptions.importLoaders, 10) : rawOptions.importLoaders,
|
|
225
242
|
esModule: typeof rawOptions.esModule === 'undefined' ? true : rawOptions.esModule
|
|
226
243
|
};
|
|
227
244
|
}
|
|
@@ -274,11 +291,28 @@ function getModulesPlugins(options, loaderContext) {
|
|
|
274
291
|
mode
|
|
275
292
|
}), (0, _postcssModulesExtractImports.default)(), (0, _postcssModulesScope.default)({
|
|
276
293
|
generateScopedName(exportName) {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
294
|
+
let localIdent;
|
|
295
|
+
|
|
296
|
+
if (typeof getLocalIdent !== 'undefined') {
|
|
297
|
+
localIdent = getLocalIdent(loaderContext, localIdentName, unescape(exportName), {
|
|
298
|
+
context: localIdentContext,
|
|
299
|
+
hashPrefix: localIdentHashPrefix,
|
|
300
|
+
regExp: localIdentRegExp
|
|
301
|
+
});
|
|
302
|
+
} // A null/undefined value signals that we should invoke the default
|
|
303
|
+
// getLocalIdent method.
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
if (typeof localIdent === 'undefined' || localIdent === null) {
|
|
307
|
+
localIdent = defaultGetLocalIdent(loaderContext, localIdentName, unescape(exportName), {
|
|
308
|
+
context: localIdentContext,
|
|
309
|
+
hashPrefix: localIdentHashPrefix,
|
|
310
|
+
regExp: localIdentRegExp
|
|
311
|
+
});
|
|
312
|
+
return escapeLocalident(localIdent).replace(/\\\[local\\]/gi, exportName);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
return escapeLocalident(localIdent);
|
|
282
316
|
},
|
|
283
317
|
|
|
284
318
|
exportGlobals: options.modules.exportGlobals
|
|
@@ -290,26 +324,57 @@ function getModulesPlugins(options, loaderContext) {
|
|
|
290
324
|
return plugins;
|
|
291
325
|
}
|
|
292
326
|
|
|
293
|
-
|
|
327
|
+
const IS_NATIVE_WIN32_PATH = /^[a-z]:[/\\]|^\\\\/i;
|
|
328
|
+
const ABSOLUTE_SCHEME = /^[a-z0-9+\-.]+:/i;
|
|
329
|
+
|
|
330
|
+
function getURLType(source) {
|
|
331
|
+
if (source[0] === '/') {
|
|
332
|
+
if (source[1] === '/') {
|
|
333
|
+
return 'scheme-relative';
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
return 'path-absolute';
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
if (IS_NATIVE_WIN32_PATH.test(source)) {
|
|
340
|
+
return 'path-absolute';
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
return ABSOLUTE_SCHEME.test(source) ? 'absolute' : 'path-relative';
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
function normalizeSourceMap(map, resourcePath) {
|
|
294
347
|
let newMap = map; // Some loader emit source map as string
|
|
295
348
|
// Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification), and then parse the string as JSON.
|
|
296
349
|
|
|
297
350
|
if (typeof newMap === 'string') {
|
|
298
351
|
newMap = JSON.parse(newMap);
|
|
299
|
-
} // Source maps should use forward slash because it is URLs (https://github.com/mozilla/source-map/issues/91)
|
|
300
|
-
// We should normalize path because previous loaders like `sass-loader` using backslash when generate source map
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
if (newMap.file) {
|
|
304
|
-
newMap.file = (0, _normalizePath.default)(newMap.file);
|
|
305
352
|
}
|
|
306
353
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
354
|
+
delete newMap.file;
|
|
355
|
+
const {
|
|
356
|
+
sourceRoot
|
|
357
|
+
} = newMap;
|
|
358
|
+
delete newMap.sourceRoot;
|
|
310
359
|
|
|
311
360
|
if (newMap.sources) {
|
|
312
|
-
|
|
361
|
+
// Source maps should use forward slash because it is URLs (https://github.com/mozilla/source-map/issues/91)
|
|
362
|
+
// We should normalize path because previous loaders like `sass-loader` using backslash when generate source map
|
|
363
|
+
newMap.sources = newMap.sources.map(source => {
|
|
364
|
+
// Non-standard syntax from `postcss`
|
|
365
|
+
if (source.indexOf('<') === 0) {
|
|
366
|
+
return source;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
const sourceType = getURLType(source); // Do no touch `scheme-relative` and `absolute` URLs
|
|
370
|
+
|
|
371
|
+
if (sourceType === 'path-relative' || sourceType === 'path-absolute') {
|
|
372
|
+
const absoluteSource = sourceType === 'path-relative' && sourceRoot ? _path.default.resolve(sourceRoot, normalizePath(source)) : normalizePath(source);
|
|
373
|
+
return _path.default.relative(_path.default.dirname(resourcePath), absoluteSource);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
return source;
|
|
377
|
+
});
|
|
313
378
|
}
|
|
314
379
|
|
|
315
380
|
return newMap;
|
|
@@ -360,18 +425,44 @@ function getImportCode(imports, options) {
|
|
|
360
425
|
return code ? `// Imports\n${code}` : '';
|
|
361
426
|
}
|
|
362
427
|
|
|
363
|
-
function
|
|
428
|
+
function normalizeSourceMapForRuntime(map, loaderContext) {
|
|
429
|
+
const resultMap = map ? map.toJSON() : null;
|
|
430
|
+
|
|
431
|
+
if (resultMap) {
|
|
432
|
+
delete resultMap.file;
|
|
433
|
+
resultMap.sourceRoot = '';
|
|
434
|
+
resultMap.sources = resultMap.sources.map(source => {
|
|
435
|
+
// Non-standard syntax from `postcss`
|
|
436
|
+
if (source.indexOf('<') === 0) {
|
|
437
|
+
return source;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
const sourceType = getURLType(source);
|
|
441
|
+
|
|
442
|
+
if (sourceType !== 'path-relative') {
|
|
443
|
+
return source;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
const resourceDirname = _path.default.dirname(loaderContext.resourcePath);
|
|
447
|
+
|
|
448
|
+
const absoluteSource = _path.default.resolve(resourceDirname, source);
|
|
449
|
+
|
|
450
|
+
const contextifyPath = normalizePath(_path.default.relative(loaderContext.rootContext, absoluteSource));
|
|
451
|
+
return `webpack://./${contextifyPath}`;
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
return JSON.stringify(resultMap);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
function getModuleCode(result, api, replacements, options, loaderContext) {
|
|
364
459
|
if (options.modules.exportOnlyLocals === true) {
|
|
365
460
|
return '';
|
|
366
461
|
}
|
|
367
462
|
|
|
368
|
-
const {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
} = result;
|
|
372
|
-
const sourceMapValue = options.sourceMap && map ? `,${map}` : '';
|
|
373
|
-
let code = JSON.stringify(css);
|
|
374
|
-
let beforeCode = `var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(${options.sourceMap});\n`;
|
|
463
|
+
const sourceMapValue = options.sourceMap ? `,${normalizeSourceMapForRuntime(result.map, loaderContext)}` : '';
|
|
464
|
+
let code = JSON.stringify(result.css);
|
|
465
|
+
let beforeCode = `var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(${options.sourceMap ? '___CSS_LOADER_API_SOURCEMAP_IMPORT___' : 'function(i){return i[1]}'});\n`;
|
|
375
466
|
|
|
376
467
|
for (const item of api) {
|
|
377
468
|
const {
|
|
@@ -390,7 +481,7 @@ function getModuleCode(result, api, replacements, options) {
|
|
|
390
481
|
} = item;
|
|
391
482
|
|
|
392
483
|
if (localName) {
|
|
393
|
-
code = code.replace(new RegExp(replacementName, 'g'), () => options.modules.namedExport ? `" + ${importName}_NAMED___[${JSON.stringify((
|
|
484
|
+
code = code.replace(new RegExp(replacementName, 'g'), () => options.modules.namedExport ? `" + ${importName}_NAMED___[${JSON.stringify(getValidLocalName(localName, options.modules.exportLocalsConvention))}] + "` : `" + ${importName}.locals[${JSON.stringify(localName)}] + "`);
|
|
394
485
|
} else {
|
|
395
486
|
const {
|
|
396
487
|
hash,
|
|
@@ -416,7 +507,7 @@ function getExportCode(exports, replacements, options) {
|
|
|
416
507
|
|
|
417
508
|
const addExportToLocalsCode = (name, value) => {
|
|
418
509
|
if (options.modules.namedExport) {
|
|
419
|
-
localsCode += `export const ${
|
|
510
|
+
localsCode += `export const ${name} = ${JSON.stringify(value)};\n`;
|
|
420
511
|
} else {
|
|
421
512
|
if (localsCode) {
|
|
422
513
|
localsCode += `,\n`;
|
|
@@ -486,7 +577,7 @@ function getExportCode(exports, replacements, options) {
|
|
|
486
577
|
} = item;
|
|
487
578
|
localsCode = localsCode.replace(new RegExp(replacementName, 'g'), () => {
|
|
488
579
|
if (options.modules.namedExport) {
|
|
489
|
-
return `" + ${importName}_NAMED___[${JSON.stringify((
|
|
580
|
+
return `" + ${importName}_NAMED___[${JSON.stringify(getValidLocalName(localName, options.modules.exportLocalsConvention))}] + "`;
|
|
490
581
|
} else if (options.modules.exportOnlyLocals) {
|
|
491
582
|
return `" + ${importName}[${JSON.stringify(localName)}] + "`;
|
|
492
583
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "css-loader",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"description": "css loader module for webpack",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "webpack-contrib/css-loader",
|
|
@@ -43,53 +43,56 @@
|
|
|
43
43
|
"webpack": "^4.27.0 || ^5.0.0"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"camelcase": "^6.
|
|
46
|
+
"camelcase": "^6.2.0",
|
|
47
47
|
"cssesc": "^3.0.0",
|
|
48
|
-
"icss-utils": "^
|
|
48
|
+
"icss-utils": "^5.0.0",
|
|
49
49
|
"loader-utils": "^2.0.0",
|
|
50
|
-
"
|
|
51
|
-
"postcss": "^
|
|
52
|
-
"postcss-modules-
|
|
53
|
-
"postcss-modules-
|
|
54
|
-
"postcss-modules-
|
|
55
|
-
"postcss-modules-values": "^3.0.0",
|
|
50
|
+
"postcss": "^8.1.4",
|
|
51
|
+
"postcss-modules-extract-imports": "^3.0.0",
|
|
52
|
+
"postcss-modules-local-by-default": "^4.0.0",
|
|
53
|
+
"postcss-modules-scope": "^3.0.0",
|
|
54
|
+
"postcss-modules-values": "^4.0.0",
|
|
56
55
|
"postcss-value-parser": "^4.1.0",
|
|
57
|
-
"schema-utils": "^
|
|
56
|
+
"schema-utils": "^3.0.0",
|
|
58
57
|
"semver": "^7.3.2"
|
|
59
58
|
},
|
|
60
59
|
"devDependencies": {
|
|
61
|
-
"@babel/cli": "^7.
|
|
62
|
-
"@babel/core": "^7.
|
|
63
|
-
"@babel/preset-env": "^7.
|
|
64
|
-
"@commitlint/cli": "^
|
|
65
|
-
"@commitlint/config-conventional": "^
|
|
60
|
+
"@babel/cli": "^7.12.1",
|
|
61
|
+
"@babel/core": "^7.12.3",
|
|
62
|
+
"@babel/preset-env": "^7.12.1",
|
|
63
|
+
"@commitlint/cli": "^11.0.0",
|
|
64
|
+
"@commitlint/config-conventional": "^11.0.0",
|
|
66
65
|
"@webpack-contrib/defaults": "^6.3.0",
|
|
67
66
|
"@webpack-contrib/eslint-config-webpack": "^3.0.0",
|
|
68
|
-
"babel-jest": "^26.
|
|
67
|
+
"babel-jest": "^26.6.3",
|
|
69
68
|
"cross-env": "^7.0.2",
|
|
70
|
-
"del": "^
|
|
69
|
+
"del": "^6.0.0",
|
|
71
70
|
"del-cli": "^3.0.1",
|
|
72
|
-
"es-check": "^5.1.
|
|
73
|
-
"eslint": "^7.
|
|
74
|
-
"eslint-config-prettier": "^6.
|
|
75
|
-
"eslint-plugin-import": "^2.22.
|
|
76
|
-
"file-loader": "^6.
|
|
77
|
-
"husky": "^4.
|
|
78
|
-
"jest": "^26.
|
|
79
|
-
"
|
|
71
|
+
"es-check": "^5.1.2",
|
|
72
|
+
"eslint": "^7.12.1",
|
|
73
|
+
"eslint-config-prettier": "^6.15.0",
|
|
74
|
+
"eslint-plugin-import": "^2.22.1",
|
|
75
|
+
"file-loader": "^6.2.0",
|
|
76
|
+
"husky": "^4.3.0",
|
|
77
|
+
"jest": "^26.6.3",
|
|
78
|
+
"less": "^3.12.2",
|
|
79
|
+
"less-loader": "^7.0.2",
|
|
80
|
+
"lint-staged": "^10.5.1",
|
|
80
81
|
"memfs": "^3.2.0",
|
|
81
|
-
"mini-css-extract-plugin": "^
|
|
82
|
+
"mini-css-extract-plugin": "^1.2.1",
|
|
82
83
|
"npm-run-all": "^4.1.5",
|
|
83
|
-
"postcss-loader": "^
|
|
84
|
+
"postcss-loader": "^4.0.4",
|
|
84
85
|
"postcss-preset-env": "^6.7.0",
|
|
85
|
-
"prettier": "^2.
|
|
86
|
-
"sass": "^1.
|
|
87
|
-
"sass-loader": "^
|
|
88
|
-
"standard-version": "^
|
|
86
|
+
"prettier": "^2.1.2",
|
|
87
|
+
"sass": "^1.28.0",
|
|
88
|
+
"sass-loader": "^10.0.5",
|
|
89
|
+
"standard-version": "^9.0.0",
|
|
89
90
|
"strip-ansi": "^6.0.0",
|
|
90
|
-
"style-loader": "^
|
|
91
|
-
"
|
|
92
|
-
"
|
|
91
|
+
"style-loader": "^2.0.0",
|
|
92
|
+
"stylus": "^0.54.8",
|
|
93
|
+
"stylus-loader": "^4.2.0",
|
|
94
|
+
"url-loader": "^4.1.1",
|
|
95
|
+
"webpack": "^5.4.0"
|
|
93
96
|
},
|
|
94
97
|
"keywords": [
|
|
95
98
|
"webpack",
|