@weapp-tailwindcss/engine 0.1.4 → 0.1.6
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
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_v4 = require("./v4-
|
|
2
|
+
const require_v4 = require("./v4-B5YEEbhA.cjs");
|
|
3
3
|
let node_process = require("node:process");
|
|
4
4
|
node_process = require_v4.__toESM(node_process, 1);
|
|
5
5
|
let _weapp_tailwindcss_source_scan = require("@weapp-tailwindcss/source-scan");
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as expandTailwindV4SourceEntryBraces, B as expandTailwindV4SourceEntries, C as TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, D as createTailwindV4CompiledSourceEntries, E as TAILWIND_V4_IGNORED_FILES, F as resolveTailwindV4SourceBaseCandidates, G as compileTailwindV4Source, H as isFileExcludedByTailwindV4SourceEntries, I as resolveTailwindV4SourceEntry, J as loadTailwindV4NodeModule, K as getTailwindV4DesignSystemCacheKey, L as toPosixPath, M as normalizeTailwindV4ScannerSources, N as normalizeTailwindV4SourceEntries, O as createTailwindV4DefaultIgnoreSources, P as resolveSourceScanPath, R as createTailwindV4SourceEntryMatcher, S as resolveProjectSourceFiles, T as TAILWIND_V4_IGNORED_EXTENSIONS, U as isFileMatchedByTailwindV4SourceEntries, V as groupTailwindV4SourceEntriesByBase, W as mergeTailwindV4SourceEntries, _ as isBareArbitraryValuesEnabled, a as createTailwindGenerationSession, b as extractProjectCandidatesWithPositions, c as replaceBareArbitraryValueSelectors, d as extractRawCandidates, f as extractRawCandidatesWithPositions, g as extractBareArbitraryValueSourceCandidatesWithPositions, h as extractBareArbitraryValueSourceCandidates, i as createTailwindV4Engine, j as normalizeGlobPattern, k as createTailwindV4RootSources, l as resolveValidTailwindV4Candidates, m as extractSourceCandidatesWithPositions, n as generateTailwindV4Style, o as collectTailwindStyleCandidates, p as extractSourceCandidates, q as loadTailwindV4DesignSystem, r as resolveTailwindV4Source, s as canonicalizeBareArbitraryValueCandidates, t as collectTailwindV4StyleCandidates, u as extractTailwindV4InlineSourceCandidates, v as resolveBareArbitraryValueCandidate, w as TAILWIND_V4_IGNORED_CONTENT_DIRS, x as groupTokensByFile, y as escapeCssClassName, z as createTailwindV4SourceExclusionMatcher } from "./v4-
|
|
1
|
+
import { A as expandTailwindV4SourceEntryBraces, B as expandTailwindV4SourceEntries, C as TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, D as createTailwindV4CompiledSourceEntries, E as TAILWIND_V4_IGNORED_FILES, F as resolveTailwindV4SourceBaseCandidates, G as compileTailwindV4Source, H as isFileExcludedByTailwindV4SourceEntries, I as resolveTailwindV4SourceEntry, J as loadTailwindV4NodeModule, K as getTailwindV4DesignSystemCacheKey, L as toPosixPath, M as normalizeTailwindV4ScannerSources, N as normalizeTailwindV4SourceEntries, O as createTailwindV4DefaultIgnoreSources, P as resolveSourceScanPath, R as createTailwindV4SourceEntryMatcher, S as resolveProjectSourceFiles, T as TAILWIND_V4_IGNORED_EXTENSIONS, U as isFileMatchedByTailwindV4SourceEntries, V as groupTailwindV4SourceEntriesByBase, W as mergeTailwindV4SourceEntries, _ as isBareArbitraryValuesEnabled, a as createTailwindGenerationSession, b as extractProjectCandidatesWithPositions, c as replaceBareArbitraryValueSelectors, d as extractRawCandidates, f as extractRawCandidatesWithPositions, g as extractBareArbitraryValueSourceCandidatesWithPositions, h as extractBareArbitraryValueSourceCandidates, i as createTailwindV4Engine, j as normalizeGlobPattern, k as createTailwindV4RootSources, l as resolveValidTailwindV4Candidates, m as extractSourceCandidatesWithPositions, n as generateTailwindV4Style, o as collectTailwindStyleCandidates, p as extractSourceCandidates, q as loadTailwindV4DesignSystem, r as resolveTailwindV4Source, s as canonicalizeBareArbitraryValueCandidates, t as collectTailwindV4StyleCandidates, u as extractTailwindV4InlineSourceCandidates, v as resolveBareArbitraryValueCandidate, w as TAILWIND_V4_IGNORED_CONTENT_DIRS, x as groupTokensByFile, y as escapeCssClassName, z as createTailwindV4SourceExclusionMatcher } from "./v4-sBv0Uojf.js";
|
|
2
2
|
import process from "node:process";
|
|
3
3
|
//#region src/extraction/candidate-extractor/valid.ts
|
|
4
4
|
const designSystemCandidateCache = /* @__PURE__ */ new WeakMap();
|
package/dist/v4/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_v4 = require("../v4-
|
|
2
|
+
const require_v4 = require("../v4-B5YEEbhA.cjs");
|
|
3
3
|
let _weapp_tailwindcss_source_scan = require("@weapp-tailwindcss/source-scan");
|
|
4
4
|
exports.TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN = require_v4.TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN;
|
|
5
5
|
exports.TAILWIND_V4_IGNORED_CONTENT_DIRS = require_v4.TAILWIND_V4_IGNORED_CONTENT_DIRS;
|
package/dist/v4/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as expandTailwindV4SourceEntryBraces, B as expandTailwindV4SourceEntries, C as TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, D as createTailwindV4CompiledSourceEntries, E as TAILWIND_V4_IGNORED_FILES, F as resolveTailwindV4SourceBaseCandidates, G as compileTailwindV4Source, H as isFileExcludedByTailwindV4SourceEntries, I as resolveTailwindV4SourceEntry, J as loadTailwindV4NodeModule, K as getTailwindV4DesignSystemCacheKey, L as toPosixPath, M as normalizeTailwindV4ScannerSources, N as normalizeTailwindV4SourceEntries, O as createTailwindV4DefaultIgnoreSources, P as resolveSourceScanPath, R as createTailwindV4SourceEntryMatcher, T as TAILWIND_V4_IGNORED_EXTENSIONS, U as isFileMatchedByTailwindV4SourceEntries, V as groupTailwindV4SourceEntriesByBase, W as mergeTailwindV4SourceEntries, _ as isBareArbitraryValuesEnabled, a as createTailwindGenerationSession, c as replaceBareArbitraryValueSelectors, g as extractBareArbitraryValueSourceCandidatesWithPositions, h as extractBareArbitraryValueSourceCandidates, i as createTailwindV4Engine, j as normalizeGlobPattern, k as createTailwindV4RootSources, l as resolveValidTailwindV4Candidates, n as generateTailwindV4Style, q as loadTailwindV4DesignSystem, r as resolveTailwindV4Source, s as canonicalizeBareArbitraryValueCandidates, t as collectTailwindV4StyleCandidates, u as extractTailwindV4InlineSourceCandidates, v as resolveBareArbitraryValueCandidate, w as TAILWIND_V4_IGNORED_CONTENT_DIRS, y as escapeCssClassName, z as createTailwindV4SourceExclusionMatcher } from "../v4-
|
|
1
|
+
import { A as expandTailwindV4SourceEntryBraces, B as expandTailwindV4SourceEntries, C as TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, D as createTailwindV4CompiledSourceEntries, E as TAILWIND_V4_IGNORED_FILES, F as resolveTailwindV4SourceBaseCandidates, G as compileTailwindV4Source, H as isFileExcludedByTailwindV4SourceEntries, I as resolveTailwindV4SourceEntry, J as loadTailwindV4NodeModule, K as getTailwindV4DesignSystemCacheKey, L as toPosixPath, M as normalizeTailwindV4ScannerSources, N as normalizeTailwindV4SourceEntries, O as createTailwindV4DefaultIgnoreSources, P as resolveSourceScanPath, R as createTailwindV4SourceEntryMatcher, T as TAILWIND_V4_IGNORED_EXTENSIONS, U as isFileMatchedByTailwindV4SourceEntries, V as groupTailwindV4SourceEntriesByBase, W as mergeTailwindV4SourceEntries, _ as isBareArbitraryValuesEnabled, a as createTailwindGenerationSession, c as replaceBareArbitraryValueSelectors, g as extractBareArbitraryValueSourceCandidatesWithPositions, h as extractBareArbitraryValueSourceCandidates, i as createTailwindV4Engine, j as normalizeGlobPattern, k as createTailwindV4RootSources, l as resolveValidTailwindV4Candidates, n as generateTailwindV4Style, q as loadTailwindV4DesignSystem, r as resolveTailwindV4Source, s as canonicalizeBareArbitraryValueCandidates, t as collectTailwindV4StyleCandidates, u as extractTailwindV4InlineSourceCandidates, v as resolveBareArbitraryValueCandidate, w as TAILWIND_V4_IGNORED_CONTENT_DIRS, y as escapeCssClassName, z as createTailwindV4SourceExclusionMatcher } from "../v4-sBv0Uojf.js";
|
|
2
2
|
export { TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, TAILWIND_V4_IGNORED_CONTENT_DIRS, TAILWIND_V4_IGNORED_EXTENSIONS, TAILWIND_V4_IGNORED_FILES, canonicalizeBareArbitraryValueCandidates, collectTailwindV4StyleCandidates, compileTailwindV4Source, createTailwindGenerationSession, createTailwindV4CompiledSourceEntries, createTailwindV4DefaultIgnoreSources, createTailwindV4Engine, createTailwindV4RootSources, createTailwindV4SourceEntryMatcher, createTailwindV4SourceExclusionMatcher, escapeCssClassName, expandTailwindV4SourceEntries, expandTailwindV4SourceEntryBraces, extractBareArbitraryValueSourceCandidates, extractBareArbitraryValueSourceCandidatesWithPositions, extractTailwindV4InlineSourceCandidates, generateTailwindV4Style, getTailwindV4DesignSystemCacheKey, groupTailwindV4SourceEntriesByBase, isBareArbitraryValuesEnabled, isFileExcludedByTailwindV4SourceEntries, isFileMatchedByTailwindV4SourceEntries, loadTailwindV4DesignSystem, loadTailwindV4NodeModule, mergeTailwindV4SourceEntries, normalizeGlobPattern, normalizeTailwindV4ScannerSources, normalizeTailwindV4SourceEntries, replaceBareArbitraryValueSelectors, resolveBareArbitraryValueCandidate, resolveSourceScanPath, resolveTailwindV4Source, resolveTailwindV4SourceBaseCandidates, resolveTailwindV4SourceEntry, resolveValidTailwindV4Candidates, toPosixPath };
|
|
@@ -20,12 +20,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
20
20
|
enumerable: true
|
|
21
21
|
}) : target, mod));
|
|
22
22
|
//#endregion
|
|
23
|
-
let node_fs = require("node:fs");
|
|
24
23
|
let node_path = require("node:path");
|
|
25
24
|
node_path = __toESM(node_path, 1);
|
|
26
25
|
let node_process = require("node:process");
|
|
27
26
|
node_process = __toESM(node_process, 1);
|
|
28
27
|
let node_crypto = require("node:crypto");
|
|
28
|
+
let node_fs = require("node:fs");
|
|
29
29
|
let node_module = require("node:module");
|
|
30
30
|
let node_url = require("node:url");
|
|
31
31
|
let node_async_hooks = require("node:async_hooks");
|
|
@@ -478,6 +478,37 @@ function resolveTailwindV4SourceBaseCandidates(projectRoot, base, baseFallbacks)
|
|
|
478
478
|
]);
|
|
479
479
|
}
|
|
480
480
|
//#endregion
|
|
481
|
+
//#region src/extraction/file-io.ts
|
|
482
|
+
const CANDIDATE_FILE_CONCURRENCY = 8;
|
|
483
|
+
let activeReads = 0;
|
|
484
|
+
let pendingOffset = 0;
|
|
485
|
+
const pendingReads = [];
|
|
486
|
+
/** 原始补扫、任意值补扫与位置报告共享读取预算,避免多生成请求耗尽文件描述符。 */
|
|
487
|
+
async function readCandidateFile(file) {
|
|
488
|
+
if (activeReads >= CANDIDATE_FILE_CONCURRENCY) await new Promise((resolve) => {
|
|
489
|
+
pendingReads.push(resolve);
|
|
490
|
+
});
|
|
491
|
+
else activeReads++;
|
|
492
|
+
try {
|
|
493
|
+
return await node_fs.promises.readFile(file, "utf8");
|
|
494
|
+
} finally {
|
|
495
|
+
if (pendingOffset < pendingReads.length) {
|
|
496
|
+
const next = pendingReads[pendingOffset++];
|
|
497
|
+
if (pendingOffset === pendingReads.length) {
|
|
498
|
+
pendingReads.length = 0;
|
|
499
|
+
pendingOffset = 0;
|
|
500
|
+
}
|
|
501
|
+
next();
|
|
502
|
+
} else activeReads--;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
/** 分批遍历避免为全部文件同时分配 Promise,输出沿用文件枚举顺序。 */
|
|
506
|
+
async function mapCandidateFiles(files, handle) {
|
|
507
|
+
const results = [];
|
|
508
|
+
for (let start = 0; start < files.length; start += CANDIDATE_FILE_CONCURRENCY) results.push(...await Promise.all(files.slice(start, start + CANDIDATE_FILE_CONCURRENCY).map(handle)));
|
|
509
|
+
return results;
|
|
510
|
+
}
|
|
511
|
+
//#endregion
|
|
481
512
|
//#region src/extraction/oxide.ts
|
|
482
513
|
let oxideImportPromise;
|
|
483
514
|
function createOxideRuntimeDependencyError(cause) {
|
|
@@ -601,7 +632,7 @@ async function extractProjectCandidatesWithPositions(options) {
|
|
|
601
632
|
const batchSize = 32;
|
|
602
633
|
for (let start = 0; start < files.length; start += batchSize) {
|
|
603
634
|
const batch = files.slice(start, start + batchSize);
|
|
604
|
-
const contents = await Promise.allSettled(batch.map(
|
|
635
|
+
const contents = await Promise.allSettled(batch.map(readCandidateFile));
|
|
605
636
|
for (const [index, file] of batch.entries()) {
|
|
606
637
|
const result = contents[index];
|
|
607
638
|
if (result.status === "rejected") {
|
|
@@ -3398,27 +3429,27 @@ async function extractRawCandidates(sources, options) {
|
|
|
3398
3429
|
if (cached) return [...cached.candidates];
|
|
3399
3430
|
const scannedCandidates = scanner.scan();
|
|
3400
3431
|
if (scannedCandidates.length === 0 && files.length > 0) {
|
|
3401
|
-
const changedContents = (await
|
|
3432
|
+
const changedContents = (await mapCandidateFiles(files, async (file) => {
|
|
3402
3433
|
try {
|
|
3403
3434
|
return {
|
|
3404
|
-
content: await
|
|
3435
|
+
content: await readCandidateFile(file),
|
|
3405
3436
|
extension: toExtension(file)
|
|
3406
3437
|
};
|
|
3407
3438
|
} catch {
|
|
3408
3439
|
return;
|
|
3409
3440
|
}
|
|
3410
|
-
}))
|
|
3441
|
+
})).filter((entry) => entry !== void 0);
|
|
3411
3442
|
scannedCandidates.push(...scanner.scanFiles(changedContents));
|
|
3412
3443
|
}
|
|
3413
3444
|
const candidates = new Set(scannedCandidates);
|
|
3414
|
-
if (options?.bareArbitraryValues !== void 0 && options.bareArbitraryValues !== false) await
|
|
3445
|
+
if (options?.bareArbitraryValues !== void 0 && options.bareArbitraryValues !== false) await mapCandidateFiles(files, async (file) => {
|
|
3415
3446
|
try {
|
|
3416
|
-
const content = await
|
|
3447
|
+
const content = await readCandidateFile(file);
|
|
3417
3448
|
const extension = toExtension(file);
|
|
3418
3449
|
const jsStringStaticRanges = JS_LIKE_SOURCE_EXTENSION_RE.test(extension) ? createJsStringStaticRanges(content) : void 0;
|
|
3419
3450
|
for (const candidate of extractBareArbitraryValueSourceCandidatesWithPositions(content, options.bareArbitraryValues)) if (shouldKeepSourceCandidate(content, extension, candidate, jsStringStaticRanges)) candidates.add(candidate.rawCandidate);
|
|
3420
3451
|
} catch {}
|
|
3421
|
-
})
|
|
3452
|
+
});
|
|
3422
3453
|
const result = [...candidates];
|
|
3423
3454
|
setRawCandidateCacheEntry(cacheKey, fingerprint, result);
|
|
3424
3455
|
return [...result];
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire, findPackageJSON } from "node:module";
|
|
2
|
-
import { promises, readFileSync } from "node:fs";
|
|
3
2
|
import path from "node:path";
|
|
4
3
|
import process from "node:process";
|
|
5
4
|
import { createHash } from "node:crypto";
|
|
5
|
+
import { promises, readFileSync } from "node:fs";
|
|
6
6
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
7
7
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
8
8
|
import { clearRequireCache } from "@tailwindcss/node/require-cache";
|
|
@@ -453,6 +453,37 @@ function resolveTailwindV4SourceBaseCandidates(projectRoot, base, baseFallbacks)
|
|
|
453
453
|
]);
|
|
454
454
|
}
|
|
455
455
|
//#endregion
|
|
456
|
+
//#region src/extraction/file-io.ts
|
|
457
|
+
const CANDIDATE_FILE_CONCURRENCY = 8;
|
|
458
|
+
let activeReads = 0;
|
|
459
|
+
let pendingOffset = 0;
|
|
460
|
+
const pendingReads = [];
|
|
461
|
+
/** 原始补扫、任意值补扫与位置报告共享读取预算,避免多生成请求耗尽文件描述符。 */
|
|
462
|
+
async function readCandidateFile(file) {
|
|
463
|
+
if (activeReads >= CANDIDATE_FILE_CONCURRENCY) await new Promise((resolve) => {
|
|
464
|
+
pendingReads.push(resolve);
|
|
465
|
+
});
|
|
466
|
+
else activeReads++;
|
|
467
|
+
try {
|
|
468
|
+
return await promises.readFile(file, "utf8");
|
|
469
|
+
} finally {
|
|
470
|
+
if (pendingOffset < pendingReads.length) {
|
|
471
|
+
const next = pendingReads[pendingOffset++];
|
|
472
|
+
if (pendingOffset === pendingReads.length) {
|
|
473
|
+
pendingReads.length = 0;
|
|
474
|
+
pendingOffset = 0;
|
|
475
|
+
}
|
|
476
|
+
next();
|
|
477
|
+
} else activeReads--;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
/** 分批遍历避免为全部文件同时分配 Promise,输出沿用文件枚举顺序。 */
|
|
481
|
+
async function mapCandidateFiles(files, handle) {
|
|
482
|
+
const results = [];
|
|
483
|
+
for (let start = 0; start < files.length; start += CANDIDATE_FILE_CONCURRENCY) results.push(...await Promise.all(files.slice(start, start + CANDIDATE_FILE_CONCURRENCY).map(handle)));
|
|
484
|
+
return results;
|
|
485
|
+
}
|
|
486
|
+
//#endregion
|
|
456
487
|
//#region src/extraction/oxide.ts
|
|
457
488
|
let oxideImportPromise;
|
|
458
489
|
function createOxideRuntimeDependencyError(cause) {
|
|
@@ -576,7 +607,7 @@ async function extractProjectCandidatesWithPositions(options) {
|
|
|
576
607
|
const batchSize = 32;
|
|
577
608
|
for (let start = 0; start < files.length; start += batchSize) {
|
|
578
609
|
const batch = files.slice(start, start + batchSize);
|
|
579
|
-
const contents = await Promise.allSettled(batch.map(
|
|
610
|
+
const contents = await Promise.allSettled(batch.map(readCandidateFile));
|
|
580
611
|
for (const [index, file] of batch.entries()) {
|
|
581
612
|
const result = contents[index];
|
|
582
613
|
if (result.status === "rejected") {
|
|
@@ -3373,27 +3404,27 @@ async function extractRawCandidates(sources, options) {
|
|
|
3373
3404
|
if (cached) return [...cached.candidates];
|
|
3374
3405
|
const scannedCandidates = scanner.scan();
|
|
3375
3406
|
if (scannedCandidates.length === 0 && files.length > 0) {
|
|
3376
|
-
const changedContents = (await
|
|
3407
|
+
const changedContents = (await mapCandidateFiles(files, async (file) => {
|
|
3377
3408
|
try {
|
|
3378
3409
|
return {
|
|
3379
|
-
content: await
|
|
3410
|
+
content: await readCandidateFile(file),
|
|
3380
3411
|
extension: toExtension(file)
|
|
3381
3412
|
};
|
|
3382
3413
|
} catch {
|
|
3383
3414
|
return;
|
|
3384
3415
|
}
|
|
3385
|
-
}))
|
|
3416
|
+
})).filter((entry) => entry !== void 0);
|
|
3386
3417
|
scannedCandidates.push(...scanner.scanFiles(changedContents));
|
|
3387
3418
|
}
|
|
3388
3419
|
const candidates = new Set(scannedCandidates);
|
|
3389
|
-
if (options?.bareArbitraryValues !== void 0 && options.bareArbitraryValues !== false) await
|
|
3420
|
+
if (options?.bareArbitraryValues !== void 0 && options.bareArbitraryValues !== false) await mapCandidateFiles(files, async (file) => {
|
|
3390
3421
|
try {
|
|
3391
|
-
const content = await
|
|
3422
|
+
const content = await readCandidateFile(file);
|
|
3392
3423
|
const extension = toExtension(file);
|
|
3393
3424
|
const jsStringStaticRanges = JS_LIKE_SOURCE_EXTENSION_RE.test(extension) ? createJsStringStaticRanges(content) : void 0;
|
|
3394
3425
|
for (const candidate of extractBareArbitraryValueSourceCandidatesWithPositions(content, options.bareArbitraryValues)) if (shouldKeepSourceCandidate(content, extension, candidate, jsStringStaticRanges)) candidates.add(candidate.rawCandidate);
|
|
3395
3426
|
} catch {}
|
|
3396
|
-
})
|
|
3427
|
+
});
|
|
3397
3428
|
const result = [...candidates];
|
|
3398
3429
|
setRawCandidateCacheEntry(cacheKey, fingerprint, result);
|
|
3399
3430
|
return [...result];
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weapp-tailwindcss/engine",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.6",
|
|
5
5
|
"description": "Tailwind CSS 4 候选提取、源码扫描与样式生成引擎。",
|
|
6
6
|
"author": "ice breaker <1324318532@qq.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"@tailwindcss/node": "^4.3.3",
|
|
68
68
|
"@tailwindcss/oxide": "^4.3.3",
|
|
69
69
|
"@weapp-tailwindcss/source-scan": "0.1.2",
|
|
70
|
-
"postcss": "^8.5.
|
|
70
|
+
"postcss": "^8.5.30"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"htmlparser2": "^12.0.0",
|