tailwindcss 3.4.11 → 3.4.13
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 +15 -1
- package/lib/lib/content.js +17 -6
- package/lib/lib/expandTailwindAtRules.js +2 -2
- package/lib/lib/resolveDefaultsAtRules.js +13 -15
- package/package.json +1 -1
- package/src/lib/content.js +20 -6
- package/src/lib/expandTailwindAtRules.js +1 -1
- package/src/lib/resolveDefaultsAtRules.js +11 -13
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
- Nothing yet!
|
|
11
11
|
|
|
12
|
+
## [3.4.13] - 2024-09-23
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- Improve source glob verification performance ([#14481](https://github.com/tailwindlabs/tailwindcss/pull/14481))
|
|
17
|
+
|
|
18
|
+
## [3.4.12] - 2024-09-17
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Ensure using `@apply` with utilities that use `@defaults` works with rules defined in the base layer when using `optimizeUniversalDefaults` ([#14427](https://github.com/tailwindlabs/tailwindcss/pull/14427))
|
|
23
|
+
|
|
12
24
|
## [3.4.11] - 2024-09-11
|
|
13
25
|
|
|
14
26
|
### Fixed
|
|
@@ -2437,7 +2449,9 @@ No release notes
|
|
|
2437
2449
|
|
|
2438
2450
|
- Everything!
|
|
2439
2451
|
|
|
2440
|
-
[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.
|
|
2452
|
+
[unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.13...HEAD
|
|
2453
|
+
[3.4.13]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.12...v3.4.13
|
|
2454
|
+
[3.4.12]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.11...v3.4.12
|
|
2441
2455
|
[3.4.11]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.10...v3.4.11
|
|
2442
2456
|
[3.4.10]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.9...v3.4.10
|
|
2443
2457
|
[3.4.9]: https://github.com/tailwindlabs/tailwindcss/compare/v3.4.8...v3.4.9
|
package/lib/lib/content.js
CHANGED
|
@@ -173,9 +173,19 @@ function createBroadPatternCheck(paths) {
|
|
|
173
173
|
if (!maybeBroadPattern) {
|
|
174
174
|
return ()=>{};
|
|
175
175
|
}
|
|
176
|
-
// All
|
|
177
|
-
|
|
178
|
-
|
|
176
|
+
// All glob matchers
|
|
177
|
+
let matchers = [];
|
|
178
|
+
// All glob matchers that explicitly contain any of the known large
|
|
179
|
+
// directories (e.g.: node_modules).
|
|
180
|
+
let explicitMatchers = [];
|
|
181
|
+
// Create matchers for all paths
|
|
182
|
+
for (let path of paths){
|
|
183
|
+
let matcher = _micromatch.default.matcher(path);
|
|
184
|
+
if (LARGE_DIRECTORIES_REGEX.test(path)) {
|
|
185
|
+
explicitMatchers.push(matcher);
|
|
186
|
+
}
|
|
187
|
+
matchers.push(matcher);
|
|
188
|
+
}
|
|
179
189
|
// Keep track of whether we already warned about the broad pattern issue or
|
|
180
190
|
// not. The `log.warn` function already does something similar where we only
|
|
181
191
|
// output the log once. However, with this we can also skip the other checks
|
|
@@ -185,11 +195,12 @@ function createBroadPatternCheck(paths) {
|
|
|
185
195
|
* @param {string} file
|
|
186
196
|
*/ return (file)=>{
|
|
187
197
|
if (warned) return; // Already warned about the broad pattern
|
|
188
|
-
if (
|
|
198
|
+
if (explicitMatchers.some((matcher)=>matcher(file))) return; // Explicitly included, so we can skip further checks
|
|
189
199
|
// When a broad pattern is used, we have to double check that the file was
|
|
190
200
|
// not explicitly included in the globs.
|
|
191
|
-
let
|
|
192
|
-
if (
|
|
201
|
+
let matchingGlobIndex = matchers.findIndex((matcher)=>matcher(file));
|
|
202
|
+
if (matchingGlobIndex === -1) return; // This should never happen
|
|
203
|
+
let matchingGlob = paths[matchingGlobIndex];
|
|
193
204
|
// Create relative paths to make the output a bit more readable.
|
|
194
205
|
let relativeMatchingGlob = _path.default.relative(process.cwd(), matchingGlob);
|
|
195
206
|
if (relativeMatchingGlob[0] !== ".") relativeMatchingGlob = `./${relativeMatchingGlob}`;
|
|
@@ -203,8 +203,8 @@ function expandTailwindAtRules(context) {
|
|
|
203
203
|
// Replace any Tailwind directives with generated CSS
|
|
204
204
|
if (layerNodes.base) {
|
|
205
205
|
layerNodes.base.before((0, _cloneNodes.default)([
|
|
206
|
-
...
|
|
207
|
-
...
|
|
206
|
+
...defaultNodes,
|
|
207
|
+
...baseNodes
|
|
208
208
|
], layerNodes.base.source, {
|
|
209
209
|
layer: "base"
|
|
210
210
|
}));
|
|
@@ -120,21 +120,19 @@ function resolveDefaultsAtRules({ tailwindConfig }) {
|
|
|
120
120
|
selectors.add(selector);
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
universal.before(universalRule);
|
|
137
|
-
}
|
|
123
|
+
if (selectorGroups.size === 0) {
|
|
124
|
+
universal.remove();
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
for (let [, selectors] of selectorGroups){
|
|
128
|
+
let universalRule = _postcss.default.rule({
|
|
129
|
+
source: universal.source
|
|
130
|
+
});
|
|
131
|
+
universalRule.selectors = [
|
|
132
|
+
...selectors
|
|
133
|
+
];
|
|
134
|
+
universalRule.append(universal.nodes.map((node)=>node.clone()));
|
|
135
|
+
universal.before(universalRule);
|
|
138
136
|
}
|
|
139
137
|
universal.remove();
|
|
140
138
|
}
|
package/package.json
CHANGED
package/src/lib/content.js
CHANGED
|
@@ -210,9 +210,22 @@ export function createBroadPatternCheck(paths) {
|
|
|
210
210
|
return () => {}
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
// All
|
|
214
|
-
|
|
215
|
-
|
|
213
|
+
// All glob matchers
|
|
214
|
+
let matchers = []
|
|
215
|
+
|
|
216
|
+
// All glob matchers that explicitly contain any of the known large
|
|
217
|
+
// directories (e.g.: node_modules).
|
|
218
|
+
let explicitMatchers = []
|
|
219
|
+
|
|
220
|
+
// Create matchers for all paths
|
|
221
|
+
for (let path of paths) {
|
|
222
|
+
let matcher = micromatch.matcher(path)
|
|
223
|
+
if (LARGE_DIRECTORIES_REGEX.test(path)) {
|
|
224
|
+
explicitMatchers.push(matcher)
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
matchers.push(matcher)
|
|
228
|
+
}
|
|
216
229
|
|
|
217
230
|
// Keep track of whether we already warned about the broad pattern issue or
|
|
218
231
|
// not. The `log.warn` function already does something similar where we only
|
|
@@ -225,12 +238,13 @@ export function createBroadPatternCheck(paths) {
|
|
|
225
238
|
*/
|
|
226
239
|
return (file) => {
|
|
227
240
|
if (warned) return // Already warned about the broad pattern
|
|
228
|
-
if (
|
|
241
|
+
if (explicitMatchers.some((matcher) => matcher(file))) return // Explicitly included, so we can skip further checks
|
|
229
242
|
|
|
230
243
|
// When a broad pattern is used, we have to double check that the file was
|
|
231
244
|
// not explicitly included in the globs.
|
|
232
|
-
let
|
|
233
|
-
if (
|
|
245
|
+
let matchingGlobIndex = matchers.findIndex((matcher) => matcher(file))
|
|
246
|
+
if (matchingGlobIndex === -1) return // This should never happen
|
|
247
|
+
let matchingGlob = paths[matchingGlobIndex]
|
|
234
248
|
|
|
235
249
|
// Create relative paths to make the output a bit more readable.
|
|
236
250
|
let relativeMatchingGlob = path.relative(process.cwd(), matchingGlob)
|
|
@@ -192,7 +192,7 @@ export default function expandTailwindAtRules(context) {
|
|
|
192
192
|
|
|
193
193
|
if (layerNodes.base) {
|
|
194
194
|
layerNodes.base.before(
|
|
195
|
-
cloneNodes([...
|
|
195
|
+
cloneNodes([...defaultNodes, ...baseNodes], layerNodes.base.source, {
|
|
196
196
|
layer: 'base',
|
|
197
197
|
})
|
|
198
198
|
)
|
|
@@ -118,22 +118,20 @@ export default function resolveDefaultsAtRules({ tailwindConfig }) {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
if (
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
121
|
+
if (selectorGroups.size === 0) {
|
|
122
|
+
universal.remove()
|
|
123
|
+
continue
|
|
124
|
+
}
|
|
126
125
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
126
|
+
for (let [, selectors] of selectorGroups) {
|
|
127
|
+
let universalRule = postcss.rule({
|
|
128
|
+
source: universal.source,
|
|
129
|
+
})
|
|
131
130
|
|
|
132
|
-
|
|
131
|
+
universalRule.selectors = [...selectors]
|
|
133
132
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
133
|
+
universalRule.append(universal.nodes.map((node) => node.clone()))
|
|
134
|
+
universal.before(universalRule)
|
|
137
135
|
}
|
|
138
136
|
|
|
139
137
|
universal.remove()
|