@unocss/vite 0.47.6 → 0.48.1
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/dist/index.cjs +115 -53
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +112 -52
- package/package.json +10 -8
package/dist/index.cjs
CHANGED
|
@@ -9,16 +9,20 @@ const config = require('@unocss/config');
|
|
|
9
9
|
const crypto = require('crypto');
|
|
10
10
|
const MagicString = require('magic-string');
|
|
11
11
|
const path = require('path');
|
|
12
|
+
const fs = require('fs/promises');
|
|
13
|
+
const fg = require('fast-glob');
|
|
12
14
|
const remapping = require('@ampproject/remapping');
|
|
13
|
-
const fs = require('fs');
|
|
15
|
+
const fs$1 = require('fs');
|
|
14
16
|
const url = require('url');
|
|
15
17
|
|
|
16
18
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
17
19
|
|
|
18
20
|
const UnocssInspector__default = /*#__PURE__*/_interopDefaultLegacy(UnocssInspector);
|
|
19
21
|
const MagicString__default = /*#__PURE__*/_interopDefaultLegacy(MagicString);
|
|
20
|
-
const remapping__default = /*#__PURE__*/_interopDefaultLegacy(remapping);
|
|
21
22
|
const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
23
|
+
const fg__default = /*#__PURE__*/_interopDefaultLegacy(fg);
|
|
24
|
+
const remapping__default = /*#__PURE__*/_interopDefaultLegacy(remapping);
|
|
25
|
+
const fs__default$1 = /*#__PURE__*/_interopDefaultLegacy(fs$1);
|
|
22
26
|
|
|
23
27
|
const defaultExclude = [core.cssIdRE];
|
|
24
28
|
const defaultInclude = [/\.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|\?)/];
|
|
@@ -68,6 +72,7 @@ function createContext(configOrPath, defaults = {}, extraConfigSources = [], res
|
|
|
68
72
|
const reloadListeners = [];
|
|
69
73
|
const modules = new core.BetterMap();
|
|
70
74
|
const tokens = /* @__PURE__ */ new Set();
|
|
75
|
+
const tasks = [];
|
|
71
76
|
const affectedModules = /* @__PURE__ */ new Set();
|
|
72
77
|
let ready = reloadConfig();
|
|
73
78
|
async function reloadConfig() {
|
|
@@ -117,15 +122,20 @@ function createContext(configOrPath, defaults = {}, extraConfigSources = [], res
|
|
|
117
122
|
if (tokens.size > len)
|
|
118
123
|
invalidate();
|
|
119
124
|
}
|
|
120
|
-
|
|
125
|
+
function filter(code, id) {
|
|
121
126
|
if (code.includes(IGNORE_COMMENT))
|
|
122
127
|
return false;
|
|
123
128
|
return code.includes(INCLUDE_COMMENT) || code.includes(CSS_PLACEHOLDER) || rollupFilter(id.replace(/\?v=\w+$/, ""));
|
|
124
|
-
}
|
|
129
|
+
}
|
|
125
130
|
async function getConfig() {
|
|
126
131
|
await ready;
|
|
127
132
|
return rawConfig;
|
|
128
133
|
}
|
|
134
|
+
async function flushTasks() {
|
|
135
|
+
const _tasks = [...tasks];
|
|
136
|
+
await Promise.all(_tasks);
|
|
137
|
+
tasks.splice(0, _tasks.length);
|
|
138
|
+
}
|
|
129
139
|
return {
|
|
130
140
|
get ready() {
|
|
131
141
|
return ready;
|
|
@@ -133,6 +143,8 @@ function createContext(configOrPath, defaults = {}, extraConfigSources = [], res
|
|
|
133
143
|
tokens,
|
|
134
144
|
modules,
|
|
135
145
|
affectedModules,
|
|
146
|
+
tasks,
|
|
147
|
+
flushTasks,
|
|
136
148
|
invalidate,
|
|
137
149
|
onInvalidate(fn) {
|
|
138
150
|
invalidations.push(fn);
|
|
@@ -224,20 +236,93 @@ function ChunkModeBuildPlugin({ uno, filter }) {
|
|
|
224
236
|
};
|
|
225
237
|
}
|
|
226
238
|
|
|
227
|
-
function
|
|
239
|
+
async function applyTransformers(ctx, original, id, enforce = "default") {
|
|
240
|
+
if (original.includes(IGNORE_COMMENT))
|
|
241
|
+
return;
|
|
242
|
+
const transformers = (ctx.uno.config.transformers || []).filter((i) => (i.enforce || "default") === enforce);
|
|
243
|
+
if (!transformers.length)
|
|
244
|
+
return;
|
|
245
|
+
let code = original;
|
|
246
|
+
let s = new MagicString__default(code);
|
|
247
|
+
const maps = [];
|
|
248
|
+
for (const t of transformers) {
|
|
249
|
+
if (t.idFilter) {
|
|
250
|
+
if (!t.idFilter(id))
|
|
251
|
+
continue;
|
|
252
|
+
} else if (!ctx.filter(code, id)) {
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
await t.transform(s, id, ctx);
|
|
256
|
+
if (s.hasChanged()) {
|
|
257
|
+
code = s.toString();
|
|
258
|
+
maps.push(s.generateMap({ hires: true, source: id }));
|
|
259
|
+
s = new MagicString__default(code);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
if (code !== original) {
|
|
263
|
+
ctx.affectedModules.add(id);
|
|
264
|
+
return {
|
|
265
|
+
code,
|
|
266
|
+
map: remapping__default(maps, () => null)
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
async function setupExtraContent(ctx, shouldWatch = false) {
|
|
272
|
+
const { extraContent } = await ctx.getConfig();
|
|
273
|
+
const { extract, tasks, root, filter } = ctx;
|
|
274
|
+
if (extraContent?.plain) {
|
|
275
|
+
await Promise.all(
|
|
276
|
+
extraContent.plain.map((code, idx) => {
|
|
277
|
+
return extract(code, `__extra_content_${idx}__`);
|
|
278
|
+
})
|
|
279
|
+
);
|
|
280
|
+
}
|
|
281
|
+
if (extraContent?.filesystem) {
|
|
282
|
+
const files = await fg__default(extraContent.filesystem, { cwd: root });
|
|
283
|
+
async function extractFile(file) {
|
|
284
|
+
const code = await fs__default.readFile(file, "utf-8");
|
|
285
|
+
if (!filter(code, file))
|
|
286
|
+
return;
|
|
287
|
+
const preTransform = await applyTransformers(ctx, code, file, "pre");
|
|
288
|
+
const defaultTransform = await applyTransformers(ctx, preTransform?.code || code, file);
|
|
289
|
+
await applyTransformers(ctx, defaultTransform?.code || preTransform?.code || code, file, "post");
|
|
290
|
+
return await extract(preTransform?.code || code, file);
|
|
291
|
+
}
|
|
292
|
+
if (shouldWatch) {
|
|
293
|
+
const { watch } = await import('chokidar');
|
|
294
|
+
const ignored = ["**/{.git,node_modules}/**"];
|
|
295
|
+
const watcher = watch(files, {
|
|
296
|
+
ignorePermissionErrors: true,
|
|
297
|
+
ignored,
|
|
298
|
+
cwd: root,
|
|
299
|
+
ignoreInitial: true
|
|
300
|
+
});
|
|
301
|
+
watcher.on("all", (type, file) => {
|
|
302
|
+
if (type === "add" || type === "change") {
|
|
303
|
+
const absolutePath = path.resolve(root, file);
|
|
304
|
+
tasks.push(extractFile(absolutePath));
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
await Promise.all(files.map(extractFile));
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
function GlobalModeBuildPlugin(ctx) {
|
|
313
|
+
const { uno, ready, extract, tokens, filter, getConfig, tasks, flushTasks } = ctx;
|
|
228
314
|
const vfsLayers = /* @__PURE__ */ new Set();
|
|
229
315
|
const layerImporterMap = /* @__PURE__ */ new Map();
|
|
230
|
-
let tasks = [];
|
|
231
316
|
let viteConfig;
|
|
232
317
|
const cssPostPlugins = /* @__PURE__ */ new Map();
|
|
233
318
|
const cssPlugins = /* @__PURE__ */ new Map();
|
|
234
|
-
async function applyCssTransform(css, id, dir,
|
|
319
|
+
async function applyCssTransform(css, id, dir, ctx2) {
|
|
235
320
|
const {
|
|
236
321
|
postcss = true
|
|
237
322
|
} = await getConfig();
|
|
238
323
|
if (!cssPlugins.get(dir) || !postcss)
|
|
239
324
|
return css;
|
|
240
|
-
const result = await cssPlugins.get(dir).transform.call(
|
|
325
|
+
const result = await cssPlugins.get(dir).transform.call(ctx2, css, id);
|
|
241
326
|
if (!result)
|
|
242
327
|
return css;
|
|
243
328
|
if (typeof result === "string")
|
|
@@ -250,20 +335,22 @@ function GlobalModeBuildPlugin({ uno, ready, extract, tokens, filter, getConfig
|
|
|
250
335
|
let lastTokenSize = 0;
|
|
251
336
|
let lastResult;
|
|
252
337
|
async function generateAll() {
|
|
253
|
-
await
|
|
338
|
+
await flushTasks();
|
|
254
339
|
if (lastResult && lastTokenSize === tokens.size)
|
|
255
340
|
return lastResult;
|
|
256
341
|
lastResult = await uno.generate(tokens, { minify: true });
|
|
257
342
|
lastTokenSize = tokens.size;
|
|
258
343
|
return lastResult;
|
|
259
344
|
}
|
|
345
|
+
let replaced = false;
|
|
260
346
|
return [
|
|
261
347
|
{
|
|
262
348
|
name: "unocss:global:build:scan",
|
|
263
349
|
apply: "build",
|
|
264
350
|
enforce: "pre",
|
|
265
|
-
buildStart() {
|
|
266
|
-
|
|
351
|
+
async buildStart() {
|
|
352
|
+
vfsLayers.clear();
|
|
353
|
+
tasks.length = 0;
|
|
267
354
|
lastTokenSize = 0;
|
|
268
355
|
lastResult = void 0;
|
|
269
356
|
},
|
|
@@ -334,6 +421,16 @@ function GlobalModeBuildPlugin({ uno, ready, extract, tokens, filter, getConfig
|
|
|
334
421
|
return null;
|
|
335
422
|
}
|
|
336
423
|
},
|
|
424
|
+
{
|
|
425
|
+
name: "unocss:global:content",
|
|
426
|
+
enforce: "pre",
|
|
427
|
+
configResolved(config) {
|
|
428
|
+
viteConfig = config;
|
|
429
|
+
},
|
|
430
|
+
buildStart() {
|
|
431
|
+
tasks.push(setupExtraContent(ctx, viteConfig.command === "serve"));
|
|
432
|
+
}
|
|
433
|
+
},
|
|
337
434
|
{
|
|
338
435
|
name: "unocss:global:build:generate",
|
|
339
436
|
apply: "build",
|
|
@@ -358,9 +455,6 @@ function GlobalModeBuildPlugin({ uno, ready, extract, tokens, filter, getConfig
|
|
|
358
455
|
{
|
|
359
456
|
name: "unocss:global:build:bundle",
|
|
360
457
|
apply: "build",
|
|
361
|
-
configResolved(config) {
|
|
362
|
-
viteConfig = config;
|
|
363
|
-
},
|
|
364
458
|
enforce: "post",
|
|
365
459
|
async generateBundle(options, bundle) {
|
|
366
460
|
const checkJs = ["umd", "amd", "iife"].includes(options.format);
|
|
@@ -368,11 +462,12 @@ function GlobalModeBuildPlugin({ uno, ready, extract, tokens, filter, getConfig
|
|
|
368
462
|
if (!files.length)
|
|
369
463
|
return;
|
|
370
464
|
if (!vfsLayers.size) {
|
|
465
|
+
if (replaced)
|
|
466
|
+
return;
|
|
371
467
|
const msg = "[unocss] entry module not found, have you add `import 'uno.css'` in your main entry?";
|
|
372
468
|
this.warn(msg);
|
|
373
469
|
return;
|
|
374
470
|
}
|
|
375
|
-
let replaced = false;
|
|
376
471
|
const getLayer = (layer, input, replace = false) => {
|
|
377
472
|
const re = new RegExp(`#--unocss-layer-start--${layer}--\\{start:${layer}\\}([\\s\\S]*?)#--unocss-layer-end--${layer}--\\{end:${layer}\\}`, "g");
|
|
378
473
|
if (replace)
|
|
@@ -421,10 +516,9 @@ function GlobalModeBuildPlugin({ uno, ready, extract, tokens, filter, getConfig
|
|
|
421
516
|
const WARN_TIMEOUT = 2e4;
|
|
422
517
|
const WS_EVENT_PREFIX = "unocss:hmr";
|
|
423
518
|
const HASH_LENGTH = 6;
|
|
424
|
-
function GlobalModeDevPlugin({ uno, tokens, affectedModules, onInvalidate, extract, filter }) {
|
|
519
|
+
function GlobalModeDevPlugin({ uno, tokens, tasks, flushTasks, affectedModules, onInvalidate, extract, filter }) {
|
|
425
520
|
const servers = [];
|
|
426
521
|
let base = "";
|
|
427
|
-
const tasks = [];
|
|
428
522
|
const entries = /* @__PURE__ */ new Set();
|
|
429
523
|
let invalidateTimer;
|
|
430
524
|
const lastServedHash = /* @__PURE__ */ new Map();
|
|
@@ -432,7 +526,7 @@ function GlobalModeDevPlugin({ uno, tokens, affectedModules, onInvalidate, extra
|
|
|
432
526
|
let resolved = false;
|
|
433
527
|
let resolvedWarnTimer;
|
|
434
528
|
async function generateCSS(layer) {
|
|
435
|
-
await
|
|
529
|
+
await flushTasks();
|
|
436
530
|
let result;
|
|
437
531
|
let tokensSize = tokens.size;
|
|
438
532
|
do {
|
|
@@ -857,7 +951,7 @@ async function transformSvelteSFC(code, id, uno, options = {}) {
|
|
|
857
951
|
|
|
858
952
|
function SvelteScopedPlugin({ ready, uno }) {
|
|
859
953
|
let viteConfig;
|
|
860
|
-
let filter = pluginutils.createFilter([/\.svelte$/], defaultExclude);
|
|
954
|
+
let filter = pluginutils.createFilter([/\.svelte$/, /\.svelte\.md$/, /\.svx$/], defaultExclude);
|
|
861
955
|
return {
|
|
862
956
|
name: "unocss:svelte-scoped",
|
|
863
957
|
enforce: "pre",
|
|
@@ -865,7 +959,7 @@ function SvelteScopedPlugin({ ready, uno }) {
|
|
|
865
959
|
viteConfig = _viteConfig;
|
|
866
960
|
const { config } = await ready;
|
|
867
961
|
filter = pluginutils.createFilter(
|
|
868
|
-
config.include || [/\.svelte$/],
|
|
962
|
+
config.include || [/\.svelte$/, /\.svelte\.md$/, /\.svx$/],
|
|
869
963
|
config.exclude || defaultExclude
|
|
870
964
|
);
|
|
871
965
|
},
|
|
@@ -1013,38 +1107,6 @@ function ConfigHMRPlugin(ctx) {
|
|
|
1013
1107
|
};
|
|
1014
1108
|
}
|
|
1015
1109
|
|
|
1016
|
-
async function applyTransformers(ctx, original, id, enforce = "default") {
|
|
1017
|
-
if (original.includes(IGNORE_COMMENT))
|
|
1018
|
-
return;
|
|
1019
|
-
const transformers = (ctx.uno.config.transformers || []).filter((i) => (i.enforce || "default") === enforce);
|
|
1020
|
-
if (!transformers.length)
|
|
1021
|
-
return;
|
|
1022
|
-
let code = original;
|
|
1023
|
-
let s = new MagicString__default(code);
|
|
1024
|
-
const maps = [];
|
|
1025
|
-
for (const t of transformers) {
|
|
1026
|
-
if (t.idFilter) {
|
|
1027
|
-
if (!t.idFilter(id))
|
|
1028
|
-
continue;
|
|
1029
|
-
} else if (!ctx.filter(code, id)) {
|
|
1030
|
-
continue;
|
|
1031
|
-
}
|
|
1032
|
-
await t.transform(s, id, ctx);
|
|
1033
|
-
if (s.hasChanged()) {
|
|
1034
|
-
code = s.toString();
|
|
1035
|
-
maps.push(s.generateMap({ hires: true, source: id }));
|
|
1036
|
-
s = new MagicString__default(code);
|
|
1037
|
-
}
|
|
1038
|
-
}
|
|
1039
|
-
if (code !== original) {
|
|
1040
|
-
ctx.affectedModules.add(id);
|
|
1041
|
-
return {
|
|
1042
|
-
code,
|
|
1043
|
-
map: remapping__default(maps, () => null)
|
|
1044
|
-
};
|
|
1045
|
-
}
|
|
1046
|
-
}
|
|
1047
|
-
|
|
1048
1110
|
function createTransformerPlugins(ctx) {
|
|
1049
1111
|
const enforces = ["default", "pre", "post"];
|
|
1050
1112
|
return enforces.map((enforce) => ({
|
|
@@ -1172,7 +1234,7 @@ function createDevtoolsPlugin(ctx) {
|
|
|
1172
1234
|
if (id === DEVTOOLS_PATH) {
|
|
1173
1235
|
if (!clientCode) {
|
|
1174
1236
|
clientCode = [
|
|
1175
|
-
await fs__default.promises.readFile(path.resolve(_dirname, "client.mjs"), "utf-8"),
|
|
1237
|
+
await fs__default$1.promises.readFile(path.resolve(_dirname, "client.mjs"), "utf-8"),
|
|
1176
1238
|
`import('${MOCK_CLASSES_MODULE_ID}')`,
|
|
1177
1239
|
`import('${DEVTOOLS_CSS_PATH}')`
|
|
1178
1240
|
].join("\n").replace("__POST_PATH__", (config.server?.origin ?? "") + POST_PATH);
|
package/dist/index.d.ts
CHANGED
|
@@ -39,9 +39,9 @@ interface VitePluginConfig<Theme extends {} = {}> extends UserConfig<Theme> {
|
|
|
39
39
|
|
|
40
40
|
declare function ChunkModeBuildPlugin({ uno, filter }: UnocssPluginContext): Plugin;
|
|
41
41
|
|
|
42
|
-
declare function GlobalModeDevPlugin({ uno, tokens, affectedModules, onInvalidate, extract, filter }: UnocssPluginContext): Plugin[];
|
|
42
|
+
declare function GlobalModeDevPlugin({ uno, tokens, tasks, flushTasks, affectedModules, onInvalidate, extract, filter }: UnocssPluginContext): Plugin[];
|
|
43
43
|
|
|
44
|
-
declare function GlobalModeBuildPlugin(
|
|
44
|
+
declare function GlobalModeBuildPlugin(ctx: UnocssPluginContext<VitePluginConfig>): Plugin[];
|
|
45
45
|
|
|
46
46
|
declare function GlobalModePlugin(ctx: UnocssPluginContext): vite.Plugin[];
|
|
47
47
|
|
package/dist/index.mjs
CHANGED
|
@@ -5,8 +5,10 @@ import { loadConfig } from '@unocss/config';
|
|
|
5
5
|
import { createHash } from 'crypto';
|
|
6
6
|
import MagicString from 'magic-string';
|
|
7
7
|
import { resolve, dirname } from 'path';
|
|
8
|
+
import fs from 'fs/promises';
|
|
9
|
+
import fg from 'fast-glob';
|
|
8
10
|
import remapping from '@ampproject/remapping';
|
|
9
|
-
import fs from 'fs';
|
|
11
|
+
import fs$1 from 'fs';
|
|
10
12
|
import { fileURLToPath } from 'url';
|
|
11
13
|
|
|
12
14
|
const defaultExclude = [cssIdRE];
|
|
@@ -57,6 +59,7 @@ function createContext(configOrPath, defaults = {}, extraConfigSources = [], res
|
|
|
57
59
|
const reloadListeners = [];
|
|
58
60
|
const modules = new BetterMap();
|
|
59
61
|
const tokens = /* @__PURE__ */ new Set();
|
|
62
|
+
const tasks = [];
|
|
60
63
|
const affectedModules = /* @__PURE__ */ new Set();
|
|
61
64
|
let ready = reloadConfig();
|
|
62
65
|
async function reloadConfig() {
|
|
@@ -106,15 +109,20 @@ function createContext(configOrPath, defaults = {}, extraConfigSources = [], res
|
|
|
106
109
|
if (tokens.size > len)
|
|
107
110
|
invalidate();
|
|
108
111
|
}
|
|
109
|
-
|
|
112
|
+
function filter(code, id) {
|
|
110
113
|
if (code.includes(IGNORE_COMMENT))
|
|
111
114
|
return false;
|
|
112
115
|
return code.includes(INCLUDE_COMMENT) || code.includes(CSS_PLACEHOLDER) || rollupFilter(id.replace(/\?v=\w+$/, ""));
|
|
113
|
-
}
|
|
116
|
+
}
|
|
114
117
|
async function getConfig() {
|
|
115
118
|
await ready;
|
|
116
119
|
return rawConfig;
|
|
117
120
|
}
|
|
121
|
+
async function flushTasks() {
|
|
122
|
+
const _tasks = [...tasks];
|
|
123
|
+
await Promise.all(_tasks);
|
|
124
|
+
tasks.splice(0, _tasks.length);
|
|
125
|
+
}
|
|
118
126
|
return {
|
|
119
127
|
get ready() {
|
|
120
128
|
return ready;
|
|
@@ -122,6 +130,8 @@ function createContext(configOrPath, defaults = {}, extraConfigSources = [], res
|
|
|
122
130
|
tokens,
|
|
123
131
|
modules,
|
|
124
132
|
affectedModules,
|
|
133
|
+
tasks,
|
|
134
|
+
flushTasks,
|
|
125
135
|
invalidate,
|
|
126
136
|
onInvalidate(fn) {
|
|
127
137
|
invalidations.push(fn);
|
|
@@ -213,20 +223,93 @@ function ChunkModeBuildPlugin({ uno, filter }) {
|
|
|
213
223
|
};
|
|
214
224
|
}
|
|
215
225
|
|
|
216
|
-
function
|
|
226
|
+
async function applyTransformers(ctx, original, id, enforce = "default") {
|
|
227
|
+
if (original.includes(IGNORE_COMMENT))
|
|
228
|
+
return;
|
|
229
|
+
const transformers = (ctx.uno.config.transformers || []).filter((i) => (i.enforce || "default") === enforce);
|
|
230
|
+
if (!transformers.length)
|
|
231
|
+
return;
|
|
232
|
+
let code = original;
|
|
233
|
+
let s = new MagicString(code);
|
|
234
|
+
const maps = [];
|
|
235
|
+
for (const t of transformers) {
|
|
236
|
+
if (t.idFilter) {
|
|
237
|
+
if (!t.idFilter(id))
|
|
238
|
+
continue;
|
|
239
|
+
} else if (!ctx.filter(code, id)) {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
await t.transform(s, id, ctx);
|
|
243
|
+
if (s.hasChanged()) {
|
|
244
|
+
code = s.toString();
|
|
245
|
+
maps.push(s.generateMap({ hires: true, source: id }));
|
|
246
|
+
s = new MagicString(code);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (code !== original) {
|
|
250
|
+
ctx.affectedModules.add(id);
|
|
251
|
+
return {
|
|
252
|
+
code,
|
|
253
|
+
map: remapping(maps, () => null)
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
async function setupExtraContent(ctx, shouldWatch = false) {
|
|
259
|
+
const { extraContent } = await ctx.getConfig();
|
|
260
|
+
const { extract, tasks, root, filter } = ctx;
|
|
261
|
+
if (extraContent?.plain) {
|
|
262
|
+
await Promise.all(
|
|
263
|
+
extraContent.plain.map((code, idx) => {
|
|
264
|
+
return extract(code, `__extra_content_${idx}__`);
|
|
265
|
+
})
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
if (extraContent?.filesystem) {
|
|
269
|
+
const files = await fg(extraContent.filesystem, { cwd: root });
|
|
270
|
+
async function extractFile(file) {
|
|
271
|
+
const code = await fs.readFile(file, "utf-8");
|
|
272
|
+
if (!filter(code, file))
|
|
273
|
+
return;
|
|
274
|
+
const preTransform = await applyTransformers(ctx, code, file, "pre");
|
|
275
|
+
const defaultTransform = await applyTransformers(ctx, preTransform?.code || code, file);
|
|
276
|
+
await applyTransformers(ctx, defaultTransform?.code || preTransform?.code || code, file, "post");
|
|
277
|
+
return await extract(preTransform?.code || code, file);
|
|
278
|
+
}
|
|
279
|
+
if (shouldWatch) {
|
|
280
|
+
const { watch } = await import('chokidar');
|
|
281
|
+
const ignored = ["**/{.git,node_modules}/**"];
|
|
282
|
+
const watcher = watch(files, {
|
|
283
|
+
ignorePermissionErrors: true,
|
|
284
|
+
ignored,
|
|
285
|
+
cwd: root,
|
|
286
|
+
ignoreInitial: true
|
|
287
|
+
});
|
|
288
|
+
watcher.on("all", (type, file) => {
|
|
289
|
+
if (type === "add" || type === "change") {
|
|
290
|
+
const absolutePath = resolve(root, file);
|
|
291
|
+
tasks.push(extractFile(absolutePath));
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
await Promise.all(files.map(extractFile));
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
function GlobalModeBuildPlugin(ctx) {
|
|
300
|
+
const { uno, ready, extract, tokens, filter, getConfig, tasks, flushTasks } = ctx;
|
|
217
301
|
const vfsLayers = /* @__PURE__ */ new Set();
|
|
218
302
|
const layerImporterMap = /* @__PURE__ */ new Map();
|
|
219
|
-
let tasks = [];
|
|
220
303
|
let viteConfig;
|
|
221
304
|
const cssPostPlugins = /* @__PURE__ */ new Map();
|
|
222
305
|
const cssPlugins = /* @__PURE__ */ new Map();
|
|
223
|
-
async function applyCssTransform(css, id, dir,
|
|
306
|
+
async function applyCssTransform(css, id, dir, ctx2) {
|
|
224
307
|
const {
|
|
225
308
|
postcss = true
|
|
226
309
|
} = await getConfig();
|
|
227
310
|
if (!cssPlugins.get(dir) || !postcss)
|
|
228
311
|
return css;
|
|
229
|
-
const result = await cssPlugins.get(dir).transform.call(
|
|
312
|
+
const result = await cssPlugins.get(dir).transform.call(ctx2, css, id);
|
|
230
313
|
if (!result)
|
|
231
314
|
return css;
|
|
232
315
|
if (typeof result === "string")
|
|
@@ -239,20 +322,22 @@ function GlobalModeBuildPlugin({ uno, ready, extract, tokens, filter, getConfig
|
|
|
239
322
|
let lastTokenSize = 0;
|
|
240
323
|
let lastResult;
|
|
241
324
|
async function generateAll() {
|
|
242
|
-
await
|
|
325
|
+
await flushTasks();
|
|
243
326
|
if (lastResult && lastTokenSize === tokens.size)
|
|
244
327
|
return lastResult;
|
|
245
328
|
lastResult = await uno.generate(tokens, { minify: true });
|
|
246
329
|
lastTokenSize = tokens.size;
|
|
247
330
|
return lastResult;
|
|
248
331
|
}
|
|
332
|
+
let replaced = false;
|
|
249
333
|
return [
|
|
250
334
|
{
|
|
251
335
|
name: "unocss:global:build:scan",
|
|
252
336
|
apply: "build",
|
|
253
337
|
enforce: "pre",
|
|
254
|
-
buildStart() {
|
|
255
|
-
|
|
338
|
+
async buildStart() {
|
|
339
|
+
vfsLayers.clear();
|
|
340
|
+
tasks.length = 0;
|
|
256
341
|
lastTokenSize = 0;
|
|
257
342
|
lastResult = void 0;
|
|
258
343
|
},
|
|
@@ -323,6 +408,16 @@ function GlobalModeBuildPlugin({ uno, ready, extract, tokens, filter, getConfig
|
|
|
323
408
|
return null;
|
|
324
409
|
}
|
|
325
410
|
},
|
|
411
|
+
{
|
|
412
|
+
name: "unocss:global:content",
|
|
413
|
+
enforce: "pre",
|
|
414
|
+
configResolved(config) {
|
|
415
|
+
viteConfig = config;
|
|
416
|
+
},
|
|
417
|
+
buildStart() {
|
|
418
|
+
tasks.push(setupExtraContent(ctx, viteConfig.command === "serve"));
|
|
419
|
+
}
|
|
420
|
+
},
|
|
326
421
|
{
|
|
327
422
|
name: "unocss:global:build:generate",
|
|
328
423
|
apply: "build",
|
|
@@ -347,9 +442,6 @@ function GlobalModeBuildPlugin({ uno, ready, extract, tokens, filter, getConfig
|
|
|
347
442
|
{
|
|
348
443
|
name: "unocss:global:build:bundle",
|
|
349
444
|
apply: "build",
|
|
350
|
-
configResolved(config) {
|
|
351
|
-
viteConfig = config;
|
|
352
|
-
},
|
|
353
445
|
enforce: "post",
|
|
354
446
|
async generateBundle(options, bundle) {
|
|
355
447
|
const checkJs = ["umd", "amd", "iife"].includes(options.format);
|
|
@@ -357,11 +449,12 @@ function GlobalModeBuildPlugin({ uno, ready, extract, tokens, filter, getConfig
|
|
|
357
449
|
if (!files.length)
|
|
358
450
|
return;
|
|
359
451
|
if (!vfsLayers.size) {
|
|
452
|
+
if (replaced)
|
|
453
|
+
return;
|
|
360
454
|
const msg = "[unocss] entry module not found, have you add `import 'uno.css'` in your main entry?";
|
|
361
455
|
this.warn(msg);
|
|
362
456
|
return;
|
|
363
457
|
}
|
|
364
|
-
let replaced = false;
|
|
365
458
|
const getLayer = (layer, input, replace = false) => {
|
|
366
459
|
const re = new RegExp(`#--unocss-layer-start--${layer}--\\{start:${layer}\\}([\\s\\S]*?)#--unocss-layer-end--${layer}--\\{end:${layer}\\}`, "g");
|
|
367
460
|
if (replace)
|
|
@@ -410,10 +503,9 @@ function GlobalModeBuildPlugin({ uno, ready, extract, tokens, filter, getConfig
|
|
|
410
503
|
const WARN_TIMEOUT = 2e4;
|
|
411
504
|
const WS_EVENT_PREFIX = "unocss:hmr";
|
|
412
505
|
const HASH_LENGTH = 6;
|
|
413
|
-
function GlobalModeDevPlugin({ uno, tokens, affectedModules, onInvalidate, extract, filter }) {
|
|
506
|
+
function GlobalModeDevPlugin({ uno, tokens, tasks, flushTasks, affectedModules, onInvalidate, extract, filter }) {
|
|
414
507
|
const servers = [];
|
|
415
508
|
let base = "";
|
|
416
|
-
const tasks = [];
|
|
417
509
|
const entries = /* @__PURE__ */ new Set();
|
|
418
510
|
let invalidateTimer;
|
|
419
511
|
const lastServedHash = /* @__PURE__ */ new Map();
|
|
@@ -421,7 +513,7 @@ function GlobalModeDevPlugin({ uno, tokens, affectedModules, onInvalidate, extra
|
|
|
421
513
|
let resolved = false;
|
|
422
514
|
let resolvedWarnTimer;
|
|
423
515
|
async function generateCSS(layer) {
|
|
424
|
-
await
|
|
516
|
+
await flushTasks();
|
|
425
517
|
let result;
|
|
426
518
|
let tokensSize = tokens.size;
|
|
427
519
|
do {
|
|
@@ -846,7 +938,7 @@ async function transformSvelteSFC(code, id, uno, options = {}) {
|
|
|
846
938
|
|
|
847
939
|
function SvelteScopedPlugin({ ready, uno }) {
|
|
848
940
|
let viteConfig;
|
|
849
|
-
let filter = createFilter([/\.svelte$/], defaultExclude);
|
|
941
|
+
let filter = createFilter([/\.svelte$/, /\.svelte\.md$/, /\.svx$/], defaultExclude);
|
|
850
942
|
return {
|
|
851
943
|
name: "unocss:svelte-scoped",
|
|
852
944
|
enforce: "pre",
|
|
@@ -854,7 +946,7 @@ function SvelteScopedPlugin({ ready, uno }) {
|
|
|
854
946
|
viteConfig = _viteConfig;
|
|
855
947
|
const { config } = await ready;
|
|
856
948
|
filter = createFilter(
|
|
857
|
-
config.include || [/\.svelte$/],
|
|
949
|
+
config.include || [/\.svelte$/, /\.svelte\.md$/, /\.svx$/],
|
|
858
950
|
config.exclude || defaultExclude
|
|
859
951
|
);
|
|
860
952
|
},
|
|
@@ -1002,38 +1094,6 @@ function ConfigHMRPlugin(ctx) {
|
|
|
1002
1094
|
};
|
|
1003
1095
|
}
|
|
1004
1096
|
|
|
1005
|
-
async function applyTransformers(ctx, original, id, enforce = "default") {
|
|
1006
|
-
if (original.includes(IGNORE_COMMENT))
|
|
1007
|
-
return;
|
|
1008
|
-
const transformers = (ctx.uno.config.transformers || []).filter((i) => (i.enforce || "default") === enforce);
|
|
1009
|
-
if (!transformers.length)
|
|
1010
|
-
return;
|
|
1011
|
-
let code = original;
|
|
1012
|
-
let s = new MagicString(code);
|
|
1013
|
-
const maps = [];
|
|
1014
|
-
for (const t of transformers) {
|
|
1015
|
-
if (t.idFilter) {
|
|
1016
|
-
if (!t.idFilter(id))
|
|
1017
|
-
continue;
|
|
1018
|
-
} else if (!ctx.filter(code, id)) {
|
|
1019
|
-
continue;
|
|
1020
|
-
}
|
|
1021
|
-
await t.transform(s, id, ctx);
|
|
1022
|
-
if (s.hasChanged()) {
|
|
1023
|
-
code = s.toString();
|
|
1024
|
-
maps.push(s.generateMap({ hires: true, source: id }));
|
|
1025
|
-
s = new MagicString(code);
|
|
1026
|
-
}
|
|
1027
|
-
}
|
|
1028
|
-
if (code !== original) {
|
|
1029
|
-
ctx.affectedModules.add(id);
|
|
1030
|
-
return {
|
|
1031
|
-
code,
|
|
1032
|
-
map: remapping(maps, () => null)
|
|
1033
|
-
};
|
|
1034
|
-
}
|
|
1035
|
-
}
|
|
1036
|
-
|
|
1037
1097
|
function createTransformerPlugins(ctx) {
|
|
1038
1098
|
const enforces = ["default", "pre", "post"];
|
|
1039
1099
|
return enforces.map((enforce) => ({
|
|
@@ -1161,7 +1221,7 @@ function createDevtoolsPlugin(ctx) {
|
|
|
1161
1221
|
if (id === DEVTOOLS_PATH) {
|
|
1162
1222
|
if (!clientCode) {
|
|
1163
1223
|
clientCode = [
|
|
1164
|
-
await fs.promises.readFile(resolve(_dirname, "client.mjs"), "utf-8"),
|
|
1224
|
+
await fs$1.promises.readFile(resolve(_dirname, "client.mjs"), "utf-8"),
|
|
1165
1225
|
`import('${MOCK_CLASSES_MODULE_ID}')`,
|
|
1166
1226
|
`import('${DEVTOOLS_CSS_PATH}')`
|
|
1167
1227
|
].join("\n").replace("__POST_PATH__", (config.server?.origin ?? "") + POST_PATH);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unocss/vite",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.48.1",
|
|
4
4
|
"description": "The Vite plugin for UnoCSS",
|
|
5
5
|
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -44,16 +44,18 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@ampproject/remapping": "^2.2.0",
|
|
46
46
|
"@rollup/pluginutils": "^5.0.2",
|
|
47
|
-
"@unocss/config": "0.
|
|
48
|
-
"@unocss/core": "0.
|
|
49
|
-
"@unocss/inspector": "0.
|
|
50
|
-
"@unocss/scope": "0.
|
|
51
|
-
"@unocss/transformer-directives": "0.
|
|
47
|
+
"@unocss/config": "0.48.1",
|
|
48
|
+
"@unocss/core": "0.48.1",
|
|
49
|
+
"@unocss/inspector": "0.48.1",
|
|
50
|
+
"@unocss/scope": "0.48.1",
|
|
51
|
+
"@unocss/transformer-directives": "0.48.1",
|
|
52
|
+
"chokidar": "^3.5.3",
|
|
53
|
+
"fast-glob": "^3.2.12",
|
|
52
54
|
"magic-string": "^0.27.0"
|
|
53
55
|
},
|
|
54
56
|
"devDependencies": {
|
|
55
|
-
"@unocss/shared-integration": "0.
|
|
56
|
-
"vite": "^4.0.
|
|
57
|
+
"@unocss/shared-integration": "0.48.1",
|
|
58
|
+
"vite": "^4.0.4"
|
|
57
59
|
},
|
|
58
60
|
"scripts": {
|
|
59
61
|
"build": "unbuild",
|