@parcel/transformer-css 2.9.2 → 2.10.0
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/lib/CSSTransformer.js +30 -3
- package/package.json +6 -6
- package/src/CSSTransformer.js +51 -9
package/lib/CSSTransformer.js
CHANGED
|
@@ -68,10 +68,22 @@ var _default = new (_plugin().Transformer)({
|
|
|
68
68
|
config,
|
|
69
69
|
options
|
|
70
70
|
}) {
|
|
71
|
+
var _contents$cssModules, _contents$cssModules2, _contents$cssModules3, _contents$cssModules4;
|
|
71
72
|
let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
|
|
72
73
|
packageKey: '@parcel/transformer-css'
|
|
73
74
|
});
|
|
74
|
-
|
|
75
|
+
let contents = conf === null || conf === void 0 ? void 0 : conf.contents;
|
|
76
|
+
if (typeof (contents === null || contents === void 0 || (_contents$cssModules = contents.cssModules) === null || _contents$cssModules === void 0 ? void 0 : _contents$cssModules.include) === 'string') {
|
|
77
|
+
contents.cssModules.include = [(0, _utils().globToRegex)(contents.cssModules.include)];
|
|
78
|
+
} else if (Array.isArray(contents === null || contents === void 0 || (_contents$cssModules2 = contents.cssModules) === null || _contents$cssModules2 === void 0 ? void 0 : _contents$cssModules2.include)) {
|
|
79
|
+
contents.cssModules.include = contents.cssModules.include.map(include => typeof include === 'string' ? (0, _utils().globToRegex)(include) : include);
|
|
80
|
+
}
|
|
81
|
+
if (typeof (contents === null || contents === void 0 || (_contents$cssModules3 = contents.cssModules) === null || _contents$cssModules3 === void 0 ? void 0 : _contents$cssModules3.exclude) === 'string') {
|
|
82
|
+
contents.cssModules.exclude = [(0, _utils().globToRegex)(contents.cssModules.exclude)];
|
|
83
|
+
} else if (Array.isArray(contents === null || contents === void 0 || (_contents$cssModules4 = contents.cssModules) === null || _contents$cssModules4 === void 0 ? void 0 : _contents$cssModules4.exclude)) {
|
|
84
|
+
contents.cssModules.exclude = contents.cssModules.exclude.map(exclude => typeof exclude === 'string' ? (0, _utils().globToRegex)(exclude) : exclude);
|
|
85
|
+
}
|
|
86
|
+
return contents;
|
|
75
87
|
},
|
|
76
88
|
async transform({
|
|
77
89
|
asset,
|
|
@@ -106,7 +118,22 @@ var _default = new (_plugin().Transformer)({
|
|
|
106
118
|
let cssModules = false;
|
|
107
119
|
if (asset.meta.type !== 'tag' && asset.meta.cssModulesCompiled == null) {
|
|
108
120
|
let cssModulesConfig = config === null || config === void 0 ? void 0 : config.cssModules;
|
|
109
|
-
|
|
121
|
+
let isCSSModule = /\.module\./.test(asset.filePath);
|
|
122
|
+
if (asset.isSource) {
|
|
123
|
+
var _cssModulesConfig$exc;
|
|
124
|
+
let projectRootPath = _path().default.relative(options.projectRoot, asset.filePath);
|
|
125
|
+
if (typeof cssModulesConfig === 'boolean') {
|
|
126
|
+
isCSSModule = true;
|
|
127
|
+
} else if (cssModulesConfig !== null && cssModulesConfig !== void 0 && cssModulesConfig.include) {
|
|
128
|
+
isCSSModule = cssModulesConfig.include.some(include => include.test(projectRootPath));
|
|
129
|
+
} else if (cssModulesConfig !== null && cssModulesConfig !== void 0 && cssModulesConfig.global) {
|
|
130
|
+
isCSSModule = true;
|
|
131
|
+
}
|
|
132
|
+
if (cssModulesConfig !== null && cssModulesConfig !== void 0 && (_cssModulesConfig$exc = cssModulesConfig.exclude) !== null && _cssModulesConfig$exc !== void 0 && _cssModulesConfig$exc.some(exclude => exclude.test(projectRootPath))) {
|
|
133
|
+
isCSSModule = false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (isCSSModule) {
|
|
110
137
|
if (cssModulesConfig !== null && cssModulesConfig !== void 0 && cssModulesConfig.dashedIdents && !asset.isSource) {
|
|
111
138
|
cssModulesConfig.dashedIdents = false;
|
|
112
139
|
}
|
|
@@ -114,7 +141,7 @@ var _default = new (_plugin().Transformer)({
|
|
|
114
141
|
}
|
|
115
142
|
}
|
|
116
143
|
res = (0, _lightningcss().transform)({
|
|
117
|
-
filename: _path().default.relative(options.projectRoot, asset.filePath),
|
|
144
|
+
filename: (0, _utils().normalizeSeparators)(_path().default.relative(options.projectRoot, asset.filePath)),
|
|
118
145
|
code,
|
|
119
146
|
cssModules,
|
|
120
147
|
analyzeDependencies: asset.meta.hasDependencies !== false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parcel/transformer-css",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -17,16 +17,16 @@
|
|
|
17
17
|
"source": "src/CSSTransformer.js",
|
|
18
18
|
"engines": {
|
|
19
19
|
"node": ">= 12.0.0",
|
|
20
|
-
"parcel": "^2.
|
|
20
|
+
"parcel": "^2.10.0"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@parcel/diagnostic": "2.
|
|
24
|
-
"@parcel/plugin": "2.
|
|
23
|
+
"@parcel/diagnostic": "2.10.0",
|
|
24
|
+
"@parcel/plugin": "2.10.0",
|
|
25
25
|
"@parcel/source-map": "^2.1.1",
|
|
26
|
-
"@parcel/utils": "2.
|
|
26
|
+
"@parcel/utils": "2.10.0",
|
|
27
27
|
"browserslist": "^4.6.6",
|
|
28
28
|
"lightningcss": "^1.16.1",
|
|
29
29
|
"nullthrows": "^1.1.1"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "0e235842b5b93301379bdfa626e7a4e2ee42ea98"
|
|
32
32
|
}
|
package/src/CSSTransformer.js
CHANGED
|
@@ -11,7 +11,12 @@ import {
|
|
|
11
11
|
browserslistToTargets,
|
|
12
12
|
type SourceLocation as LightningSourceLocation,
|
|
13
13
|
} from 'lightningcss';
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
remapSourceLocation,
|
|
16
|
+
relativePath,
|
|
17
|
+
globToRegex,
|
|
18
|
+
normalizeSeparators,
|
|
19
|
+
} from '@parcel/utils';
|
|
15
20
|
import browserslist from 'browserslist';
|
|
16
21
|
import nullthrows from 'nullthrows';
|
|
17
22
|
import ThrowableDiagnostic, {errorToDiagnostic} from '@parcel/diagnostic';
|
|
@@ -21,7 +26,22 @@ export default (new Transformer({
|
|
|
21
26
|
let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
|
|
22
27
|
packageKey: '@parcel/transformer-css',
|
|
23
28
|
});
|
|
24
|
-
|
|
29
|
+
let contents = conf?.contents;
|
|
30
|
+
if (typeof contents?.cssModules?.include === 'string') {
|
|
31
|
+
contents.cssModules.include = [globToRegex(contents.cssModules.include)];
|
|
32
|
+
} else if (Array.isArray(contents?.cssModules?.include)) {
|
|
33
|
+
contents.cssModules.include = contents.cssModules.include.map(include =>
|
|
34
|
+
typeof include === 'string' ? globToRegex(include) : include,
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
if (typeof contents?.cssModules?.exclude === 'string') {
|
|
38
|
+
contents.cssModules.exclude = [globToRegex(contents.cssModules.exclude)];
|
|
39
|
+
} else if (Array.isArray(contents?.cssModules?.exclude)) {
|
|
40
|
+
contents.cssModules.exclude = contents.cssModules.exclude.map(exclude =>
|
|
41
|
+
typeof exclude === 'string' ? globToRegex(exclude) : exclude,
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
return contents;
|
|
25
45
|
},
|
|
26
46
|
async transform({asset, config, options, logger}) {
|
|
27
47
|
// Normalize the asset's environment so that properties that only affect JS don't cause CSS to be duplicated.
|
|
@@ -59,12 +79,32 @@ export default (new Transformer({
|
|
|
59
79
|
asset.meta.cssModulesCompiled == null
|
|
60
80
|
) {
|
|
61
81
|
let cssModulesConfig = config?.cssModules;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
82
|
+
let isCSSModule = /\.module\./.test(asset.filePath);
|
|
83
|
+
if (asset.isSource) {
|
|
84
|
+
let projectRootPath = path.relative(
|
|
85
|
+
options.projectRoot,
|
|
86
|
+
asset.filePath,
|
|
87
|
+
);
|
|
88
|
+
if (typeof cssModulesConfig === 'boolean') {
|
|
89
|
+
isCSSModule = true;
|
|
90
|
+
} else if (cssModulesConfig?.include) {
|
|
91
|
+
isCSSModule = cssModulesConfig.include.some(include =>
|
|
92
|
+
include.test(projectRootPath),
|
|
93
|
+
);
|
|
94
|
+
} else if (cssModulesConfig?.global) {
|
|
95
|
+
isCSSModule = true;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (
|
|
99
|
+
cssModulesConfig?.exclude?.some(exclude =>
|
|
100
|
+
exclude.test(projectRootPath),
|
|
101
|
+
)
|
|
102
|
+
) {
|
|
103
|
+
isCSSModule = false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (isCSSModule) {
|
|
68
108
|
if (cssModulesConfig?.dashedIdents && !asset.isSource) {
|
|
69
109
|
cssModulesConfig.dashedIdents = false;
|
|
70
110
|
}
|
|
@@ -74,7 +114,9 @@ export default (new Transformer({
|
|
|
74
114
|
}
|
|
75
115
|
|
|
76
116
|
res = transform({
|
|
77
|
-
filename:
|
|
117
|
+
filename: normalizeSeparators(
|
|
118
|
+
path.relative(options.projectRoot, asset.filePath),
|
|
119
|
+
),
|
|
78
120
|
code,
|
|
79
121
|
cssModules,
|
|
80
122
|
analyzeDependencies: asset.meta.hasDependencies !== false,
|