css-loader 5.2.1 → 5.2.5

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/README.md CHANGED
@@ -125,8 +125,7 @@ module.exports = {
125
125
  Type: `Boolean|Function`
126
126
  Default: `true`
127
127
 
128
- Enables/Disables `url`/`image-set` functions handling.
129
- Control `url()` resolving. Absolute paths and root-relative URLs now resolving(Version [4.0.0](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md#400-2020-07-25) and above).
128
+ Enables/Disables handling the CSS functions `url` and `image-set`. If set to `false`, `css-loader` will not parse any paths specified in `url` or `image-set`. A function can also be passed to control this behavior dynamically based on the path to the asset. Starting with version [4.0.0](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md#400-2020-07-25), absolute paths are parsed based on the server root.
130
129
 
131
130
  Examples resolutions:
132
131
 
@@ -1132,6 +1131,38 @@ module.exports = {
1132
1131
 
1133
1132
  ## Examples
1134
1133
 
1134
+ ### Recommend
1135
+
1136
+ For `production` builds it's recommended to extract the CSS from your bundle being able to use parallel loading of CSS/JS resources later on.
1137
+ This can be achieved by using the [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin), because it creates separate css files.
1138
+ For `development` mode (including `webpack-dev-server`) you can use [style-loader](https://github.com/webpack-contrib/style-loader), because it injects CSS into the DOM using multiple <style></style> and works faster.
1139
+
1140
+ > i Do not use together `style-loader` and `mini-css-extract-plugin`.
1141
+
1142
+ **webpack.config.js**
1143
+
1144
+ ```js
1145
+ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
1146
+ const devMode = process.env.NODE_ENV !== "production";
1147
+
1148
+ module.exports = {
1149
+ module: {
1150
+ rules: [
1151
+ {
1152
+ test: /\.(sa|sc|c)ss$/,
1153
+ use: [
1154
+ devMode ? "style-loader" : MiniCssExtractPlugin.loader,
1155
+ "css-loader",
1156
+ "postcss-loader",
1157
+ "sass-loader",
1158
+ ],
1159
+ },
1160
+ ],
1161
+ },
1162
+ plugins: [].concat(devMode ? [] : [new MiniCssExtractPlugin()]),
1163
+ };
1164
+ ```
1165
+
1135
1166
  ### Disable url resolving using the `/* webpackIgnore: true */` comment
1136
1167
 
1137
1168
  With the help of the `/* webpackIgnore: true */`comment, it is possible to disable sources handling for rules and for individual declarations.
@@ -1236,14 +1267,6 @@ module.exports = {
1236
1267
  };
1237
1268
  ```
1238
1269
 
1239
- ### Extract
1240
-
1241
- For production builds it's recommended to extract the CSS from your bundle being able to use parallel loading of CSS/JS resources later on.
1242
-
1243
- - This can be achieved by using the [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) to extract the CSS when running in production mode.
1244
-
1245
- - As an alternative, if seeking better development performance and css outputs that mimic production. [extract-css-chunks-webpack-plugin](https://github.com/faceyspacey/extract-css-chunks-webpack-plugin) offers a hot module reload friendly, extended version of mini-css-extract-plugin. HMR real CSS files in dev, works like mini-css in non-dev
1246
-
1247
1270
  ### Pure CSS, CSS modules and PostCSS
1248
1271
 
1249
1272
  When you have pure CSS (without CSS modules), CSS modules and PostCSS in your project you can use this setup:
@@ -47,6 +47,12 @@ const plugin = (options = {}) => {
47
47
  context
48
48
  } = options;
49
49
  const resolvedUrl = await (0, _utils.resolveRequests)(resolver, context, [...new Set([normalizedUrl, request])]);
50
+
51
+ if (!resolvedUrl) {
52
+ return;
53
+ } // eslint-disable-next-line consistent-return
54
+
55
+
50
56
  return {
51
57
  url: resolvedUrl,
52
58
  prefix,
@@ -60,12 +66,14 @@ const plugin = (options = {}) => {
60
66
  const results = await Promise.all(tasks);
61
67
 
62
68
  for (let index = 0; index <= results.length - 1; index++) {
63
- const {
64
- url,
65
- prefix,
66
- tokens
67
- } = results[index];
68
- const newUrl = prefix ? `${prefix}!${url}` : url;
69
+ const item = results[index];
70
+
71
+ if (!item) {
72
+ // eslint-disable-next-line no-continue
73
+ continue;
74
+ }
75
+
76
+ const newUrl = item.prefix ? `${item.prefix}!${item.url}` : item.url;
69
77
  const importKey = newUrl;
70
78
  let importName = imports.get(importKey);
71
79
 
@@ -85,9 +93,9 @@ const plugin = (options = {}) => {
85
93
  });
86
94
  }
87
95
 
88
- for (const [replacementIndex, token] of Object.keys(tokens).entries()) {
96
+ for (const [replacementIndex, token] of Object.keys(item.tokens).entries()) {
89
97
  const replacementName = `___CSS_LOADER_ICSS_IMPORT_${index}_REPLACEMENT_${replacementIndex}___`;
90
- const localName = tokens[token];
98
+ const localName = item.tokens[token];
91
99
  importReplacements[token] = replacementName;
92
100
  options.replacements.push({
93
101
  replacementName,
@@ -19,7 +19,7 @@ function parseNode(atRule, key) {
19
19
 
20
20
  if (atRule.raws && atRule.raws.afterName && atRule.raws.afterName.trim().length > 0) {
21
21
  const lastCommentIndex = atRule.raws.afterName.lastIndexOf("/*");
22
- const matched = atRule.raws.afterName.slice(lastCommentIndex).match(_utils.webpackIgnoreCommentRegexp);
22
+ const matched = atRule.raws.afterName.slice(lastCommentIndex).match(_utils.WEBPACK_IGNORE_COMMENT_REGEXP);
23
23
 
24
24
  if (matched && matched[2] === "true") {
25
25
  return;
@@ -29,7 +29,7 @@ function parseNode(atRule, key) {
29
29
  const prevNode = atRule.prev();
30
30
 
31
31
  if (prevNode && prevNode.type === "comment") {
32
- const matched = prevNode.text.match(_utils.webpackIgnoreCommentRegexp);
32
+ const matched = prevNode.text.match(_utils.WEBPACK_IGNORE_COMMENT_REGEXP);
33
33
 
34
34
  if (matched && matched[2] === "true") {
35
35
  return;
@@ -155,12 +155,10 @@ const plugin = (options = {}) => {
155
155
  const needKeep = await options.filter(url, media);
156
156
 
157
157
  if (!needKeep) {
158
- return null;
158
+ return;
159
159
  }
160
160
  }
161
161
 
162
- atRule.remove();
163
-
164
162
  if (isRequestable) {
165
163
  const request = (0, _utils.requestify)(url, options.rootContext);
166
164
  const {
@@ -168,6 +166,13 @@ const plugin = (options = {}) => {
168
166
  context
169
167
  } = options;
170
168
  const resolvedUrl = await (0, _utils.resolveRequests)(resolver, context, [...new Set([request, url])]);
169
+
170
+ if (!resolvedUrl) {
171
+ return;
172
+ }
173
+
174
+ atRule.remove(); // eslint-disable-next-line consistent-return
175
+
171
176
  return {
172
177
  url: resolvedUrl,
173
178
  media,
@@ -176,6 +181,8 @@ const plugin = (options = {}) => {
176
181
  };
177
182
  }
178
183
 
184
+ atRule.remove(); // eslint-disable-next-line consistent-return
185
+
179
186
  return {
180
187
  url,
181
188
  media,
@@ -45,7 +45,7 @@ function getWebpackIgnoreCommentValue(index, nodes, inBetween) {
45
45
  return;
46
46
  }
47
47
 
48
- const matched = prevValueNode.value.match(_utils.webpackIgnoreCommentRegexp);
48
+ const matched = prevValueNode.value.match(_utils.WEBPACK_IGNORE_COMMENT_REGEXP);
49
49
  return matched && matched[2] === "true";
50
50
  }
51
51
 
@@ -74,7 +74,7 @@ function parseDeclaration(declaration, key, result) {
74
74
 
75
75
  if (declaration.raws && declaration.raws.between) {
76
76
  const lastCommentIndex = declaration.raws.between.lastIndexOf("/*");
77
- const matched = declaration.raws.between.slice(lastCommentIndex).match(_utils.webpackIgnoreCommentRegexp);
77
+ const matched = declaration.raws.between.slice(lastCommentIndex).match(_utils.WEBPACK_IGNORE_COMMENT_REGEXP);
78
78
 
79
79
  if (matched) {
80
80
  inBetween = matched[2] === "true";
@@ -85,7 +85,7 @@ function parseDeclaration(declaration, key, result) {
85
85
  const prevNode = declaration.prev();
86
86
 
87
87
  if (prevNode && prevNode.type === "comment") {
88
- const matched = prevNode.text.match(_utils.webpackIgnoreCommentRegexp);
88
+ const matched = prevNode.text.match(_utils.WEBPACK_IGNORE_COMMENT_REGEXP);
89
89
 
90
90
  if (matched) {
91
91
  isIgnoreOnDeclaration = matched[2] === "true";
@@ -268,7 +268,7 @@ const plugin = (options = {}) => {
268
268
  const needKeep = await options.filter(url);
269
269
 
270
270
  if (!needKeep) {
271
- return null;
271
+ return;
272
272
  }
273
273
  }
274
274
 
@@ -282,18 +282,23 @@ const plugin = (options = {}) => {
282
282
  context
283
283
  } = options;
284
284
  const resolvedUrl = await (0, _utils.resolveRequests)(resolver, context, [...new Set([request, url])]);
285
+
286
+ if (!resolvedUrl) {
287
+ return;
288
+ } // eslint-disable-next-line consistent-return
289
+
290
+
285
291
  return { ...parsedDeclaration,
286
292
  url: resolvedUrl,
287
293
  hash
288
294
  };
289
295
  }));
290
- const results = await Promise.all(resolvedDeclarations);
291
296
  const urlToNameMap = new Map();
292
297
  const urlToReplacementMap = new Map();
293
298
  let hasUrlImportHelper = false;
294
299
 
295
- for (let index = 0; index <= results.length - 1; index++) {
296
- const item = results[index];
300
+ for (let index = 0; index <= resolvedDeclarations.length - 1; index++) {
301
+ const item = resolvedDeclarations[index];
297
302
 
298
303
  if (!item) {
299
304
  // eslint-disable-next-line no-continue
@@ -8,7 +8,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
8
8
 
9
9
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
10
10
 
11
- function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
11
+ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
12
12
 
13
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
14
 
package/dist/utils.js CHANGED
@@ -22,7 +22,8 @@ exports.resolveRequests = resolveRequests;
22
22
  exports.isUrlRequestable = isUrlRequestable;
23
23
  exports.sort = sort;
24
24
  exports.combineRequests = combineRequests;
25
- exports.webpackIgnoreCommentRegexp = void 0;
25
+ exports.camelCase = camelCase;
26
+ exports.WEBPACK_IGNORE_COMMENT_REGEXP = void 0;
26
27
 
27
28
  var _url = require("url");
28
29
 
@@ -30,8 +31,6 @@ var _path = _interopRequireDefault(require("path"));
30
31
 
31
32
  var _loaderUtils = require("loader-utils");
32
33
 
33
- var _cssesc = _interopRequireDefault(require("cssesc"));
34
-
35
34
  var _postcssModulesValues = _interopRequireDefault(require("postcss-modules-values"));
36
35
 
37
36
  var _postcssModulesLocalByDefault = _interopRequireDefault(require("postcss-modules-local-by-default"));
@@ -40,34 +39,193 @@ var _postcssModulesExtractImports = _interopRequireDefault(require("postcss-modu
40
39
 
41
40
  var _postcssModulesScope = _interopRequireDefault(require("postcss-modules-scope"));
42
41
 
43
- var _camelcase = _interopRequireDefault(require("camelcase"));
44
-
45
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
46
43
 
47
44
  /*
48
45
  MIT License http://www.opensource.org/licenses/mit-license.php
49
46
  Author Tobias Koppers @sokra
50
47
  */
51
- const whitespace = "[\\x20\\t\\r\\n\\f]";
52
- const unescapeRegExp = new RegExp(`\\\\([\\da-f]{1,6}${whitespace}?|(${whitespace})|.)`, "ig");
53
- const matchNativeWin32Path = /^[A-Z]:[/\\]|^\\\\/i;
54
- const webpackIgnoreCommentRegexp = /webpackIgnore:(\s+)?(true|false)/;
55
- exports.webpackIgnoreCommentRegexp = webpackIgnoreCommentRegexp;
48
+ const WEBPACK_IGNORE_COMMENT_REGEXP = /webpackIgnore:(\s+)?(true|false)/; // eslint-disable-next-line no-useless-escape
49
+
50
+ exports.WEBPACK_IGNORE_COMMENT_REGEXP = WEBPACK_IGNORE_COMMENT_REGEXP;
51
+ const regexSingleEscape = /[ -,.\/:-@[\]\^`{-~]/;
52
+ const regexExcessiveSpaces = /(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g;
53
+
54
+ const preserveCamelCase = string => {
55
+ let result = string;
56
+ let isLastCharLower = false;
57
+ let isLastCharUpper = false;
58
+ let isLastLastCharUpper = false;
59
+
60
+ for (let i = 0; i < result.length; i++) {
61
+ const character = result[i];
62
+
63
+ if (isLastCharLower && /[\p{Lu}]/u.test(character)) {
64
+ result = `${result.slice(0, i)}-${result.slice(i)}`;
65
+ isLastCharLower = false;
66
+ isLastLastCharUpper = isLastCharUpper;
67
+ isLastCharUpper = true;
68
+ i += 1;
69
+ } else if (isLastCharUpper && isLastLastCharUpper && /[\p{Ll}]/u.test(character)) {
70
+ result = `${result.slice(0, i - 1)}-${result.slice(i - 1)}`;
71
+ isLastLastCharUpper = isLastCharUpper;
72
+ isLastCharUpper = false;
73
+ isLastCharLower = true;
74
+ } else {
75
+ isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;
76
+ isLastLastCharUpper = isLastCharUpper;
77
+ isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;
78
+ }
79
+ }
56
80
 
57
- function unescape(str) {
58
- return str.replace(unescapeRegExp, (_, escaped, escapedWhitespace) => {
59
- const high = `0x${escaped}` - 0x10000;
60
- /* eslint-disable line-comment-position */
61
- // NaN means non-codepoint
62
- // Workaround erroneous numeric interpretation of +"0x"
63
- // eslint-disable-next-line no-self-compare
64
-
65
- return high !== high || escapedWhitespace ? escaped : high < 0 ? // BMP codepoint
66
- String.fromCharCode(high + 0x10000) : // Supplemental Plane codepoint (surrogate pair)
67
- // eslint-disable-next-line no-bitwise
68
- String.fromCharCode(high >> 10 | 0xd800, high & 0x3ff | 0xdc00);
69
- /* eslint-enable line-comment-position */
81
+ return result;
82
+ };
83
+
84
+ function camelCase(input) {
85
+ let result = input.trim();
86
+
87
+ if (result.length === 0) {
88
+ return "";
89
+ }
90
+
91
+ if (result.length === 1) {
92
+ return result.toLowerCase();
93
+ }
94
+
95
+ const hasUpperCase = result !== result.toLowerCase();
96
+
97
+ if (hasUpperCase) {
98
+ result = preserveCamelCase(result);
99
+ }
100
+
101
+ return result.replace(/^[_.\- ]+/, "").toLowerCase().replace(/[_.\- ]+([\p{Alpha}\p{N}_]|$)/gu, (_, p1) => p1.toUpperCase()).replace(/\d+([\p{Alpha}\p{N}_]|$)/gu, m => m.toUpperCase());
102
+ }
103
+
104
+ function escape(string) {
105
+ let output = "";
106
+ let counter = 0;
107
+
108
+ while (counter < string.length) {
109
+ // eslint-disable-next-line no-plusplus
110
+ const character = string.charAt(counter++);
111
+ let value; // eslint-disable-next-line no-control-regex
112
+
113
+ if (/[\t\n\f\r\x0B]/.test(character)) {
114
+ const codePoint = character.charCodeAt();
115
+ value = `\\${codePoint.toString(16).toUpperCase()} `;
116
+ } else if (character === "\\" || regexSingleEscape.test(character)) {
117
+ value = `\\${character}`;
118
+ } else {
119
+ value = character;
120
+ }
121
+
122
+ output += value;
123
+ }
124
+
125
+ const firstChar = string.charAt(0);
126
+
127
+ if (/^-[-\d]/.test(output)) {
128
+ output = `\\-${output.slice(1)}`;
129
+ } else if (/\d/.test(firstChar)) {
130
+ output = `\\3${firstChar} ${output.slice(1)}`;
131
+ } // Remove spaces after `\HEX` escapes that are not followed by a hex digit,
132
+ // since they’re redundant. Note that this is only possible if the escape
133
+ // sequence isn’t preceded by an odd number of backslashes.
134
+
135
+
136
+ output = output.replace(regexExcessiveSpaces, ($0, $1, $2) => {
137
+ if ($1 && $1.length % 2) {
138
+ // It’s not safe to remove the space, so don’t.
139
+ return $0;
140
+ } // Strip the space.
141
+
142
+
143
+ return ($1 || "") + $2;
70
144
  });
145
+ return output;
146
+ }
147
+
148
+ function gobbleHex(str) {
149
+ const lower = str.toLowerCase();
150
+ let hex = "";
151
+ let spaceTerminated = false; // eslint-disable-next-line no-undefined
152
+
153
+ for (let i = 0; i < 6 && lower[i] !== undefined; i++) {
154
+ const code = lower.charCodeAt(i); // check to see if we are dealing with a valid hex char [a-f|0-9]
155
+
156
+ const valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point
157
+
158
+ spaceTerminated = code === 32;
159
+
160
+ if (!valid) {
161
+ break;
162
+ }
163
+
164
+ hex += lower[i];
165
+ }
166
+
167
+ if (hex.length === 0) {
168
+ // eslint-disable-next-line no-undefined
169
+ return undefined;
170
+ }
171
+
172
+ const codePoint = parseInt(hex, 16);
173
+ const isSurrogate = codePoint >= 0xd800 && codePoint <= 0xdfff; // Add special case for
174
+ // "If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point"
175
+ // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point
176
+
177
+ if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10ffff) {
178
+ return ["\uFFFD", hex.length + (spaceTerminated ? 1 : 0)];
179
+ }
180
+
181
+ return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];
182
+ }
183
+
184
+ const CONTAINS_ESCAPE = /\\/;
185
+
186
+ function unescape(str) {
187
+ const needToProcess = CONTAINS_ESCAPE.test(str);
188
+
189
+ if (!needToProcess) {
190
+ return str;
191
+ }
192
+
193
+ let ret = "";
194
+
195
+ for (let i = 0; i < str.length; i++) {
196
+ if (str[i] === "\\") {
197
+ const gobbled = gobbleHex(str.slice(i + 1, i + 7)); // eslint-disable-next-line no-undefined
198
+
199
+ if (gobbled !== undefined) {
200
+ ret += gobbled[0];
201
+ i += gobbled[1]; // eslint-disable-next-line no-continue
202
+
203
+ continue;
204
+ } // Retain a pair of \\ if double escaped `\\\\`
205
+ // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e
206
+
207
+
208
+ if (str[i + 1] === "\\") {
209
+ ret += "\\";
210
+ i += 1; // eslint-disable-next-line no-continue
211
+
212
+ continue;
213
+ } // if \\ is at the end of the string retain it
214
+ // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb
215
+
216
+
217
+ if (str.length === i + 1) {
218
+ ret += str[i];
219
+ } // eslint-disable-next-line no-continue
220
+
221
+
222
+ continue;
223
+ }
224
+
225
+ ret += str[i];
226
+ }
227
+
228
+ return ret;
71
229
  }
72
230
 
73
231
  function normalizePath(file) {
@@ -80,10 +238,9 @@ const filenameReservedRegex = /[<>:"/\\|?*]/g; // eslint-disable-next-line no-co
80
238
  const reControlChars = /[\u0000-\u001f\u0080-\u009f]/g;
81
239
 
82
240
  function escapeLocalIdent(localident) {
83
- return (0, _cssesc.default)(localident // For `[hash]` placeholder
84
- .replace(/^((-?[0-9])|--)/, "_$1").replace(filenameReservedRegex, "-").replace(reControlChars, "-").replace(/\./g, "-"), {
85
- isIdentifier: true
86
- });
241
+ // TODO simplify in the next major release
242
+ return escape(localident // For `[hash]` placeholder
243
+ .replace(/^((-?[0-9])|--)/, "_$1").replace(filenameReservedRegex, "-").replace(reControlChars, "-").replace(/\./g, "-"));
87
244
  }
88
245
 
89
246
  function defaultGetLocalIdent(loaderContext, localIdentName, localName, options) {
@@ -100,6 +257,8 @@ function defaultGetLocalIdent(loaderContext, localIdentName, localName, options)
100
257
  return (0, _loaderUtils.interpolateName)(loaderContext, localIdentName, options);
101
258
  }
102
259
 
260
+ const NATIVE_WIN32_PATH = /^[A-Z]:[/\\]|^\\\\/i;
261
+
103
262
  function normalizeUrl(url, isStringValue) {
104
263
  let normalizedUrl = url.replace(/^( |\t\n|\r\n|\r|\f)*/g, "").replace(/( |\t\n|\r\n|\r|\f)*$/g, "");
105
264
 
@@ -107,7 +266,7 @@ function normalizeUrl(url, isStringValue) {
107
266
  normalizedUrl = normalizedUrl.replace(/\\(\n|\r\n|\r|\f)/g, "");
108
267
  }
109
268
 
110
- if (matchNativeWin32Path.test(url)) {
269
+ if (NATIVE_WIN32_PATH.test(url)) {
111
270
  try {
112
271
  normalizedUrl = decodeURI(normalizedUrl);
113
272
  } catch (error) {// Ignore
@@ -149,7 +308,7 @@ function getValidLocalName(localName, exportLocalsConvention) {
149
308
  return dashesCamelCase(localName);
150
309
  }
151
310
 
152
- return (0, _camelcase.default)(localName);
311
+ return camelCase(localName);
153
312
  }
154
313
 
155
314
  const moduleRegExp = /\.module(s)?\.\w+$/i;
@@ -522,7 +681,7 @@ function getExportCode(exports, replacements, options) {
522
681
 
523
682
  const addExportToLocalsCode = (name, value) => {
524
683
  if (options.modules.namedExport) {
525
- localsCode += `export const ${name} = ${JSON.stringify(value)};\n`;
684
+ localsCode += `export var ${name} = ${JSON.stringify(value)};\n`;
526
685
  } else {
527
686
  if (localsCode) {
528
687
  localsCode += `,\n`;
@@ -540,7 +699,7 @@ function getExportCode(exports, replacements, options) {
540
699
  case "camelCase":
541
700
  {
542
701
  addExportToLocalsCode(name, value);
543
- const modifiedName = (0, _camelcase.default)(name);
702
+ const modifiedName = camelCase(name);
544
703
 
545
704
  if (modifiedName !== name) {
546
705
  addExportToLocalsCode(modifiedName, value);
@@ -551,7 +710,7 @@ function getExportCode(exports, replacements, options) {
551
710
 
552
711
  case "camelCaseOnly":
553
712
  {
554
- addExportToLocalsCode((0, _camelcase.default)(name), value);
713
+ addExportToLocalsCode(camelCase(name), value);
555
714
  break;
556
715
  }
557
716
 
@@ -641,7 +800,7 @@ function isUrlRequestable(url) {
641
800
  } // Absolute URLs
642
801
 
643
802
 
644
- if (/^[a-z][a-z0-9+.-]*:/i.test(url) && !matchNativeWin32Path.test(url)) {
803
+ if (/^[a-z][a-z0-9+.-]*:/i.test(url) && !NATIVE_WIN32_PATH.test(url)) {
645
804
  return false;
646
805
  } // `#` URLs
647
806
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "css-loader",
3
- "version": "5.2.1",
3
+ "version": "5.2.5",
4
4
  "description": "css loader module for webpack",
5
5
  "license": "MIT",
6
6
  "repository": "webpack-contrib/css-loader",
@@ -23,7 +23,7 @@
23
23
  "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
24
24
  "postbuild": "npm run validate:runtime",
25
25
  "commitlint": "commitlint --from=master",
26
- "security": "npm audit",
26
+ "security": "npm audit --production",
27
27
  "lint:prettier": "prettier --list-different .",
28
28
  "lint:js": "eslint --cache .",
29
29
  "lint": "npm-run-all -l -p \"lint:**\"",
@@ -32,7 +32,7 @@
32
32
  "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
33
33
  "pretest": "npm run lint",
34
34
  "test": "npm run test:coverage",
35
- "prepare": "npm run build",
35
+ "prepare": "husky install && npm run build",
36
36
  "release": "standard-version"
37
37
  },
38
38
  "files": [
@@ -42,55 +42,53 @@
42
42
  "webpack": "^4.27.0 || ^5.0.0"
43
43
  },
44
44
  "dependencies": {
45
- "camelcase": "^6.2.0",
46
- "cssesc": "^3.0.0",
47
45
  "icss-utils": "^5.1.0",
48
46
  "loader-utils": "^2.0.0",
49
- "postcss": "^8.2.8",
47
+ "postcss": "^8.2.15",
50
48
  "postcss-modules-extract-imports": "^3.0.0",
51
49
  "postcss-modules-local-by-default": "^4.0.0",
52
50
  "postcss-modules-scope": "^3.0.0",
53
51
  "postcss-modules-values": "^4.0.0",
54
52
  "postcss-value-parser": "^4.1.0",
55
53
  "schema-utils": "^3.0.0",
56
- "semver": "^7.3.4"
54
+ "semver": "^7.3.5"
57
55
  },
58
56
  "devDependencies": {
59
- "@babel/cli": "^7.13.10",
60
- "@babel/core": "^7.13.10",
61
- "@babel/preset-env": "^7.13.10",
62
- "@commitlint/cli": "^12.0.1",
63
- "@commitlint/config-conventional": "^12.0.1",
57
+ "@babel/cli": "^7.14.3",
58
+ "@babel/core": "^7.14.3",
59
+ "@babel/preset-env": "^7.14.2",
60
+ "@commitlint/cli": "^12.1.4",
61
+ "@commitlint/config-conventional": "^12.1.4",
64
62
  "@webpack-contrib/eslint-config-webpack": "^3.0.0",
65
63
  "babel-jest": "^26.6.3",
66
64
  "cross-env": "^7.0.3",
67
65
  "del": "^6.0.0",
68
66
  "del-cli": "^3.0.1",
69
67
  "es-check": "^5.2.3",
70
- "eslint": "^7.22.0",
71
- "eslint-config-prettier": "^8.1.0",
72
- "eslint-plugin-import": "^2.22.1",
68
+ "eslint": "^7.26.0",
69
+ "eslint-config-prettier": "^8.3.0",
70
+ "eslint-plugin-import": "^2.23.2",
73
71
  "file-loader": "^6.2.0",
74
- "husky": "^4.3.8",
72
+ "husky": "^6.0.0",
75
73
  "jest": "^26.6.3",
76
74
  "less": "^4.1.1",
77
75
  "less-loader": "^7.1.0",
78
- "lint-staged": "^10.5.4",
79
- "memfs": "^3.2.0",
80
- "mini-css-extract-plugin": "^1.3.9",
76
+ "lint-staged": "^11.0.0",
77
+ "memfs": "^3.2.2",
78
+ "mini-css-extract-plugin": "^1.6.0",
81
79
  "npm-run-all": "^4.1.5",
82
- "postcss-loader": "^4.0.4",
80
+ "postcss-loader": "^4.3.0",
83
81
  "postcss-preset-env": "^6.7.0",
84
- "prettier": "^2.1.2",
85
- "sass": "^1.32.8",
86
- "sass-loader": "^10.1.0",
87
- "standard-version": "^9.1.1",
82
+ "prettier": "^2.3.0",
83
+ "sass": "^1.32.13",
84
+ "sass-loader": "^10.2.0",
85
+ "standard-version": "^9.3.0",
88
86
  "strip-ansi": "^6.0.0",
89
87
  "style-loader": "^2.0.0",
90
88
  "stylus": "^0.54.8",
91
- "stylus-loader": "^4.3.0",
89
+ "stylus-loader": "^4.3.3",
92
90
  "url-loader": "^4.1.1",
93
- "webpack": "^5.26.0"
91
+ "webpack": "^5.37.1"
94
92
  },
95
93
  "keywords": [
96
94
  "webpack",
package/CHANGELOG.md DELETED
@@ -1,611 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
-
5
- ### [5.2.1](https://github.com/webpack-contrib/css-loader/compare/v5.2.0...v5.2.1) (2021-04-09)
6
-
7
-
8
- ### Bug Fixes
9
-
10
- * do not crash on unescaped svg data uri ([#1288](https://github.com/webpack-contrib/css-loader/issues/1288)) ([4f289c5](https://github.com/webpack-contrib/css-loader/commit/4f289c5e4df6c666fdf6dd3402560ae74d4bf7ee))
11
-
12
- ## [5.2.0](https://github.com/webpack-contrib/css-loader/compare/v5.1.4...v5.2.0) (2021-03-24)
13
-
14
-
15
- ### Features
16
-
17
- * support async functions for `url` and `import` options ([#1277](https://github.com/webpack-contrib/css-loader/issues/1277)) ([c5062db](https://github.com/webpack-contrib/css-loader/commit/c5062db3fc849d882a07b9f2c9f66f00325c8896))
18
-
19
- ### [5.1.4](https://github.com/webpack-contrib/css-loader/compare/v5.1.3...v5.1.4) (2021-03-24)
20
-
21
-
22
- ### Bug Fixes
23
-
24
- * crash with thread-loader ([#1281](https://github.com/webpack-contrib/css-loader/issues/1281)) ([7095a7c](https://github.com/webpack-contrib/css-loader/commit/7095a7ca7d985d5447aed80cf3e41a4f8c19b954))
25
-
26
- ### [5.1.3](https://github.com/webpack-contrib/css-loader/compare/v5.1.2...v5.1.3) (2021-03-15)
27
-
28
-
29
- ### Bug Fixes
30
-
31
- * the `auto` option works using inline module syntax ([#1274](https://github.com/webpack-contrib/css-loader/issues/1274)) ([1db2f4d](https://github.com/webpack-contrib/css-loader/commit/1db2f4df3ff9ae8f0667a2304853c8e7cdd0afc1))
32
- * ident generation for CSS modules using inline module syntax ([#1274](https://github.com/webpack-contrib/css-loader/issues/1274)) ([1db2f4d](https://github.com/webpack-contrib/css-loader/commit/1db2f4df3ff9ae8f0667a2304853c8e7cdd0afc1))
33
-
34
- ### [5.1.2](https://github.com/webpack-contrib/css-loader/compare/v5.1.1...v5.1.2) (2021-03-10)
35
-
36
-
37
- ### Bug Fixes
38
-
39
- * handling `@import` with spaces before and after and any extensions ([#1272](https://github.com/webpack-contrib/css-loader/issues/1272)) ([0c47cf7](https://github.com/webpack-contrib/css-loader/commit/0c47cf7ccbe3635900e8e8840650f69a7eca004d))
40
- * inline loader syntax in `@import` and modules ([3f49ed0](https://github.com/webpack-contrib/css-loader/commit/3f49ed0864457f9467f560856377c890c392aee7))
41
-
42
- ### [5.1.1](https://github.com/webpack-contrib/css-loader/compare/v5.1.0...v5.1.1) (2021-03-01)
43
-
44
-
45
- ### Bug Fixes
46
-
47
- * crash on modified AST from `postcss-loader` ([#1268](https://github.com/webpack-contrib/css-loader/issues/1268)) ([d2a1a84](https://github.com/webpack-contrib/css-loader/commit/d2a1a84afc63fdfb2a4ce6668ed9f2d7f1ba56ca))
48
-
49
- ## [5.1.0](https://github.com/webpack-contrib/css-loader/compare/v5.0.2...v5.1.0) (2021-02-25)
50
-
51
-
52
- ### Features
53
-
54
- * added support webpackIgnore comment ([#1264](https://github.com/webpack-contrib/css-loader/issues/1264)) ([53d40a9](https://github.com/webpack-contrib/css-loader/commit/53d40a9bb35a79e6a15308bbb7a01358f39816df))
55
-
56
- ### [5.0.2](https://github.com/webpack-contrib/css-loader/compare/v5.0.1...v5.0.2) (2021-02-08)
57
-
58
-
59
- ### Bug Fixes
60
-
61
- * pass query with hash to other loaders ([#1261](https://github.com/webpack-contrib/css-loader/issues/1261)) ([729a314](https://github.com/webpack-contrib/css-loader/commit/729a314529cd0607c374b07bdf425337f9a778d4))
62
-
63
- ### [5.0.1](https://github.com/webpack-contrib/css-loader/compare/v5.0.0...v5.0.1) (2020-11-04)
64
-
65
-
66
- ### Bug Fixes
67
-
68
- * sources in source maps have relative paths ([#1219](https://github.com/webpack-contrib/css-loader/issues/1219)) ([3229b3c](https://github.com/webpack-contrib/css-loader/commit/3229b3cca3cb5d762daeff57239a965b06fd7593))
69
-
70
- ## [5.0.0](https://github.com/webpack-contrib/css-loader/compare/v4.3.0...v5.0.0) (2020-10-13)
71
-
72
-
73
- ### ⚠ BREAKING CHANGES
74
-
75
- * migrate on PostCSS 8
76
- * runtime doesn't contain source maps code without `sourceMap: true`
77
- * returned value from the `getLocalIdent` escapes by default, the `exportName` value is always unescaped
78
- * Auto enable icss modules for all files for which `/\.icss\.\w+$/i` (the `modules.compileType` option is `icss`)
79
- * `[emoji]` placeholder was deprecated
80
- * `icss` option was removed (it was deprecated previously)
81
-
82
- ### Features
83
-
84
- * allow named exports to have underscores in names ([#1209](https://github.com/webpack-contrib/css-loader/issues/1209)) ([747d62b](https://github.com/webpack-contrib/css-loader/commit/747d62b75a878d8881f4819b96297667dc689b8f))
85
- * hide warning when you don't need handle `url()`/`@import` ([#1195](https://github.com/webpack-contrib/css-loader/issues/1195)) ([dd52931](https://github.com/webpack-contrib/css-loader/commit/dd52931150ed42f122d9017642437c26cc1b2422))
86
- * improve error message ([52412f6](https://github.com/webpack-contrib/css-loader/commit/52412f6d5a54745ee37a4a67f038455c26ba5772))
87
- * reduce runtime ([9f974be](https://github.com/webpack-contrib/css-loader/commit/9f974be81f5942d3afaf783529677bd541952fa3))
88
- * add fallback if custom getLocalIdent returns `null`/`undefined` ([#1193](https://github.com/webpack-contrib/css-loader/issues/1193)) ([0f95841](https://github.com/webpack-contrib/css-loader/commit/0f9584135e63f9f354043e7f414e0c1aad0edc6e))
89
-
90
- ## [4.3.0](https://github.com/webpack-contrib/css-loader/compare/v4.2.2...v4.3.0) (2020-09-08)
91
-
92
-
93
- ### Features
94
-
95
- * the `importLoaders` can be `string` ([#1178](https://github.com/webpack-contrib/css-loader/issues/1178)) ([ec58a7c](https://github.com/webpack-contrib/css-loader/commit/ec58a7cfda46443e35539d66b86685195fa5db03))
96
-
97
-
98
- ### Bug Fixes
99
-
100
- * line breaks in `url` function ([88b8ddc](https://github.com/webpack-contrib/css-loader/commit/88b8ddc1d78a2b6a917ed2dfe2f2a37cf6a84190))
101
-
102
- ### [4.2.2](https://github.com/webpack-contrib/css-loader/compare/v4.2.1...v4.2.2) (2020-08-24)
103
-
104
-
105
- ### Bug Fixes
106
-
107
- * source maps generation, source from source maps are now relative to `compiler.context` and use `webpack://` protocol ([#1169](https://github.com/webpack-contrib/css-loader/issues/1169)) ([fb5c53d](https://github.com/webpack-contrib/css-loader/commit/fb5c53d80b10ee698762238bb7b122aec8c5048d))
108
-
109
- ### [4.2.1](https://github.com/webpack-contrib/css-loader/compare/v4.2.0...v4.2.1) (2020-08-06)
110
-
111
-
112
- ### Bug Fixes
113
-
114
- * regression with the `exportOnlyLocals` option, now `locals` are not exported under the `locals` name, it was big regression, we apologize for that ([24c0a12](https://github.com/webpack-contrib/css-loader/commit/24c0a122d1396c08326a24f6184f5da09cf52ccc))
115
-
116
- ## [4.2.0](https://github.com/webpack-contrib/css-loader/compare/v4.1.1...v4.2.0) (2020-07-31)
117
-
118
-
119
- ### Features
120
-
121
- * add `module.type` option, the `icss` option is deprecated ([#1150](https://github.com/webpack-contrib/css-loader/issues/1150)) ([68f72af](https://github.com/webpack-contrib/css-loader/commit/68f72af2a09111f74dcacbf7af019fe7eb40cb6c))
122
-
123
- ### [4.1.1](https://github.com/webpack-contrib/css-loader/compare/v4.1.0...v4.1.1) (2020-07-30)
124
-
125
-
126
- ### Bug Fixes
127
-
128
- * remove unnecessary `console` call ([#1148](https://github.com/webpack-contrib/css-loader/issues/1148)) ([b1b90ca](https://github.com/webpack-contrib/css-loader/commit/b1b90caaea8eb045177749729340c7906454a84b))
129
-
130
- ## [4.1.0](https://github.com/webpack-contrib/css-loader/compare/v4.0.0...v4.1.0) (2020-07-29)
131
-
132
-
133
- ### Features
134
-
135
- * add `icss` option ([#1140](https://github.com/webpack-contrib/css-loader/issues/1140)) ([a8ec7da](https://github.com/webpack-contrib/css-loader/commit/a8ec7da42234e0b2eb061d2a920669940bcbdf05))
136
- * support absolute paths ([f9ba0ce](https://github.com/webpack-contrib/css-loader/commit/f9ba0ce11789770c4c9220478e9c98dbd432a5d6))
137
-
138
-
139
- ### Bug Fixes
140
-
141
- * do not crash with `data` URLs ([#1142](https://github.com/webpack-contrib/css-loader/issues/1142)) ([91bc64b](https://github.com/webpack-contrib/css-loader/commit/91bc64b81abfeffd174639a8fdf2366412c11426))
142
- * performance ([#1144](https://github.com/webpack-contrib/css-loader/issues/1144)) ([4f1baa2](https://github.com/webpack-contrib/css-loader/commit/4f1baa211eb27b0b281ba9f262fa12e8aaefc0ba))
143
-
144
- ## [4.0.0](https://github.com/webpack-contrib/css-loader/compare/v3.6.0...v4.0.0) (2020-07-25)
145
-
146
-
147
- ### ⚠ BREAKING CHANGES
148
-
149
- * minimum required `Node.js` version is `10.13.0`
150
- * minimum required `webpack` version is `4.27.0`
151
- * the `esModule` option is `true` by default
152
- * default value of the `sourceMap` option depends on the `devtool` option
153
- * `icss` plugin disable by default, you need to setup the `modules` option to enable it
154
- * the `modules` option is `true` by default for all files matching `/\.module\.\w+$/i.test(filename)` regular expression, `module.auto` is `true` by default
155
- * the `modules.context` option was renamed to the `modules.localIdentContext` option
156
- * default the `modules.localIdentContext` value is `compiler.context` for the `module.getLocalIdent` option
157
- * the `modules.hashPrefix` option was renamed to the `modules.localIdentHashPrefix` option
158
- * the `localsConvention` option was moved and renamed to the `modules.exportLocalsConvention` option
159
- * the `getLocalIndent` option should be always `Function` and should always return `String` value
160
- * the `onlyLocals` option was moved and renamed to the `modules.exportOnlyLocals` option
161
- * function arguments of the `import` option were changed, it is now `function(url, media, resourcePath) {}`
162
- * inline syntax was changed, please write `~` before the file request, i.e. rewrite `url(~!!loader!package/img.png)` to `url(!!loader!~package/img.png)`
163
-
164
-
165
- ### Features
166
-
167
- * `@value` supports importing `url()` ([#1126](https://github.com/webpack-contrib/css-loader/issues/1126)) ([7f49a0a](https://github.com/webpack-contrib/css-loader/commit/7f49a0a6047846bb2e432558365e19d4a0dfb366))
168
- * improve `url()` resolving algorithm ([bc19ddd](https://github.com/webpack-contrib/css-loader/commit/bc19ddd8779dafbc2a420870a3cb841041ce9c7c))
169
- * named export for locals ([#1108](https://github.com/webpack-contrib/css-loader/issues/1108)) ([d139ec1](https://github.com/webpack-contrib/css-loader/commit/d139ec1d763f9944550b31f2a75183e488dd1224))
170
- * respected the `style` field from package.json ([#1099](https://github.com/webpack-contrib/css-loader/issues/1099)) ([edf5347](https://github.com/webpack-contrib/css-loader/commit/edf5347e4203a62e50b87248a83da198afdc6eba))
171
- * support `file:` protocol ([5604205](https://github.com/webpack-contrib/css-loader/commit/560420567eb0e1a635648b7f4ff0365db475384c))
172
- * support server relative URLs
173
-
174
- ### Bug Fixes
175
-
176
- * resolution algorithm, you don't need `~` inside packages in `node_modules` ([76f1480](https://github.com/webpack-contrib/css-loader/commit/76f1480b14265369ac5dc8dbbce467cfb8e814c5))
177
-
178
-
179
- ## [3.6.0](https://github.com/webpack-contrib/css-loader/compare/v3.5.3...v3.6.0) (2020-06-13)
180
-
181
-
182
- ### Features
183
-
184
- * allow `modules.auto` to be a filter function ([#1086](https://github.com/webpack-contrib/css-loader/issues/1086)) ([0902353](https://github.com/webpack-contrib/css-loader/commit/0902353c328d4d18e8ed2755fe9c83c03c53df81))
185
-
186
- ### [3.5.3](https://github.com/webpack-contrib/css-loader/compare/v3.5.2...v3.5.3) (2020-04-24)
187
-
188
-
189
- ### Bug Fixes
190
-
191
- * add file from an error to file dependencies ([841423f](https://github.com/webpack-contrib/css-loader/commit/841423fca2932c18f8ac0cf0a1f0012fc0a62fb6))
192
- * avoid query string in source maps ([#1082](https://github.com/webpack-contrib/css-loader/issues/1082)) ([f64de13](https://github.com/webpack-contrib/css-loader/commit/f64de13f7377eff9501348cf26213212ca696913))
193
-
194
- ### [3.5.2](https://github.com/webpack-contrib/css-loader/compare/v3.5.1...v3.5.2) (2020-04-10)
195
-
196
-
197
- ### Bug Fixes
198
-
199
- * schema for the `modules.auto` option ([#1075](https://github.com/webpack-contrib/css-loader/issues/1075)) ([8c9ffe7](https://github.com/webpack-contrib/css-loader/commit/8c9ffe7c6df11232b63173c757baa71ed36f6145))
200
-
201
- ### [3.5.1](https://github.com/webpack-contrib/css-loader/compare/v3.5.0...v3.5.1) (2020-04-07)
202
-
203
-
204
- ### Bug Fixes
205
-
206
- * don't generate an invalid code for `locals` ([#1072](https://github.com/webpack-contrib/css-loader/issues/1072)) ([866b84a](https://github.com/webpack-contrib/css-loader/commit/866b84acd7fd47651f741ca1e6cf7081c2bbe357))
207
-
208
- ## [3.5.0](https://github.com/webpack-contrib/css-loader/compare/v3.4.2...v3.5.0) (2020-04-06)
209
-
210
-
211
- ### Features
212
-
213
- * accept semver compatible postcss AST ([#1049](https://github.com/webpack-contrib/css-loader/issues/1049)) ([14c4faa](https://github.com/webpack-contrib/css-loader/commit/14c4faae87305c9b965de4f468bb1e118f6b84cc))
214
- * allow to determinate css modules using the `modules.auto` option, please look at an [example](https://github.com/webpack-contrib/css-loader#pure-css-css-modules-and-postcss) of how you can simplify the configuration. ([#1067](https://github.com/webpack-contrib/css-loader/issues/1067)) ([c673cf4](https://github.com/webpack-contrib/css-loader/commit/c673cf418e901c5050bc697eb45401dc9a42c477))
215
- * the `modules.exportGlobals` option for export global classes and ids ([#1069](https://github.com/webpack-contrib/css-loader/issues/1069)) ([519e5f4](https://github.com/webpack-contrib/css-loader/commit/519e5f41539f4c87ec96db0a908aaadecc284a6c))
216
- * the `modules.mode` option may be a function ([#1065](https://github.com/webpack-contrib/css-loader/issues/1065)) ([0d8ac3b](https://github.com/webpack-contrib/css-loader/commit/0d8ac3bcb831bc747657c914aba106b93840737e))
217
-
218
- ### [3.4.2](https://github.com/webpack-contrib/css-loader/compare/v3.4.1...v3.4.2) (2020-01-10)
219
-
220
-
221
- ### Bug Fixes
222
-
223
- * do not duplicate css on `composes` ([#1040](https://github.com/webpack-contrib/css-loader/issues/1040)) ([df79602](https://github.com/webpack-contrib/css-loader/commit/df7960277be20ec80e9be1a41ac53baf69847fa0))
224
-
225
- ### [3.4.1](https://github.com/webpack-contrib/css-loader/compare/v3.4.0...v3.4.1) (2020-01-03)
226
-
227
-
228
- ### Bug Fixes
229
-
230
- * do not output `undefined` when sourceRoot is unavailable ([#1036](https://github.com/webpack-contrib/css-loader/issues/1036)) ([ded2a79](https://github.com/webpack-contrib/css-loader/commit/ded2a797271f2adf864bf92300621c024974bc79))
231
- * don't output invalid es5 code when locals do not exists ([#1035](https://github.com/webpack-contrib/css-loader/issues/1035)) ([b60e62a](https://github.com/webpack-contrib/css-loader/commit/b60e62a655719cc1779fae7d577af6ad6cf42135))
232
-
233
- ## [3.4.0](https://github.com/webpack-contrib/css-loader/compare/v3.3.1...v3.4.0) (2019-12-17)
234
-
235
-
236
- ### Features
237
-
238
- * `esModule` option ([#1026](https://github.com/webpack-contrib/css-loader/issues/1026)) ([d358cdb](https://github.com/webpack-contrib/css-loader/commit/d358cdbe2c026afafa0279003cb6c8a3eff4c419))
239
-
240
-
241
- ### Bug Fixes
242
-
243
- * logic for order and media queries for imports ([#1018](https://github.com/webpack-contrib/css-loader/issues/1018)) ([65450d9](https://github.com/webpack-contrib/css-loader/commit/65450d9c04790ccc9fb06eac81ea6d8f3cdbfaac))
244
-
245
- ### [3.3.2](https://github.com/webpack-contrib/css-loader/compare/v3.3.1...v3.3.2) (2019-12-12)
246
-
247
-
248
- ### Bug Fixes
249
-
250
- * logic for order and media queries for imports ([1fb5134](https://github.com/webpack-contrib/css-loader/commit/1fb51340a7719b6f5b517cb71ea85ec5d45c1199))
251
-
252
- ### [3.3.1](https://github.com/webpack-contrib/css-loader/compare/v3.3.0...v3.3.1) (2019-12-12)
253
-
254
-
255
- ### Bug Fixes
256
-
257
- * better handling url functions and an url in `@import` at-rules
258
- * reduce count of `require` ([#1014](https://github.com/webpack-contrib/css-loader/issues/1014)) ([e091d27](https://github.com/webpack-contrib/css-loader/commit/e091d2709c29ac57ed0106af8ec3b581cbda7a9c))
259
-
260
- ## [3.3.0](https://github.com/webpack-contrib/css-loader/compare/v3.2.1...v3.3.0) (2019-12-09)
261
-
262
-
263
- ### Features
264
-
265
- * support `pure` css modules ([#1008](https://github.com/webpack-contrib/css-loader/issues/1008)) ([6177af5](https://github.com/webpack-contrib/css-loader/commit/6177af5596566fead13a8f66d5abcb4dc2b744db))
266
-
267
-
268
- ### Bug Fixes
269
-
270
- * do not crash when an assert return `null` or `undefined` ([#1006](https://github.com/webpack-contrib/css-loader/issues/1006)) ([6769783](https://github.com/webpack-contrib/css-loader/commit/67697833725e1cff12a14663390bbe4c65ea36d2))
271
- * reduce count of `require` ([#1004](https://github.com/webpack-contrib/css-loader/issues/1004)) ([80e9662](https://github.com/webpack-contrib/css-loader/commit/80e966280f2477c5c0e4553d3be3a04511fea381))
272
-
273
- ### [3.2.1](https://github.com/webpack-contrib/css-loader/compare/v3.2.0...v3.2.1) (2019-12-02)
274
-
275
-
276
- ### Bug Fixes
277
-
278
- * add an additional space after the escape sequence ([#998](https://github.com/webpack-contrib/css-loader/issues/998)) ([0961304](https://github.com/webpack-contrib/css-loader/commit/0961304020832fc9ca70cc708f4366e1f868e765))
279
- * compatibility with ES modules syntax and hash in `url` function ([#1001](https://github.com/webpack-contrib/css-loader/issues/1001)) ([8f4d6f5](https://github.com/webpack-contrib/css-loader/commit/8f4d6f508187513347106a436eda993f874065f1))
280
-
281
- ## [3.2.0](https://github.com/webpack-contrib/css-loader/compare/v3.1.0...v3.2.0) (2019-08-06)
282
-
283
-
284
- ### Bug Fixes
285
-
286
- * replace `.` characters in localIndent to `-` character (regression) ([#982](https://github.com/webpack-contrib/css-loader/issues/982)) ([967fb66](https://github.com/webpack-contrib/css-loader/commit/967fb66))
287
-
288
-
289
- ### Features
290
-
291
- * support es modules for assets loader ([#984](https://github.com/webpack-contrib/css-loader/issues/984)) ([9c5126c](https://github.com/webpack-contrib/css-loader/commit/9c5126c))
292
-
293
- ## [3.1.0](https://github.com/webpack-contrib/css-loader/compare/v3.0.0...v3.1.0) (2019-07-18)
294
-
295
-
296
- ### Bug Fixes
297
-
298
- * converting all (including reserved and control) filesystem characters to `-` (it was regression in `3.0.0` version) ([#972](https://github.com/webpack-contrib/css-loader/issues/972)) ([f51859b](https://github.com/webpack-contrib/css-loader/commit/f51859b))
299
- * default context should be undefined instead of null ([#965](https://github.com/webpack-contrib/css-loader/issues/965)) ([9c32885](https://github.com/webpack-contrib/css-loader/commit/9c32885))
300
-
301
-
302
- ### Features
303
-
304
- * allow `modules.getLocalIdent` to return a falsy value ([#963](https://github.com/webpack-contrib/css-loader/issues/963)) ([9c3571c](https://github.com/webpack-contrib/css-loader/commit/9c3571c))
305
- * improved validation error messages ([65e4fc0](https://github.com/webpack-contrib/css-loader/commit/65e4fc0))
306
-
307
-
308
-
309
- ## [3.0.0](https://github.com/webpack-contrib/css-loader/compare/v2.1.1...v3.0.0) (2019-06-11)
310
-
311
-
312
- ### Bug Fixes
313
-
314
- * avoid the "from" argument must be of type string error ([#908](https://github.com/webpack-contrib/css-loader/issues/908)) ([e5dfd23](https://github.com/webpack-contrib/css-loader/commit/e5dfd23))
315
- * invert `Function` behavior for `url` and `import` options ([#939](https://github.com/webpack-contrib/css-loader/issues/939)) ([e9eb5ad](https://github.com/webpack-contrib/css-loader/commit/e9eb5ad))
316
- * properly export locals with escaped characters ([#917](https://github.com/webpack-contrib/css-loader/issues/917)) ([a0efcda](https://github.com/webpack-contrib/css-loader/commit/a0efcda))
317
- * property handle non css characters in localIdentName ([#920](https://github.com/webpack-contrib/css-loader/issues/920)) ([d3a0a3c](https://github.com/webpack-contrib/css-loader/commit/d3a0a3c))
318
-
319
-
320
- ### Features
321
-
322
- * modules options now accepts object config ([#937](https://github.com/webpack-contrib/css-loader/issues/937)) ([1d7a464](https://github.com/webpack-contrib/css-loader/commit/1d7a464))
323
- * support `@value` at-rule in selectors ([#941](https://github.com/webpack-contrib/css-loader/issues/941)) ([05a42e2](https://github.com/webpack-contrib/css-loader/commit/05a42e2))
324
-
325
-
326
- ### BREAKING CHANGES
327
-
328
- * minimum required nodejs version is 8.9.0
329
- * `@value` at rules now support in `selector`, recommends checking all `@values` at-rule usage (hint: you can add prefix to all `@value` at-rules, for example `@value v-foo: black;` or `@value m-foo: screen and (max-width: 12450px)`, and then do upgrade)
330
- * invert `{Function}` behavior for `url` and `import` options (need return `true` when you want handle `url`/`@import` and return `false` if not)
331
- * `camelCase` option was remove in favor `localsConvention` option, also it is accept only `{String}` value (use `camelCase` value if you previously value was `true` and `asIs` if you previously value was `false`)
332
- * `exportOnlyLocals` option was remove in favor `onlyLocals` option
333
- * `modules` option now can be `{Object}` and allow to setup `CSS Modules` options:
334
- * `localIdentName` option was removed in favor `modules.localIdentName` option
335
- * `context` option was remove in favor `modules.context` option
336
- * `hashPrefix` option was removed in favor `modules.hashPrefix` option
337
- * `getLocalIdent` option was removed in favor `modules.getLocalIdent` option
338
- * `localIdentRegExp` option was removed in favor `modules.localIdentRegExp` option
339
-
340
-
341
-
342
- <a name="2.1.1"></a>
343
- ## [2.1.1](https://github.com/webpack-contrib/css-loader/compare/v2.1.0...v2.1.1) (2019-03-07)
344
-
345
-
346
- ### Bug Fixes
347
-
348
- * do not break selector with escaping ([#896](https://github.com/webpack-contrib/css-loader/issues/896)) ([0ba8c66](https://github.com/webpack-contrib/css-loader/commit/0ba8c66))
349
- * source map generation when `sourceRoot` is present ([#901](https://github.com/webpack-contrib/css-loader/issues/901)) ([e9ce745](https://github.com/webpack-contrib/css-loader/commit/e9ce745))
350
- * sourcemap generating when previous loader pass sourcemap as string ([#905](https://github.com/webpack-contrib/css-loader/issues/905)) ([3797e4d](https://github.com/webpack-contrib/css-loader/commit/3797e4d))
351
-
352
-
353
-
354
- <a name="2.1.0"></a>
355
- # [2.1.0](https://github.com/webpack-contrib/css-loader/compare/v2.0.2...v2.1.0) (2018-12-25)
356
-
357
-
358
- ### Features
359
-
360
- * support `image-set` without `url` ([#879](https://github.com/webpack-contrib/css-loader/issues/879)) ([21884e2](https://github.com/webpack-contrib/css-loader/commit/21884e2))
361
-
362
-
363
-
364
- <a name="2.0.2"></a>
365
- ## [2.0.2](https://github.com/webpack-contrib/css-loader/compare/v2.0.1...v2.0.2) (2018-12-21)
366
-
367
-
368
- ### Bug Fixes
369
-
370
- * inappropriate modification of animation keywords ([#876](https://github.com/webpack-contrib/css-loader/issues/876)) ([dfb2f8e](https://github.com/webpack-contrib/css-loader/commit/dfb2f8e))
371
-
372
-
373
-
374
- <a name="2.0.1"></a>
375
- # [2.0.1](https://github.com/webpack-contrib/css-loader/compare/v2.0.0...v2.0.1) (2018-12-14)
376
-
377
-
378
- ### Bug Fixes
379
-
380
- * safe checking if params are present for at rule ([#871](https://github.com/webpack-contrib/css-loader/issues/871)) ([a88fed1](https://github.com/webpack-contrib/css-loader/commit/a88fed1))
381
- * `getLocalIdent` now accepts `false` value ([#865](https://github.com/webpack-contrib/css-loader/issues/865)) ([1825e8a](https://github.com/webpack-contrib/css-loader/commit/1825e8a))
382
-
383
-
384
-
385
- <a name="2.0.0"></a>
386
- # [2.0.0](https://github.com/webpack-contrib/css-loader/compare/v1.0.1...v2.0.0) (2018-12-07)
387
-
388
-
389
- ### Bug Fixes
390
-
391
- * broken unucode characters ([#850](https://github.com/webpack-contrib/css-loader/issues/850)) ([f599c70](https://github.com/webpack-contrib/css-loader/commit/f599c70))
392
- * correctly processing `urls()` with `?#hash` ([#803](https://github.com/webpack-contrib/css-loader/issues/803)) ([417d105](https://github.com/webpack-contrib/css-loader/commit/417d105))
393
- * don't break loader on invalid or not exists url or import token ([#827](https://github.com/webpack-contrib/css-loader/issues/827)) ([9e52d26](https://github.com/webpack-contrib/css-loader/commit/9e52d26))
394
- * don't duplicate import with same media in different case ([#819](https://github.com/webpack-contrib/css-loader/issues/819)) ([9f66e33](https://github.com/webpack-contrib/css-loader/commit/9f66e33))
395
- * emit warnings on broken `import` at-rules ([#806](https://github.com/webpack-contrib/css-loader/issues/806)) ([4bdf08b](https://github.com/webpack-contrib/css-loader/commit/4bdf08b))
396
- * handle uppercase `URL` in `import` at-rules ([#818](https://github.com/webpack-contrib/css-loader/issues/818)) ([3ebdcd5](https://github.com/webpack-contrib/css-loader/commit/3ebdcd5))
397
- * inconsistent generate class names for css modules on difference os ([#812](https://github.com/webpack-contrib/css-loader/issues/812)) ([0bdf9b7](https://github.com/webpack-contrib/css-loader/commit/0bdf9b7))
398
- * reduce number of `require` for `urls()` ([#854](https://github.com/webpack-contrib/css-loader/issues/854)) ([3338656](https://github.com/webpack-contrib/css-loader/commit/3338656))
399
- * support deduplication of string module ids (optimization.namedModules) ([#789](https://github.com/webpack-contrib/css-loader/issues/789)) ([e3bb83a](https://github.com/webpack-contrib/css-loader/commit/e3bb83a))
400
- * support module resolution in `composes` ([#845](https://github.com/webpack-contrib/css-loader/issues/845)) ([453248f](https://github.com/webpack-contrib/css-loader/commit/453248f))
401
- * same `urls()` resolving logic for `modules` (`local` and `global`) and without modules ([#843](https://github.com/webpack-contrib/css-loader/issues/843)) ([fdcf687](https://github.com/webpack-contrib/css-loader/commit/fdcf687))
402
-
403
- ### Features
404
-
405
- * allow to disable css modules and **disable their by default** ([#842](https://github.com/webpack-contrib/css-loader/issues/842)) ([889dc7f](https://github.com/webpack-contrib/css-loader/commit/889dc7f))
406
- * disable `import` option doesn't affect on `composes` ([#822](https://github.com/webpack-contrib/css-loader/issues/822)) ([f9aa73c](https://github.com/webpack-contrib/css-loader/commit/f9aa73c))
407
- * allow to filter `urls` ([#856](https://github.com/webpack-contrib/css-loader/issues/856)) ([5e702e7](https://github.com/webpack-contrib/css-loader/commit/5e702e7))
408
- * allow to filter `import` at-rules ([#857](https://github.com/webpack-contrib/css-loader/issues/857)) ([5e6034c](https://github.com/webpack-contrib/css-loader/commit/5e6034c))
409
- * emit warning on invalid `urls()` ([#832](https://github.com/webpack-contrib/css-loader/issues/832)) ([da95db8](https://github.com/webpack-contrib/css-loader/commit/da95db8))
410
- * added `exportOnlyLocals` option ([#824](https://github.com/webpack-contrib/css-loader/issues/824)) ([e9327c0](https://github.com/webpack-contrib/css-loader/commit/e9327c0))
411
- * reuse `postcss` ast from other loaders (i.e `postcss-loader`) ([#840](https://github.com/webpack-contrib/css-loader/issues/840)) ([1dad1fb](https://github.com/webpack-contrib/css-loader/commit/1dad1fb))
412
- * schema options ([b97d997](https://github.com/webpack-contrib/css-loader/commit/b97d997))
413
-
414
-
415
- ### BREAKING CHANGES
416
-
417
- * resolving logic for `url()` and `import` at-rules works the same everywhere, it does not matter whether css modules are enabled (with `global` and `local` module) or not. Examples - `url('image.png')` as `require('./image.png')`, `url('./image.png')` as `require('./image.png')`, `url('~module/image.png')` as `require('module/image.png')`.
418
- * by default css modules are disabled (now `modules: false` disable all css modules features), you can return old behaviour change this on `modules: 'global'`
419
- * `css-loader/locals` was dropped in favor `exportOnlyLocals` option
420
- * `import` option only affect on `import` at-rules and doesn't affect on `composes` declarations
421
- * invalid `@import` at rules now emit warnings
422
- * use `postcss@7`
423
-
424
-
425
-
426
- <a name="1.0.1"></a>
427
- ## [1.0.1](https://github.com/webpack-contrib/css-loader/compare/v1.0.0...v1.0.1) (2018-10-29)
428
-
429
-
430
- ### Bug Fixes
431
-
432
- * **loader:** trim unquoted import urls ([#783](https://github.com/webpack-contrib/css-loader/issues/783)) ([21fcddf](https://github.com/webpack-contrib/css-loader/commit/21fcddf))
433
-
434
-
435
-
436
- <a name="1.0.0"></a>
437
- # [1.0.0](https://github.com/webpack-contrib/css-loader/compare/v0.28.11...v1.0.0) (2018-07-06)
438
-
439
-
440
- ### BREAKING CHANGES
441
-
442
- * remove `minimize` option, use [`postcss-loader`](https://github.com/postcss/postcss-loader) with [`cssnano`](https://github.com/cssnano/cssnano) or use [`optimize-cssnano-plugin`](https://github.com/intervolga/optimize-cssnano-plugin) plugin
443
- * remove `module` option, use `modules` option instead
444
- * remove `camelcase` option, use `camelCase` option instead
445
- * remove `root` option, use [`postcss-loader`](https://github.com/postcss/postcss-loader) with [`postcss-url`](https://github.com/postcss/postcss-url) plugin
446
- * remove `alias` option, use [`resolve.alias`](https://webpack.js.org/configuration/resolve/) feature or use [`postcss-loader`](https://github.com/postcss/postcss-loader) with [`postcss-url`](https://github.com/postcss/postcss-url) plugin
447
- * update `postcss` to `6` version
448
- * minimum require `nodejs` version is `6.9`
449
- * minimum require `webpack` version is `4`
450
-
451
-
452
-
453
- <a name="0.28.11"></a>
454
- ## [0.28.11](https://github.com/webpack-contrib/css-loader/compare/v0.28.10...v0.28.11) (2018-03-16)
455
-
456
-
457
- ### Bug Fixes
458
-
459
- * **lib/processCss:** don't check `mode` for `url` handling (`options.modules`) ([#698](https://github.com/webpack-contrib/css-loader/issues/698)) ([c788450](https://github.com/webpack-contrib/css-loader/commit/c788450))
460
-
461
-
462
-
463
- <a name="0.28.10"></a>
464
- ## [0.28.10](https://github.com/webpack-contrib/css-loader/compare/v0.28.9...v0.28.10) (2018-02-22)
465
-
466
-
467
- ### Bug Fixes
468
-
469
- * **getLocalIdent:** add `rootContext` support (`webpack >= v4.0.0`) ([#681](https://github.com/webpack-contrib/css-loader/issues/681)) ([9f876d2](https://github.com/webpack-contrib/css-loader/commit/9f876d2))
470
-
471
-
472
-
473
- <a name="0.28.9"></a>
474
- ## [0.28.9](https://github.com/webpack-contrib/css-loader/compare/v0.28.8...v0.28.9) (2018-01-17)
475
-
476
-
477
- ### Bug Fixes
478
-
479
- * ignore invalid URLs (`url()`) ([#663](https://github.com/webpack-contrib/css-loader/issues/663)) ([d1d8221](https://github.com/webpack-contrib/css-loader/commit/d1d8221))
480
-
481
-
482
-
483
- <a name="0.28.8"></a>
484
- ## [0.28.8](https://github.com/webpack-contrib/css-loader/compare/v0.28.7...v0.28.8) (2018-01-05)
485
-
486
-
487
- ### Bug Fixes
488
-
489
- * **loader:** correctly check if source map is `undefined` ([#641](https://github.com/webpack-contrib/css-loader/issues/641)) ([0dccfa9](https://github.com/webpack-contrib/css-loader/commit/0dccfa9))
490
- * proper URL escaping and wrapping (`url()`) ([#627](https://github.com/webpack-contrib/css-loader/issues/627)) ([8897d44](https://github.com/webpack-contrib/css-loader/commit/8897d44))
491
-
492
-
493
-
494
- <a name="0.28.7"></a>
495
- ## [0.28.7](https://github.com/webpack/css-loader/compare/v0.28.6...v0.28.7) (2017-08-30)
496
-
497
-
498
- ### Bug Fixes
499
-
500
- * pass resolver to `localsLoader` (`options.alias`) ([#601](https://github.com/webpack/css-loader/issues/601)) ([8f1b57c](https://github.com/webpack/css-loader/commit/8f1b57c))
501
-
502
-
503
-
504
- <a name="0.28.6"></a>
505
- ## [0.28.6](https://github.com/webpack/css-loader/compare/v0.28.5...v0.28.6) (2017-08-30)
506
-
507
-
508
- ### Bug Fixes
509
-
510
- * add support for aliases starting with `/` (`options.alias`) ([#597](https://github.com/webpack/css-loader/issues/597)) ([63567f2](https://github.com/webpack/css-loader/commit/63567f2))
511
-
512
-
513
-
514
- <a name="0.28.5"></a>
515
- ## [0.28.5](https://github.com/webpack/css-loader/compare/v0.28.4...v0.28.5) (2017-08-17)
516
-
517
-
518
- ### Bug Fixes
519
-
520
- * match mutliple dashes (`options.camelCase`) ([#556](https://github.com/webpack/css-loader/issues/556)) ([1fee601](https://github.com/webpack/css-loader/commit/1fee601))
521
- * stricter `[@import](https://github.com/import)` tolerance ([#593](https://github.com/webpack/css-loader/issues/593)) ([2e4ec09](https://github.com/webpack/css-loader/commit/2e4ec09))
522
-
523
-
524
-
525
- <a name="0.28.4"></a>
526
- ## [0.28.4](https://github.com/webpack/css-loader/compare/v0.28.3...v0.28.4) (2017-05-30)
527
-
528
-
529
- ### Bug Fixes
530
-
531
- * preserve leading underscore in class names ([#543](https://github.com/webpack/css-loader/issues/543)) ([f6673c8](https://github.com/webpack/css-loader/commit/f6673c8))
532
-
533
-
534
-
535
- <a name="0.28.3"></a>
536
- ## [0.28.3](https://github.com/webpack/css-loader/compare/v0.28.2...v0.28.3) (2017-05-25)
537
-
538
-
539
- ### Bug Fixes
540
-
541
- * correct plugin order for CSS Modules ([#534](https://github.com/webpack/css-loader/issues/534)) ([b90f492](https://github.com/webpack/css-loader/commit/b90f492))
542
-
543
-
544
-
545
- <a name="0.28.2"></a>
546
- ## [0.28.2](https://github.com/webpack/css-loader/compare/v0.28.1...v0.28.2) (2017-05-22)
547
-
548
-
549
- ### Bug Fixes
550
-
551
- * source maps path on `windows` ([#532](https://github.com/webpack/css-loader/issues/532)) ([c3d0d91](https://github.com/webpack/css-loader/commit/c3d0d91))
552
-
553
-
554
-
555
- <a name="0.28.1"></a>
556
- ## [0.28.1](https://github.com/webpack/css-loader/compare/v0.28.0...v0.28.1) (2017-05-02)
557
-
558
-
559
- ### Bug Fixes
560
-
561
- * allow to specify a full hostname as a root URL ([#521](https://github.com/webpack/css-loader/issues/521)) ([06d27a1](https://github.com/webpack/css-loader/commit/06d27a1))
562
- * case insensitivity of [@import](https://github.com/import) ([#514](https://github.com/webpack/css-loader/issues/514)) ([de4356b](https://github.com/webpack/css-loader/commit/de4356b))
563
- * don't handle empty [@import](https://github.com/import) and url() ([#513](https://github.com/webpack/css-loader/issues/513)) ([868fc94](https://github.com/webpack/css-loader/commit/868fc94))
564
- * imported variables are replaced in exports if followed by a comma ([#504](https://github.com/webpack/css-loader/issues/504)) ([956bad7](https://github.com/webpack/css-loader/commit/956bad7))
565
- * loader now correctly handles `url` with space(s) ([#495](https://github.com/webpack/css-loader/issues/495)) ([534ea55](https://github.com/webpack/css-loader/commit/534ea55))
566
- * url with a trailing space is now handled correctly ([#494](https://github.com/webpack/css-loader/issues/494)) ([e1ec4f2](https://github.com/webpack/css-loader/commit/e1ec4f2))
567
- * use `btoa` instead `Buffer` ([#501](https://github.com/webpack/css-loader/issues/501)) ([fbb0714](https://github.com/webpack/css-loader/commit/fbb0714))
568
-
569
-
570
- ### Performance Improvements
571
-
572
- * generate source maps only when explicitly set ([#478](https://github.com/webpack/css-loader/issues/478)) ([b8f5c8f](https://github.com/webpack/css-loader/commit/b8f5c8f))
573
-
574
-
575
-
576
- <a name="0.28.0"></a>
577
- # [0.28.0](https://github.com/webpack/css-loader/compare/v0.27.3...v0.28.0) (2017-03-30)
578
-
579
-
580
- ### Features
581
-
582
- * add alias feature to rewrite URLs ([#274](https://github.com/webpack/css-loader/issues/274)) ([c8db489](https://github.com/webpack/css-loader/commit/c8db489))
583
-
584
-
585
-
586
- <a name="0.27.3"></a>
587
- ## [0.27.3](https://github.com/webpack/css-loader/compare/v0.27.2...v0.27.3) (2017-03-13)
588
-
589
-
590
-
591
- <a name="0.27.2"></a>
592
- # [0.27.2](https://github.com/webpack/css-loader/compare/v0.27.1...v0.27.2) (2017-03-12)
593
-
594
- <a name="0.27.1"></a>
595
- # [0.27.1](https://github.com/webpack/css-loader/compare/v0.27.0...v0.27.1) (2017-03-10)
596
-
597
- <a name="0.27.0"></a>
598
- # [0.27.0](https://github.com/webpack/css-loader/compare/v0.26.2...v0.27.0) (2017-03-10)
599
-
600
-
601
- ### Bug Fixes
602
-
603
- * **sourcemaps:** use abs paths & remove sourceRoot ([c769ac3](https://github.com/webpack/css-loader/commit/c769ac3))
604
- * `minimizeOptions` should be `query.minimize`! ([16c0858](https://github.com/webpack/css-loader/commit/16c0858))
605
- * do not export duplicate keys ([#420](https://github.com/webpack/css-loader/issues/420)) ([a2b85d7](https://github.com/webpack/css-loader/commit/a2b85d7))
606
-
607
-
608
- ### Features
609
-
610
- * allow removal of original class name ([#445](https://github.com/webpack/css-loader/issues/445)) ([3f78361](https://github.com/webpack/css-loader/commit/3f78361))
611
- * Include the sourceMappingURL & sourceURL when toString() ([6da7e90](https://github.com/webpack/css-loader/commit/6da7e90))