@unocss/postcss 0.50.6 → 0.50.8

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
@@ -1,11 +1,11 @@
1
1
  # @unocss/postcss
2
2
 
3
- ## Experimental
4
- This package is in an experimental state right now. It doesn't follow semver, and may introduce breaking changes in patch versions.
3
+ PostCSS plugin for UnoCSS. Supports `@apply`、`@screen` and `theme()` directives.
5
4
 
6
- <!-- @unocss-ignore -->
5
+ > **Warning**: Experimental
6
+ > This package is in an experimental state right now. It doesn't follow semver, and may introduce breaking changes in patch versions.
7
7
 
8
- PostCSS plugin for UnoCSS. Supports `@apply`、`@screen` and `theme()` directives.
8
+ <!-- @unocss-ignore -->
9
9
 
10
10
  ## Install
11
11
 
@@ -26,7 +26,7 @@ module.exports = {
26
26
  ```
27
27
 
28
28
  ```ts
29
- // uno.config.js
29
+ // uno.config.ts
30
30
  import { defineConfig, presetUno } from 'unocss'
31
31
 
32
32
  export default defineConfig({
@@ -92,16 +92,16 @@ The `@screen` directive allows you to create media queries that reference your b
92
92
 
93
93
  ```css
94
94
  .grid {
95
- --uno: grid grid-cols-2;
95
+ @apply grid grid-cols-2;
96
96
  }
97
97
  @screen xs {
98
98
  .grid {
99
- --uno: grid-cols-1;
99
+ @apply grid-cols-1;
100
100
  }
101
101
  }
102
102
  @screen sm {
103
103
  .grid {
104
- --uno: grid-cols-3;
104
+ @apply grid-cols-3;
105
105
  }
106
106
  }
107
107
  /* ... */
@@ -135,16 +135,16 @@ Will be transformed to:
135
135
 
136
136
  ```css
137
137
  .grid {
138
- --uno: grid grid-cols-2;
138
+ @apply grid grid-cols-2;
139
139
  }
140
140
  @screen lt-xs {
141
141
  .grid {
142
- --uno: grid-cols-1;
142
+ @apply grid-cols-1;
143
143
  }
144
144
  }
145
145
  @screen lt-sm {
146
146
  .grid {
147
- --uno: grid-cols-3;
147
+ @apply grid-cols-3;
148
148
  }
149
149
  }
150
150
  /* ... */
@@ -174,21 +174,21 @@ Will be transformed to:
174
174
 
175
175
  ```css
176
176
  .grid {
177
- --uno: grid grid-cols-2;
177
+ @apply grid grid-cols-2;
178
178
  }
179
179
  @screen at-xs {
180
180
  .grid {
181
- --uno: grid-cols-1;
181
+ @apply grid-cols-1;
182
182
  }
183
183
  }
184
184
  @screen at-xl {
185
185
  .grid {
186
- --uno: grid-cols-3;
186
+ @apply grid-cols-3;
187
187
  }
188
188
  }
189
189
  @screen at-xxl {
190
190
  .grid {
191
- --uno: grid-cols-4;
191
+ @apply grid-cols-4;
192
192
  }
193
193
  }
194
194
  /* ... */
package/dist/index.cjs CHANGED
@@ -78,7 +78,9 @@ async function parseApply(root, uno, directiveName) {
78
78
  });
79
79
  }
80
80
 
81
- const themeFnRE = (directiveName) => new RegExp(`${directiveName}\\((.*?)\\)`, "g");
81
+ function themeFnRE(directiveName) {
82
+ return new RegExp(`${directiveName}\\((.*?)\\)`, "g");
83
+ }
82
84
  async function parseTheme(root, uno, directiveName) {
83
85
  root.walkDecls((decl) => {
84
86
  const matches = Array.from(decl.value.matchAll(themeFnRE(directiveName)));
@@ -187,32 +189,36 @@ function unocss(options = {}) {
187
189
  postcssPlugin: directiveMap.unocss,
188
190
  plugins: [
189
191
  async function(root, result) {
190
- if (!result.opts.from?.split("?")[0].endsWith(".css"))
192
+ const from = result.opts.from?.split("?")[0];
193
+ if (!from)
191
194
  return;
192
- let isTarget = false;
195
+ let isTarget = targetCache.has(from);
196
+ const isScanTarget = root.toString().includes(`@${directiveMap.unocss}`);
193
197
  if (targetRE.test(root.toString())) {
194
- if (!targetCache.has(result.opts.from)) {
198
+ if (!isTarget) {
195
199
  root.walkAtRules((rule) => {
196
- if (rule.name === directiveMap.unocss || rule.name === directiveMap.apply || rule.name === directiveMap.theme || rule.name === directiveMap.screen)
200
+ if (rule.name === directiveMap.unocss || rule.name === directiveMap.apply || rule.name === directiveMap.screen)
197
201
  isTarget = true;
202
+ if (isTarget)
203
+ return false;
198
204
  });
199
205
  if (!isTarget) {
200
206
  const themeFn = themeFnRE(directiveMap.theme);
201
207
  root.walkDecls((decl) => {
202
- if (themeFn.test(decl.value))
208
+ if (themeFn.test(decl.value)) {
203
209
  isTarget = true;
210
+ return false;
211
+ }
204
212
  });
213
+ } else {
214
+ targetCache.add(from);
205
215
  }
206
- } else {
207
- isTarget = true;
208
216
  }
209
- } else if (targetCache.has(result.opts.from)) {
210
- targetCache.delete(result.opts.from);
217
+ } else if (targetCache.has(from)) {
218
+ targetCache.delete(from);
211
219
  }
212
220
  if (!isTarget)
213
221
  return;
214
- else
215
- targetCache.add(result.opts.from);
216
222
  try {
217
223
  const cfg = await config$1;
218
224
  if (!uno) {
@@ -229,19 +235,13 @@ function unocss(options = {}) {
229
235
  }
230
236
  const globs = content?.filter((v) => typeof v === "string") ?? defaultIncludeGlobs;
231
237
  const rawContent = content?.filter((v) => typeof v === "object") ?? [];
232
- const entries = await fg__default(globs, {
238
+ const entries = await fg__default(isScanTarget ? globs : from, {
233
239
  cwd,
234
240
  dot: true,
235
241
  absolute: true,
236
242
  ignore: ["**/{.git,node_modules}/**"],
237
243
  stats: true
238
244
  });
239
- result.messages.push({
240
- type: "dependency",
241
- plugin: directiveMap.unocss,
242
- file: result.opts.from,
243
- parent: result.opts.from
244
- });
245
245
  await parseApply(root, uno, directiveMap.apply);
246
246
  await parseTheme(root, uno, directiveMap.theme);
247
247
  await parseScreen(root, uno, directiveMap.screen);
@@ -258,7 +258,7 @@ function unocss(options = {}) {
258
258
  type: "dependency",
259
259
  plugin: directiveMap.unocss,
260
260
  file: node_path.normalize(file),
261
- parent: result.opts.from
261
+ parent: from
262
262
  });
263
263
  if (fileMap.has(file) && mtimeMs <= fileMap.get(file))
264
264
  return;
package/dist/index.mjs CHANGED
@@ -70,7 +70,9 @@ async function parseApply(root, uno, directiveName) {
70
70
  });
71
71
  }
72
72
 
73
- const themeFnRE = (directiveName) => new RegExp(`${directiveName}\\((.*?)\\)`, "g");
73
+ function themeFnRE(directiveName) {
74
+ return new RegExp(`${directiveName}\\((.*?)\\)`, "g");
75
+ }
74
76
  async function parseTheme(root, uno, directiveName) {
75
77
  root.walkDecls((decl) => {
76
78
  const matches = Array.from(decl.value.matchAll(themeFnRE(directiveName)));
@@ -179,32 +181,36 @@ function unocss(options = {}) {
179
181
  postcssPlugin: directiveMap.unocss,
180
182
  plugins: [
181
183
  async function(root, result) {
182
- if (!result.opts.from?.split("?")[0].endsWith(".css"))
184
+ const from = result.opts.from?.split("?")[0];
185
+ if (!from)
183
186
  return;
184
- let isTarget = false;
187
+ let isTarget = targetCache.has(from);
188
+ const isScanTarget = root.toString().includes(`@${directiveMap.unocss}`);
185
189
  if (targetRE.test(root.toString())) {
186
- if (!targetCache.has(result.opts.from)) {
190
+ if (!isTarget) {
187
191
  root.walkAtRules((rule) => {
188
- if (rule.name === directiveMap.unocss || rule.name === directiveMap.apply || rule.name === directiveMap.theme || rule.name === directiveMap.screen)
192
+ if (rule.name === directiveMap.unocss || rule.name === directiveMap.apply || rule.name === directiveMap.screen)
189
193
  isTarget = true;
194
+ if (isTarget)
195
+ return false;
190
196
  });
191
197
  if (!isTarget) {
192
198
  const themeFn = themeFnRE(directiveMap.theme);
193
199
  root.walkDecls((decl) => {
194
- if (themeFn.test(decl.value))
200
+ if (themeFn.test(decl.value)) {
195
201
  isTarget = true;
202
+ return false;
203
+ }
196
204
  });
205
+ } else {
206
+ targetCache.add(from);
197
207
  }
198
- } else {
199
- isTarget = true;
200
208
  }
201
- } else if (targetCache.has(result.opts.from)) {
202
- targetCache.delete(result.opts.from);
209
+ } else if (targetCache.has(from)) {
210
+ targetCache.delete(from);
203
211
  }
204
212
  if (!isTarget)
205
213
  return;
206
- else
207
- targetCache.add(result.opts.from);
208
214
  try {
209
215
  const cfg = await config;
210
216
  if (!uno) {
@@ -221,19 +227,13 @@ function unocss(options = {}) {
221
227
  }
222
228
  const globs = content?.filter((v) => typeof v === "string") ?? defaultIncludeGlobs;
223
229
  const rawContent = content?.filter((v) => typeof v === "object") ?? [];
224
- const entries = await fg(globs, {
230
+ const entries = await fg(isScanTarget ? globs : from, {
225
231
  cwd,
226
232
  dot: true,
227
233
  absolute: true,
228
234
  ignore: ["**/{.git,node_modules}/**"],
229
235
  stats: true
230
236
  });
231
- result.messages.push({
232
- type: "dependency",
233
- plugin: directiveMap.unocss,
234
- file: result.opts.from,
235
- parent: result.opts.from
236
- });
237
237
  await parseApply(root, uno, directiveMap.apply);
238
238
  await parseTheme(root, uno, directiveMap.theme);
239
239
  await parseScreen(root, uno, directiveMap.screen);
@@ -250,7 +250,7 @@ function unocss(options = {}) {
250
250
  type: "dependency",
251
251
  plugin: directiveMap.unocss,
252
252
  file: normalize(file),
253
- parent: result.opts.from
253
+ parent: from
254
254
  });
255
255
  if (fileMap.has(file) && mtimeMs <= fileMap.get(file))
256
256
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unocss/postcss",
3
- "version": "0.50.6",
3
+ "version": "0.50.8",
4
4
  "description": "PostCSS plugin for UnoCSS",
5
5
  "author": "sibbng <sibbngheid@gmail.com>",
6
6
  "license": "MIT",
@@ -40,8 +40,8 @@
40
40
  "fast-glob": "^3.2.12",
41
41
  "magic-string": "^0.30.0",
42
42
  "postcss": "^8.4.21",
43
- "@unocss/config": "0.50.6",
44
- "@unocss/core": "0.50.6"
43
+ "@unocss/config": "0.50.8",
44
+ "@unocss/core": "0.50.8"
45
45
  },
46
46
  "scripts": {
47
47
  "build": "unbuild",