@parcel/transformer-css 2.9.3 → 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.
@@ -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
- return conf === null || conf === void 0 ? void 0 : conf.contents;
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
- if (asset.isSource && (typeof cssModulesConfig === 'boolean' || cssModulesConfig !== null && cssModulesConfig !== void 0 && cssModulesConfig.global) || /\.module\./.test(asset.filePath)) {
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.9.3",
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.9.3"
20
+ "parcel": "^2.10.0"
21
21
  },
22
22
  "dependencies": {
23
- "@parcel/diagnostic": "2.9.3",
24
- "@parcel/plugin": "2.9.3",
23
+ "@parcel/diagnostic": "2.10.0",
24
+ "@parcel/plugin": "2.10.0",
25
25
  "@parcel/source-map": "^2.1.1",
26
- "@parcel/utils": "2.9.3",
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": "db3bcae10497fa6a712fd9a135f93f26c5745454"
31
+ "gitHead": "0e235842b5b93301379bdfa626e7a4e2ee42ea98"
32
32
  }
@@ -11,7 +11,12 @@ import {
11
11
  browserslistToTargets,
12
12
  type SourceLocation as LightningSourceLocation,
13
13
  } from 'lightningcss';
14
- import {remapSourceLocation, relativePath} from '@parcel/utils';
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
- return conf?.contents;
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
- if (
63
- (asset.isSource &&
64
- (typeof cssModulesConfig === 'boolean' ||
65
- cssModulesConfig?.global)) ||
66
- /\.module\./.test(asset.filePath)
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: path.relative(options.projectRoot, asset.filePath),
117
+ filename: normalizeSeparators(
118
+ path.relative(options.projectRoot, asset.filePath),
119
+ ),
78
120
  code,
79
121
  cssModules,
80
122
  analyzeDependencies: asset.meta.hasDependencies !== false,