css-loader 7.1.0 → 7.1.2
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 +7 -1
- package/dist/index.js +1 -14
- package/dist/plugins/postcss-import-parser.js +22 -11
- package/dist/utils.js +26 -1
- package/package.json +12 -12
package/README.md
CHANGED
|
@@ -1156,7 +1156,7 @@ Enables/disables ES modules named export for locals.
|
|
|
1156
1156
|
|
|
1157
1157
|
> **Warning**
|
|
1158
1158
|
>
|
|
1159
|
-
>
|
|
1159
|
+
> Because it is not allowed to use the `default` class in CSS when the `namedExport` is `true` (since ECMA modules have a reserved keyword `default` for default export), it will be automatically renamed to the `_default` class.
|
|
1160
1160
|
|
|
1161
1161
|
**styles.css**
|
|
1162
1162
|
|
|
@@ -1167,6 +1167,9 @@ Enables/disables ES modules named export for locals.
|
|
|
1167
1167
|
.bar {
|
|
1168
1168
|
color: blue;
|
|
1169
1169
|
}
|
|
1170
|
+
.default {
|
|
1171
|
+
color: green;
|
|
1172
|
+
}
|
|
1170
1173
|
```
|
|
1171
1174
|
|
|
1172
1175
|
**index.js**
|
|
@@ -1179,6 +1182,9 @@ console.log(styles["foo-baz"], styles.bar);
|
|
|
1179
1182
|
|
|
1180
1183
|
// If using `exportLocalsConvention: "camel-case-only"`:
|
|
1181
1184
|
console.log(styles.fooBaz, styles.bar);
|
|
1185
|
+
|
|
1186
|
+
// For the `default` classname
|
|
1187
|
+
console.log(styles["_default"]);
|
|
1182
1188
|
```
|
|
1183
1189
|
|
|
1184
1190
|
You can enable a ES module named export using:
|
package/dist/index.js
CHANGED
|
@@ -148,20 +148,7 @@ async function loader(content, map, meta) {
|
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
-
|
|
152
|
-
if (
|
|
153
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
154
|
-
this._compilation &&
|
|
155
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
156
|
-
this._compilation.options &&
|
|
157
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
158
|
-
this._compilation.options.output &&
|
|
159
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
160
|
-
this._compilation.options.output.environment &&
|
|
161
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
162
|
-
this._compilation.options.output.environment.templateLiteral) {
|
|
163
|
-
isTemplateLiteralSupported = true;
|
|
164
|
-
}
|
|
151
|
+
const isTemplateLiteralSupported = (0, _utils.supportTemplateLiteral)(this);
|
|
165
152
|
const importCode = (0, _utils.getImportCode)(imports, options);
|
|
166
153
|
let moduleCode;
|
|
167
154
|
try {
|
|
@@ -7,25 +7,32 @@ exports.default = void 0;
|
|
|
7
7
|
var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
|
|
8
8
|
var _utils = require("../utils");
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
-
function
|
|
11
|
-
// Convert only top-level @import
|
|
12
|
-
if (atRule.parent.type !== "root") {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
10
|
+
function isIgnoredAfterName(atRule) {
|
|
15
11
|
if (atRule.raws && atRule.raws.afterName && atRule.raws.afterName.trim().length > 0) {
|
|
16
12
|
const lastCommentIndex = atRule.raws.afterName.lastIndexOf("/*");
|
|
17
13
|
const matched = atRule.raws.afterName.slice(lastCommentIndex).match(_utils.WEBPACK_IGNORE_COMMENT_REGEXP);
|
|
18
14
|
if (matched && matched[2] === "true") {
|
|
19
|
-
return;
|
|
15
|
+
return true;
|
|
20
16
|
}
|
|
21
17
|
}
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
function isIgnoredPrevNode(atRule) {
|
|
22
21
|
const prevNode = atRule.prev();
|
|
23
22
|
if (prevNode && prevNode.type === "comment") {
|
|
24
23
|
const matched = prevNode.text.match(_utils.WEBPACK_IGNORE_COMMENT_REGEXP);
|
|
25
24
|
if (matched && matched[2] === "true") {
|
|
26
|
-
return;
|
|
25
|
+
return true;
|
|
27
26
|
}
|
|
28
27
|
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
function parseNode(atRule, key, options) {
|
|
31
|
+
// Convert only top-level @import
|
|
32
|
+
if (atRule.parent.type !== "root") {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const isIgnored = isIgnoredAfterName(atRule) || isIgnoredPrevNode(atRule);
|
|
29
36
|
|
|
30
37
|
// Nodes do not exists - `@import url('http://') :root {}`
|
|
31
38
|
if (atRule.nodes) {
|
|
@@ -61,10 +68,14 @@ function parseNode(atRule, key, options) {
|
|
|
61
68
|
url = isStringValue ? paramsNodes[0].nodes[0].value : _postcssValueParser.default.stringify(paramsNodes[0].nodes);
|
|
62
69
|
}
|
|
63
70
|
url = (0, _utils.normalizeUrl)(url, isStringValue);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
71
|
+
let requestable = false;
|
|
72
|
+
let needResolve = false;
|
|
73
|
+
if (!isIgnored) {
|
|
74
|
+
({
|
|
75
|
+
requestable,
|
|
76
|
+
needResolve
|
|
77
|
+
} = (0, _utils.isURLRequestable)(url, options));
|
|
78
|
+
}
|
|
68
79
|
let prefix;
|
|
69
80
|
if (requestable && needResolve) {
|
|
70
81
|
const queryParts = url.split("!");
|
package/dist/utils.js
CHANGED
|
@@ -27,6 +27,7 @@ exports.shouldUseModulesPlugins = shouldUseModulesPlugins;
|
|
|
27
27
|
exports.shouldUseURLPlugin = shouldUseURLPlugin;
|
|
28
28
|
exports.sort = sort;
|
|
29
29
|
exports.stringifyRequest = stringifyRequest;
|
|
30
|
+
exports.supportTemplateLiteral = supportTemplateLiteral;
|
|
30
31
|
exports.syntaxErrorFactory = syntaxErrorFactory;
|
|
31
32
|
exports.warningFactory = warningFactory;
|
|
32
33
|
var _url = require("url");
|
|
@@ -845,9 +846,12 @@ function getExportCode(exports, replacements, icssPluginUsed, options, isTemplat
|
|
|
845
846
|
let identifierId = 0;
|
|
846
847
|
const addExportToLocalsCode = (names, value) => {
|
|
847
848
|
const normalizedNames = Array.isArray(names) ? new Set(names) : new Set([names]);
|
|
848
|
-
for (
|
|
849
|
+
for (let name of normalizedNames) {
|
|
849
850
|
const serializedValue = isTemplateLiteralSupported ? convertToTemplateLiteral(value) : JSON.stringify(value);
|
|
850
851
|
if (options.modules.namedExport) {
|
|
852
|
+
if (name === "default") {
|
|
853
|
+
name = `_${name}`;
|
|
854
|
+
}
|
|
851
855
|
if (!validIdentifier.test(name) || keywords.has(name)) {
|
|
852
856
|
identifierId += 1;
|
|
853
857
|
const id = `_${identifierId.toString(16)}`;
|
|
@@ -1030,4 +1034,25 @@ function syntaxErrorFactory(error) {
|
|
|
1030
1034
|
});
|
|
1031
1035
|
obj.stack = null;
|
|
1032
1036
|
return obj;
|
|
1037
|
+
}
|
|
1038
|
+
function supportTemplateLiteral(loaderContext) {
|
|
1039
|
+
if (loaderContext.environment && loaderContext.environment.templateLiteral) {
|
|
1040
|
+
return true;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
// TODO remove in the next major release
|
|
1044
|
+
if (
|
|
1045
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
1046
|
+
loaderContext._compilation &&
|
|
1047
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
1048
|
+
loaderContext._compilation.options &&
|
|
1049
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
1050
|
+
loaderContext._compilation.options.output &&
|
|
1051
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
1052
|
+
loaderContext._compilation.options.output.environment &&
|
|
1053
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
1054
|
+
loaderContext._compilation.options.output.environment.templateLiteral) {
|
|
1055
|
+
return true;
|
|
1056
|
+
}
|
|
1057
|
+
return false;
|
|
1033
1058
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "css-loader",
|
|
3
|
-
"version": "7.1.
|
|
3
|
+
"version": "7.1.2",
|
|
4
4
|
"description": "css loader module for webpack",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "webpack-contrib/css-loader",
|
|
@@ -65,15 +65,15 @@
|
|
|
65
65
|
"semver": "^7.5.4"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@babel/cli": "^7.
|
|
69
|
-
"@babel/core": "^7.
|
|
70
|
-
"@babel/preset-env": "^7.
|
|
71
|
-
"@commitlint/cli": "^19.
|
|
72
|
-
"@commitlint/config-conventional": "^19.
|
|
68
|
+
"@babel/cli": "^7.24.5",
|
|
69
|
+
"@babel/core": "^7.24.5",
|
|
70
|
+
"@babel/preset-env": "^7.24.5",
|
|
71
|
+
"@commitlint/cli": "^19.3.0",
|
|
72
|
+
"@commitlint/config-conventional": "^19.2.2",
|
|
73
73
|
"@webpack-contrib/eslint-config-webpack": "^3.0.0",
|
|
74
74
|
"babel-jest": "^29.7.0",
|
|
75
75
|
"cross-env": "^7.0.3",
|
|
76
|
-
"cspell": "^8.
|
|
76
|
+
"cspell": "^8.7.0",
|
|
77
77
|
"del-cli": "^5.1.0",
|
|
78
78
|
"es-check": "^7.1.0",
|
|
79
79
|
"eslint": "^8.54.0",
|
|
@@ -86,14 +86,14 @@
|
|
|
86
86
|
"less": "^4.2.0",
|
|
87
87
|
"less-loader": "^12.2.0",
|
|
88
88
|
"lint-staged": "^15.2.2",
|
|
89
|
-
"memfs": "^4.
|
|
90
|
-
"mini-css-extract-plugin": "^2.
|
|
89
|
+
"memfs": "^4.9.2",
|
|
90
|
+
"mini-css-extract-plugin": "^2.9.0",
|
|
91
91
|
"npm-run-all": "^4.1.5",
|
|
92
92
|
"postcss-loader": "^8.1.1",
|
|
93
|
-
"postcss-preset-env": "^9.5.
|
|
93
|
+
"postcss-preset-env": "^9.5.9",
|
|
94
94
|
"prettier": "^3.2.5",
|
|
95
|
-
"sass": "^1.
|
|
96
|
-
"sass-loader": "^14.
|
|
95
|
+
"sass": "^1.76.0",
|
|
96
|
+
"sass-loader": "^14.2.1",
|
|
97
97
|
"standard-version": "^9.5.0",
|
|
98
98
|
"strip-ansi": "^6.0.0",
|
|
99
99
|
"style-loader": "^3.3.4",
|