weapp-tailwindcss 5.0.11 → 5.0.12
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/{bundle-state-CXzPknlT.mjs → bundle-state-BxMNKjBV.mjs} +2 -34
- package/dist/{bundle-state-BwtEqxvU.js → bundle-state-DU2ATDhw.js} +1 -39
- package/dist/bundlers/gulp/vinyl-transform.d.ts +1 -1
- package/dist/bundlers/shared/hmr-timing.d.ts +1 -0
- package/dist/bundlers/vite/generate-bundle/css-output.d.ts +2 -1
- package/dist/bundlers/vite/generate-bundle/remembered-css.d.ts +1 -1
- package/dist/bundlers/vite/generate-bundle/types.d.ts +5 -0
- package/dist/bundlers/vite/generate-bundle.d.ts +1 -1
- package/dist/bundlers/vite/source-candidates.d.ts +6 -0
- package/dist/bundlers/vite/weapp-vite-config.d.ts +1 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/helpers.d.ts +10 -8
- package/dist/cache/index.d.ts +4 -0
- package/dist/cli.js +7 -0
- package/dist/cli.mjs +7 -0
- package/dist/core.d.ts +7 -0
- package/dist/core.js +8 -5
- package/dist/core.mjs +8 -5
- package/dist/{generator-ChgOWNOj.js → generator-Cb1Zp3Al.js} +1 -1
- package/dist/{generator-h2XRiJ9-.mjs → generator-mvNFUvns.mjs} +1 -1
- package/dist/generator.js +2 -2
- package/dist/generator.mjs +2 -2
- package/dist/{gulp-Be88jhoY.mjs → gulp-BfZpaYSQ.mjs} +97 -11
- package/dist/{gulp-CHtZF-oT.js → gulp-CxGZU0-v.js} +97 -11
- package/dist/gulp.js +1 -1
- package/dist/gulp.mjs +1 -1
- package/dist/{hmr-timing-BkivBZvN.js → hmr-timing-DFR51wgo.js} +61 -9
- package/dist/{hmr-timing-Ct5w4hdM.mjs → hmr-timing-DNjF8bWA.mjs} +49 -10
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/postcss.js +9 -10
- package/dist/postcss.mjs +7 -5
- package/dist/{precheck-CY9oaH49.js → precheck-30zNPRlI.js} +13 -3
- package/dist/{precheck-BpHxsWRd.mjs → precheck-CsFr1q2l.mjs} +14 -4
- package/dist/presets.js +2 -2
- package/dist/presets.mjs +2 -2
- package/dist/tailwindcss/source-scan.d.ts +1 -0
- package/dist/tailwindcss/v3-engine/generator.d.ts +17 -0
- package/dist/tailwindcss/v3-engine/index.d.ts +1 -1
- package/dist/tailwindcss/v3-engine/types.d.ts +1 -0
- package/dist/tailwindcss/v4-engine/generator.d.ts +19 -0
- package/dist/tailwindcss/v4-engine/index.d.ts +1 -1
- package/dist/{tailwindcss-Bfy2egdX.mjs → tailwindcss-CK84uGBp.mjs} +1 -1
- package/dist/{tailwindcss-DbbAKAZP.js → tailwindcss-Clpkz1oR.js} +1 -1
- package/dist/{transform-Cd634UZV.js → transform-CaVEBOuR.js} +1 -1
- package/dist/{transform-r5evL6Hn.mjs → transform-Cju08-aJ.mjs} +1 -1
- package/dist/{v3-engine-D0yA9ZkF.js → v3-engine-CQE5JJNZ.js} +142 -29
- package/dist/{v3-engine-CFkP6dWF.mjs → v3-engine-DKBaKWGL.mjs} +131 -30
- package/dist/{vite-j9cB2Ff1.js → vite-BBGOjh9e.js} +289 -43
- package/dist/{vite-Bd8qf9dK.mjs → vite-CS5DE-HD.mjs} +288 -42
- package/dist/vite.js +1 -1
- package/dist/vite.mjs +1 -1
- package/dist/weapp-tw-css-import-rewrite-loader.js +130 -31
- package/dist/{webpack-CJAOcYEO.js → webpack-DIWrcpRo.js} +93 -12
- package/dist/{webpack-DPdrcC2X.mjs → webpack-SPcri_D8.mjs} +92 -11
- package/dist/webpack.js +1 -1
- package/dist/webpack.mjs +1 -1
- package/package.json +3 -3
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-emK7D4bc.js");
|
|
2
|
-
const require_v3_engine = require("./v3-engine-
|
|
3
|
-
const require_generator = require("./generator-
|
|
4
|
-
const require_precheck = require("./precheck-
|
|
2
|
+
const require_v3_engine = require("./v3-engine-CQE5JJNZ.js");
|
|
3
|
+
const require_generator = require("./generator-Cb1Zp3Al.js");
|
|
4
|
+
const require_precheck = require("./precheck-30zNPRlI.js");
|
|
5
5
|
const require_utils = require("./utils-Dolmt8EO.js");
|
|
6
|
-
const require_tailwindcss = require("./tailwindcss-
|
|
7
|
-
const require_hmr_timing = require("./hmr-timing-
|
|
8
|
-
const require_bundle_state = require("./bundle-state-
|
|
6
|
+
const require_tailwindcss = require("./tailwindcss-Clpkz1oR.js");
|
|
7
|
+
const require_hmr_timing = require("./hmr-timing-DFR51wgo.js");
|
|
8
|
+
const require_bundle_state = require("./bundle-state-DU2ATDhw.js");
|
|
9
9
|
require("./logger-TlKT3xmR.js");
|
|
10
10
|
let _weapp_tailwindcss_postcss = require("@weapp-tailwindcss/postcss");
|
|
11
|
+
let lru_cache = require("lru-cache");
|
|
11
12
|
let tailwindcss_patch = require("tailwindcss-patch");
|
|
12
13
|
let node_fs = require("node:fs");
|
|
13
14
|
node_fs = require_chunk.__toESM(node_fs);
|
|
@@ -480,7 +481,7 @@ function resolveUniAppXStyleIsolationEnabled(root) {
|
|
|
480
481
|
//#region src/uni-app-x/vite.ts
|
|
481
482
|
let transformUVuePromise;
|
|
482
483
|
function loadTransformUVue() {
|
|
483
|
-
transformUVuePromise ?? (transformUVuePromise = Promise.resolve().then(() => require("./transform-
|
|
484
|
+
transformUVuePromise ?? (transformUVuePromise = Promise.resolve().then(() => require("./transform-CaVEBOuR.js")).then((mod) => mod.transformUVue));
|
|
484
485
|
return transformUVuePromise;
|
|
485
486
|
}
|
|
486
487
|
const preprocessorLangs = new Set([
|
|
@@ -795,12 +796,24 @@ function resolveReplayCssOutputFile(rootDir, file) {
|
|
|
795
796
|
if (normalizedFile.length === 0 || normalizedFile === "." || normalizedFile === ".." || normalizedFile.startsWith("../")) return require_bundle_state.normalizeOutputPathKey(node_path.default.basename(file));
|
|
796
797
|
return normalizedFile;
|
|
797
798
|
}
|
|
799
|
+
function normalizeViteSourceRoot(rootDir, sourceRoot) {
|
|
800
|
+
if (typeof sourceRoot !== "string" || sourceRoot.trim().length === 0) return;
|
|
801
|
+
return require_bundle_state.normalizeOutputPathKey(node_path.default.isAbsolute(sourceRoot) ? node_path.default.relative(rootDir, sourceRoot) : sourceRoot).replace(/\/+$/, "");
|
|
802
|
+
}
|
|
803
|
+
function resolveReplayCssOutputFileFromSourceRoot(rootDir, file, sourceRoot) {
|
|
804
|
+
const outputFile = resolveReplayCssOutputFile(rootDir, file);
|
|
805
|
+
const normalizedSourceRoot = normalizeViteSourceRoot(rootDir, sourceRoot);
|
|
806
|
+
if (!normalizedSourceRoot) return outputFile;
|
|
807
|
+
if (outputFile === normalizedSourceRoot) return node_path.default.posix.basename(outputFile);
|
|
808
|
+
if (outputFile.startsWith(`${normalizedSourceRoot}/`)) return outputFile.slice(normalizedSourceRoot.length + 1);
|
|
809
|
+
return outputFile;
|
|
810
|
+
}
|
|
798
811
|
function resolveViteCssOutputFile(file, opts, isWebGeneratorTarget, preserveCssExtension = false) {
|
|
799
812
|
if (isWebGeneratorTarget || preserveCssExtension || opts.cssMatcher(file) || !SOURCE_STYLE_OUTPUT_EXT_RE.test(file) || !require_bundle_state.isCSSRequest(file)) return file;
|
|
800
813
|
return file.replace(SOURCE_STYLE_OUTPUT_EXT_RE, ".wxss");
|
|
801
814
|
}
|
|
802
|
-
function resolveViteCssPipelineOutputFile(file, _opts, rootDir, isWebGeneratorTarget = false, preserveCssExtension = false) {
|
|
803
|
-
const normalizedFile =
|
|
815
|
+
function resolveViteCssPipelineOutputFile(file, _opts, rootDir, isWebGeneratorTarget = false, preserveCssExtension = false, sourceRoot) {
|
|
816
|
+
const normalizedFile = resolveReplayCssOutputFileFromSourceRoot(rootDir, file, sourceRoot);
|
|
804
817
|
if (isWebGeneratorTarget || preserveCssExtension || MINI_PROGRAM_STYLE_OUTPUT_EXT_RE.test(normalizedFile) || !CSS_SOURCE_OUTPUT_EXT_RE.test(normalizedFile) || !require_bundle_state.isCSSRequest(normalizedFile)) return normalizedFile;
|
|
805
818
|
return normalizedFile.replace(CSS_SOURCE_OUTPUT_EXT_RE, ".wxss");
|
|
806
819
|
}
|
|
@@ -1271,10 +1284,10 @@ function mergeRememberedCssSources(sources, outputFile) {
|
|
|
1271
1284
|
sourceFile: sources[0]?.sourceFile ?? outputFile
|
|
1272
1285
|
};
|
|
1273
1286
|
}
|
|
1274
|
-
function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGeneratorTarget, preserveCssExtension) {
|
|
1287
|
+
function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGeneratorTarget, preserveCssExtension, sourceRoot) {
|
|
1275
1288
|
const groups = /* @__PURE__ */ new Map();
|
|
1276
1289
|
for (const [key, remembered] of sources ?? []) {
|
|
1277
|
-
const outputKey = require_bundle_state.normalizeOutputPathKey(resolveViteCssPipelineOutputFile(remembered.outputFile, opts, rootDir, isWebGeneratorTarget, preserveCssExtension));
|
|
1290
|
+
const outputKey = require_bundle_state.normalizeOutputPathKey(resolveViteCssPipelineOutputFile(remembered.outputFile, opts, rootDir, isWebGeneratorTarget, preserveCssExtension, sourceRoot));
|
|
1278
1291
|
const group = groups.get(outputKey) ?? [];
|
|
1279
1292
|
group.push({
|
|
1280
1293
|
key,
|
|
@@ -1992,13 +2005,31 @@ function collectImportedBundleCssSources(bundle, importedStyleFiles) {
|
|
|
1992
2005
|
}
|
|
1993
2006
|
return importedSources;
|
|
1994
2007
|
}
|
|
2008
|
+
function collectBundleAssetFiles(bundle) {
|
|
2009
|
+
const files = /* @__PURE__ */ new Set();
|
|
2010
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2011
|
+
if (output.type !== "asset") continue;
|
|
2012
|
+
files.add(require_bundle_state.normalizeOutputPathKey(getAssetFile(bundleFile, output)));
|
|
2013
|
+
}
|
|
2014
|
+
return files;
|
|
2015
|
+
}
|
|
2016
|
+
function isCoveredViteGeneratedSourceAsset(file, existingAssetFiles, resolveViteProcessedCssOutputFile) {
|
|
2017
|
+
const resolvedOutputFile = require_bundle_state.normalizeOutputPathKey(resolveViteProcessedCssOutputFile?.(file) ?? file);
|
|
2018
|
+
return resolvedOutputFile !== require_bundle_state.normalizeOutputPathKey(file) && existingAssetFiles.has(resolvedOutputFile);
|
|
2019
|
+
}
|
|
1995
2020
|
function collectViteProcessedCssAssetResults(bundle, options) {
|
|
1996
2021
|
let collected = 0;
|
|
2022
|
+
const existingAssetFiles = collectBundleAssetFiles(bundle);
|
|
1997
2023
|
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
1998
2024
|
if (output.type !== "asset") continue;
|
|
1999
2025
|
const file = getAssetFile(bundleFile, output);
|
|
2000
2026
|
if (!isCssOutputFile(file) || !options.isViteProcessedCssAsset?.(output, file)) continue;
|
|
2001
2027
|
const rawSource = readAssetSource(output);
|
|
2028
|
+
if (isCoveredViteGeneratedSourceAsset(file, existingAssetFiles, options.resolveViteProcessedCssOutputFile)) {
|
|
2029
|
+
delete bundle[bundleFile];
|
|
2030
|
+
options.debug?.("skip covered vite-generated source css asset: %s", file);
|
|
2031
|
+
continue;
|
|
2032
|
+
}
|
|
2002
2033
|
const nextCss = resolveViteProcessedCssAssetSource(file, rawSource, options.resolveViteProcessedCssOutputFile);
|
|
2003
2034
|
if (nextCss !== rawSource) output.source = nextCss;
|
|
2004
2035
|
options.markCssAssetProcessed?.(output, file);
|
|
@@ -2104,7 +2135,19 @@ function resolveUniAppXNativeCssHandlerOptions(opts) {
|
|
|
2104
2135
|
};
|
|
2105
2136
|
}
|
|
2106
2137
|
//#endregion
|
|
2138
|
+
//#region src/bundlers/vite/weapp-vite-config.ts
|
|
2139
|
+
function resolveWeappViteSourceRoot(config) {
|
|
2140
|
+
const srcRoot = config?.weapp?.srcRoot;
|
|
2141
|
+
return typeof srcRoot === "string" && srcRoot.trim().length > 0 ? srcRoot : void 0;
|
|
2142
|
+
}
|
|
2143
|
+
//#endregion
|
|
2107
2144
|
//#region src/bundlers/vite/generate-bundle.ts
|
|
2145
|
+
const VITE_LAST_CSS_RESULT_CACHE_MAX = 64;
|
|
2146
|
+
function resolveViteCssTaskConcurrency(useIncrementalMode) {
|
|
2147
|
+
const configured = Number.parseInt(node_process.default.env["WEAPP_TW_VITE_CSS_CONCURRENCY"] ?? "", 10);
|
|
2148
|
+
if (Number.isFinite(configured) && configured > 0) return configured;
|
|
2149
|
+
return useIncrementalMode ? 1 : 2;
|
|
2150
|
+
}
|
|
2108
2151
|
function addSiblingCssFile(files, file) {
|
|
2109
2152
|
if (file.endsWith(".wxml")) files.add(file.replace(/\.wxml$/, ".wxss"));
|
|
2110
2153
|
else if (file.endsWith(".js")) files.add(file.replace(/\.js$/, ".wxss"));
|
|
@@ -2115,6 +2158,90 @@ function collectRuntimeLinkedCssFiles(snapshot) {
|
|
|
2115
2158
|
for (const file of snapshot.runtimeAffectingChangedByType.js) addSiblingCssFile(files, file);
|
|
2116
2159
|
return files;
|
|
2117
2160
|
}
|
|
2161
|
+
function normalizeViteCssCacheKey(file) {
|
|
2162
|
+
return require_bundle_state.normalizeOutputPathKey(file);
|
|
2163
|
+
}
|
|
2164
|
+
function rememberLastCssResult(resultByFile, sourceHashByFile, file, css, sourceHash) {
|
|
2165
|
+
const key = normalizeViteCssCacheKey(file);
|
|
2166
|
+
resultByFile.delete(key);
|
|
2167
|
+
sourceHashByFile.delete(key);
|
|
2168
|
+
resultByFile.set(key, css);
|
|
2169
|
+
sourceHashByFile.set(key, sourceHash);
|
|
2170
|
+
while (resultByFile.size > VITE_LAST_CSS_RESULT_CACHE_MAX) {
|
|
2171
|
+
const oldestKey = resultByFile.keys().next().value;
|
|
2172
|
+
if (typeof oldestKey !== "string") break;
|
|
2173
|
+
resultByFile.delete(oldestKey);
|
|
2174
|
+
sourceHashByFile.delete(oldestKey);
|
|
2175
|
+
}
|
|
2176
|
+
}
|
|
2177
|
+
function getLastCssResult(resultByFile, ...files) {
|
|
2178
|
+
for (const file of files) {
|
|
2179
|
+
if (!file) continue;
|
|
2180
|
+
const key = normalizeViteCssCacheKey(file);
|
|
2181
|
+
const css = resultByFile.get(key);
|
|
2182
|
+
if (css == null) continue;
|
|
2183
|
+
resultByFile.delete(key);
|
|
2184
|
+
resultByFile.set(key, css);
|
|
2185
|
+
return css;
|
|
2186
|
+
}
|
|
2187
|
+
}
|
|
2188
|
+
function getLastCssSourceHash(sourceHashByFile, file) {
|
|
2189
|
+
return sourceHashByFile.get(normalizeViteCssCacheKey(file));
|
|
2190
|
+
}
|
|
2191
|
+
function pruneLastCssResults(resultByFile, sourceHashByFile, activeFiles) {
|
|
2192
|
+
for (const key of resultByFile.keys()) {
|
|
2193
|
+
if (activeFiles.has(key)) continue;
|
|
2194
|
+
resultByFile.delete(key);
|
|
2195
|
+
sourceHashByFile.delete(key);
|
|
2196
|
+
}
|
|
2197
|
+
}
|
|
2198
|
+
function toMb(bytes) {
|
|
2199
|
+
return Math.round(bytes / 1024 / 1024);
|
|
2200
|
+
}
|
|
2201
|
+
function summarizeStringMapCache(map) {
|
|
2202
|
+
let bytes = 0;
|
|
2203
|
+
for (const value of map.values()) bytes += value.length;
|
|
2204
|
+
return {
|
|
2205
|
+
bytes,
|
|
2206
|
+
mb: toMb(bytes),
|
|
2207
|
+
size: map.size
|
|
2208
|
+
};
|
|
2209
|
+
}
|
|
2210
|
+
function resolveViteMemoryDebugStats(context) {
|
|
2211
|
+
if (node_process.default.env["WEAPP_TW_HMR_MEMORY_DEBUG"] !== "1") return;
|
|
2212
|
+
const memory = node_process.default.memoryUsage();
|
|
2213
|
+
return {
|
|
2214
|
+
phase: context.phase,
|
|
2215
|
+
mode: context.useIncrementalMode ? "incremental" : "full",
|
|
2216
|
+
process: {
|
|
2217
|
+
rssMb: toMb(memory.rss),
|
|
2218
|
+
heapTotalMb: toMb(memory.heapTotal),
|
|
2219
|
+
heapUsedMb: toMb(memory.heapUsed),
|
|
2220
|
+
externalMb: toMb(memory.external),
|
|
2221
|
+
arrayBuffersMb: toMb(memory.arrayBuffers)
|
|
2222
|
+
},
|
|
2223
|
+
runtime: {
|
|
2224
|
+
sourceCandidates: context.sourceCandidatesSize,
|
|
2225
|
+
runtime: context.runtimeSize,
|
|
2226
|
+
transformRuntime: context.transformRuntimeSize,
|
|
2227
|
+
generatorRuntime: context.generatorRuntimeSize
|
|
2228
|
+
},
|
|
2229
|
+
processCache: {
|
|
2230
|
+
instance: context.cache.instance.size,
|
|
2231
|
+
hashMap: context.cache.hashMap.size,
|
|
2232
|
+
activeCacheKeys: context.activeProcessCacheKeys.size,
|
|
2233
|
+
activeHashKeys: context.activeProcessHashKeys.size
|
|
2234
|
+
},
|
|
2235
|
+
viteCss: {
|
|
2236
|
+
...context.getViteCssCacheStats?.(),
|
|
2237
|
+
lastCssResultByFile: summarizeStringMapCache(context.lastCssResultByFile)
|
|
2238
|
+
},
|
|
2239
|
+
tailwind: {
|
|
2240
|
+
v3: require_v3_engine.getTailwindV3IncrementalGenerateCacheStats(),
|
|
2241
|
+
v4: require_v3_engine.getTailwindV4IncrementalGenerateCacheStats()
|
|
2242
|
+
}
|
|
2243
|
+
};
|
|
2244
|
+
}
|
|
2118
2245
|
async function createScopedGeneratorCandidateSignature(rawSource, sourceFile, fallbackSignature, getSourceCandidatesForEntries, options = {}) {
|
|
2119
2246
|
if (!getSourceCandidatesForEntries || !rawSource.includes("@source")) return fallbackSignature;
|
|
2120
2247
|
const resolved = await require_v3_engine.resolveTailwindV4EntriesFromCssCached(rawSource, node_path.default.dirname(node_path.default.resolve(sourceFile.replace(/[?#].*$/, ""))));
|
|
@@ -2125,6 +2252,7 @@ async function createScopedGeneratorCandidateSignature(rawSource, sourceFile, fa
|
|
|
2125
2252
|
function createGenerateBundleHook(context) {
|
|
2126
2253
|
const state = require_bundle_state.createBundleBuildState();
|
|
2127
2254
|
const lastCssResultByFile = /* @__PURE__ */ new Map();
|
|
2255
|
+
const lastCssSourceHashByFile = /* @__PURE__ */ new Map();
|
|
2128
2256
|
let currentOutDir;
|
|
2129
2257
|
let currentSubpackageRoots;
|
|
2130
2258
|
const cssHandlerOptions = createCssHandlerOptionsCache({
|
|
@@ -2136,7 +2264,7 @@ function createGenerateBundleHook(context) {
|
|
|
2136
2264
|
});
|
|
2137
2265
|
return async function generateBundle(_opt, bundle) {
|
|
2138
2266
|
const addWatchFile = (id) => this.addWatchFile?.(id);
|
|
2139
|
-
const { opts, runtimeState, ensureBundleRuntimeClassSet, debug, getResolvedConfig, markCssAssetProcessed, isCssAssetProcessed, isViteProcessedCssAsset, recordCssAssetResult, recordViteProcessedCssAssetResult, getViteProcessedCssAssetResults, getViteProcessedCssAssetResult, getSourceCandidates, getSourceCandidatesForEntries, getSourceCandidateSourcesForEntries, waitForSourceCandidateSyncs, rememberCssSource, refreshRememberedCssSource, getRememberedCssSources, getRememberedCssSignature, setRememberedCssSignature, getKnownSfcSource, recordGeneratorCandidates, hmrTimingRecorder } = context;
|
|
2267
|
+
const { opts, runtimeState, ensureBundleRuntimeClassSet, debug, getResolvedConfig, markCssAssetProcessed, isCssAssetProcessed, isViteProcessedCssAsset, recordCssAssetResult, recordViteProcessedCssAssetResult, getViteProcessedCssAssetResults, getViteProcessedCssAssetResult, getSourceCandidates, getSourceCandidatesForEntries, getSourceCandidateSourcesForEntries, waitForSourceCandidateSyncs, rememberCssSource, refreshRememberedCssSource, getRememberedCssSources, getRememberedCssSignature, setRememberedCssSignature, getKnownSfcSource, recordGeneratorCandidates, pruneViteCssCaches, getViteCssCacheStats, hmrTimingRecorder } = context;
|
|
2140
2268
|
const getBundlerSfcSource = (sourceFile) => {
|
|
2141
2269
|
const code = this.getModuleInfo?.(sourceFile)?.code;
|
|
2142
2270
|
return typeof code === "string" && hasSfcStyleSources(code) ? code : void 0;
|
|
@@ -2154,6 +2282,7 @@ function createGenerateBundleHook(context) {
|
|
|
2154
2282
|
const shouldGenerateWebCssByGenerator = isWebGeneratorTarget && runtimeState.twPatcher.majorVersion === 3;
|
|
2155
2283
|
const { getCssHandlerOptions, getCssUserHandlerOptions } = cssHandlerOptions;
|
|
2156
2284
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
2285
|
+
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig);
|
|
2157
2286
|
const outDir = resolvedConfig?.build?.outDir ? node_path.default.resolve(rootDir, resolvedConfig.build.outDir) : rootDir;
|
|
2158
2287
|
await runtimeState.readyPromise;
|
|
2159
2288
|
debug("start");
|
|
@@ -2165,7 +2294,7 @@ function createGenerateBundleHook(context) {
|
|
|
2165
2294
|
markCssAssetProcessed,
|
|
2166
2295
|
recordCssAssetResult,
|
|
2167
2296
|
recordViteProcessedCssAssetResult,
|
|
2168
|
-
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension),
|
|
2297
|
+
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot),
|
|
2169
2298
|
debug
|
|
2170
2299
|
});
|
|
2171
2300
|
const hmrTimingStartedAt = performance.now();
|
|
@@ -2198,6 +2327,7 @@ function createGenerateBundleHook(context) {
|
|
|
2198
2327
|
const debugCssDiff = node_process.default.env["WEAPP_TW_VITE_DEBUG_CSS_DIFF"] === "1";
|
|
2199
2328
|
const disableV3OxideSourceRuntime = node_process.default.env["WEAPP_TW_VITE_DISABLE_V3_OXIDE_RUNTIME"] === "1";
|
|
2200
2329
|
const bundleFiles = Object.keys(bundle);
|
|
2330
|
+
const activeViteCssCacheFiles = new Set(bundleFiles.map(normalizeViteCssCacheKey));
|
|
2201
2331
|
const subpackageRoots = collectMiniProgramSubpackageRoots(bundle);
|
|
2202
2332
|
if (subpackageRoots) currentSubpackageRoots = subpackageRoots;
|
|
2203
2333
|
const isMainPackageStyleOutputFile = (file) => currentSubpackageRoots != null && !isSubpackageOutputFile(file, currentSubpackageRoots);
|
|
@@ -2321,7 +2451,14 @@ function createGenerateBundleHook(context) {
|
|
|
2321
2451
|
});
|
|
2322
2452
|
const linkedByEntry = useIncrementalMode ? /* @__PURE__ */ new Map() : void 0;
|
|
2323
2453
|
const sharedCssResultCache = /* @__PURE__ */ new Map();
|
|
2454
|
+
const activeProcessCacheKeys = /* @__PURE__ */ new Set();
|
|
2455
|
+
const activeProcessHashKeys = /* @__PURE__ */ new Set();
|
|
2456
|
+
const rememberProcessCacheKey = (cacheKey, hashKey = cacheKey) => {
|
|
2457
|
+
activeProcessCacheKeys.add(cacheKey);
|
|
2458
|
+
activeProcessHashKeys.add(hashKey);
|
|
2459
|
+
};
|
|
2324
2460
|
const tasks = [];
|
|
2461
|
+
const cssTaskFactories = [];
|
|
2325
2462
|
const jsTaskFactories = [];
|
|
2326
2463
|
for (const entry of snapshot.entries) {
|
|
2327
2464
|
const { file, output: originalSource, source: originalEntrySource, type } = entry;
|
|
@@ -2333,10 +2470,13 @@ function createGenerateBundleHook(context) {
|
|
|
2333
2470
|
}
|
|
2334
2471
|
if (!processFiles.html.has(file)) continue;
|
|
2335
2472
|
const rawSource = originalEntrySource;
|
|
2473
|
+
const cacheKey = file;
|
|
2474
|
+
const hashKey = `${file}:html:${runtimeSignature}`;
|
|
2475
|
+
rememberProcessCacheKey(cacheKey, hashKey);
|
|
2336
2476
|
tasks.push(timeTask("html", () => require_hmr_timing.processCachedTask({
|
|
2337
2477
|
cache,
|
|
2338
|
-
cacheKey
|
|
2339
|
-
hashKey
|
|
2478
|
+
cacheKey,
|
|
2479
|
+
hashKey,
|
|
2340
2480
|
hash: getSnapshotHash(snapshot.sourceHashByFile, file, rawSource),
|
|
2341
2481
|
applyResult(source) {
|
|
2342
2482
|
originalSource.source = source;
|
|
@@ -2375,6 +2515,7 @@ function createGenerateBundleHook(context) {
|
|
|
2375
2515
|
metrics.css.total++;
|
|
2376
2516
|
const rawSource = normalizeRelativeCssConfigDirectives(originalEntrySource, file, outDir, opts);
|
|
2377
2517
|
const outputFile = resolveViteCssOutputFile(file, opts, isWebGeneratorTarget, shouldPreserveAppCssExtension);
|
|
2518
|
+
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
2378
2519
|
if (outputFile !== file && !canProcessViteSourceStyleAsCss(rawSource, file)) {
|
|
2379
2520
|
delete bundle[file];
|
|
2380
2521
|
debug("css skip raw source style asset: %s -> %s", file, outputFile);
|
|
@@ -2459,8 +2600,10 @@ function createGenerateBundleHook(context) {
|
|
|
2459
2600
|
const cssRuntimeSignature = createCssRuntimeSignature(runtimeSignature, scopedGeneratorCandidateSignature);
|
|
2460
2601
|
const rememberedCssRuntimeSignature = createRememberedCssRuntimeSignature(cssRuntimeSignature, cssRuntimeAffectingHash);
|
|
2461
2602
|
const cssSharedCacheKey = `${cssShareScope}:${cssRuntimeSignature}:${runtimeState.twPatcher.majorVersion ?? "unknown"}:${cssHandlerOptions.isMainChunk ? "1" : "0"}:${cssRuntimeAffectingSignature}:${sourceTraceSignature}`;
|
|
2603
|
+
const cssCacheKey = file;
|
|
2604
|
+
const cssHashKey = `${file}:css:${cssRuntimeSignature}:${runtimeState.twPatcher.majorVersion ?? "unknown"}`;
|
|
2462
2605
|
if (!shouldTrackGeneratorRuntime) {
|
|
2463
|
-
const lastCss = lastCssResultByFile
|
|
2606
|
+
const lastCss = getLastCssResult(lastCssResultByFile, outputFile, file);
|
|
2464
2607
|
if (lastCss != null) {
|
|
2465
2608
|
applyCssResult(lastCss);
|
|
2466
2609
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
@@ -2469,14 +2612,15 @@ function createGenerateBundleHook(context) {
|
|
|
2469
2612
|
continue;
|
|
2470
2613
|
}
|
|
2471
2614
|
}
|
|
2472
|
-
|
|
2615
|
+
rememberProcessCacheKey(cssCacheKey, cssHashKey);
|
|
2616
|
+
cssTaskFactories.push(() => timeTask("css", () => require_hmr_timing.processCachedTask({
|
|
2473
2617
|
cache,
|
|
2474
|
-
cacheKey:
|
|
2475
|
-
hashKey:
|
|
2618
|
+
cacheKey: cssCacheKey,
|
|
2619
|
+
hashKey: cssHashKey,
|
|
2476
2620
|
hash: `${cssRuntimeAffectingHash}:${scopedGeneratorCandidateSignature}:${sourceTraceSignature}`,
|
|
2477
2621
|
applyResult(source) {
|
|
2478
2622
|
applyCssResult(source);
|
|
2479
|
-
lastCssResultByFile
|
|
2623
|
+
rememberLastCssResult(lastCssResultByFile, lastCssSourceHashByFile, outputFile, source, cssRuntimeAffectingHash);
|
|
2480
2624
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
2481
2625
|
if (rememberedCssSources.length <= 1) rememberCssSource?.({
|
|
2482
2626
|
outputFile,
|
|
@@ -2513,7 +2657,7 @@ function createGenerateBundleHook(context) {
|
|
|
2513
2657
|
getSourceCandidatesForEntries: scopedSourceCandidateGetter,
|
|
2514
2658
|
styleHandler,
|
|
2515
2659
|
debug,
|
|
2516
|
-
previousCss: !vitePipelineCssAsset && useIncrementalMode && !hasRuntimeAffectingChanges && !snapshot.changedByType.css.has(file) ? lastCssResultByFile
|
|
2660
|
+
previousCss: !vitePipelineCssAsset && useIncrementalMode && !hasRuntimeAffectingChanges && !snapshot.changedByType.css.has(file) ? getLastCssResult(lastCssResultByFile, outputFile, file) : void 0
|
|
2517
2661
|
});
|
|
2518
2662
|
if (generated) {
|
|
2519
2663
|
const tracedCss = annotateCss(generated.css);
|
|
@@ -2574,10 +2718,12 @@ function createGenerateBundleHook(context) {
|
|
|
2574
2718
|
jsTaskFactories.push(async () => {
|
|
2575
2719
|
await timeTask("js", async () => {
|
|
2576
2720
|
const hashSalt = createJsHashSalt(runtimeSignature, useIncrementalMode ? createLinkedImpactSignature(file, snapshot.linkedImpactsByEntry, snapshot.sourceHashByFile) : void 0);
|
|
2721
|
+
const hashKey = `${file}:js`;
|
|
2722
|
+
rememberProcessCacheKey(file, hashKey);
|
|
2577
2723
|
await require_hmr_timing.processCachedTask({
|
|
2578
2724
|
cache,
|
|
2579
2725
|
cacheKey: file,
|
|
2580
|
-
hashKey
|
|
2726
|
+
hashKey,
|
|
2581
2727
|
hash: `${getSnapshotHash(snapshot.sourceHashByFile, file, initialRawSource)}:${hashSalt}`,
|
|
2582
2728
|
applyResult(source) {
|
|
2583
2729
|
originalSource.code = source;
|
|
@@ -2616,9 +2762,11 @@ function createGenerateBundleHook(context) {
|
|
|
2616
2762
|
collectLinkedFileNames(linked, getJsEntry, linkedSet);
|
|
2617
2763
|
baseApplyLinkedUpdates(linked);
|
|
2618
2764
|
};
|
|
2765
|
+
const uniAppXJsHashKey = `${file}:js`;
|
|
2766
|
+
rememberProcessCacheKey(file, uniAppXJsHashKey);
|
|
2619
2767
|
const factory = createUniAppXAssetTask(file, originalSource, outDir, {
|
|
2620
2768
|
cache,
|
|
2621
|
-
hashKey:
|
|
2769
|
+
hashKey: uniAppXJsHashKey,
|
|
2622
2770
|
hashSalt: createJsHashSalt(runtimeSignature, [UNI_APP_X_STYLE_PLACEHOLDER_VERSION, useIncrementalMode ? createLinkedImpactSignature(file, snapshot.linkedImpactsByEntry, snapshot.sourceHashByFile) : void 0].filter(Boolean).join(":")),
|
|
2623
2771
|
createHandlerOptions,
|
|
2624
2772
|
debug,
|
|
@@ -2660,7 +2808,7 @@ function createGenerateBundleHook(context) {
|
|
|
2660
2808
|
}
|
|
2661
2809
|
}
|
|
2662
2810
|
if (useIncrementalMode || isNativeAppStyleTarget) {
|
|
2663
|
-
const rememberedReplayGroups = collectRememberedCssReplayGroups(getRememberedCssSources?.(), opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension);
|
|
2811
|
+
const rememberedReplayGroups = collectRememberedCssReplayGroups(getRememberedCssSources?.(), opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot);
|
|
2664
2812
|
for (const [outputFile, rememberedGroup] of rememberedReplayGroups) {
|
|
2665
2813
|
const refreshedRememberedGroup = await Promise.all(rememberedGroup.map(async (item) => ({
|
|
2666
2814
|
key: item.key,
|
|
@@ -2669,6 +2817,8 @@ function createGenerateBundleHook(context) {
|
|
|
2669
2817
|
const rememberedCssSource = mergeRememberedCssSources(refreshedRememberedGroup.map((item) => item.remembered), outputFile);
|
|
2670
2818
|
if (!rememberedCssSource) continue;
|
|
2671
2819
|
const { rawSource, sourceFile } = rememberedCssSource;
|
|
2820
|
+
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
2821
|
+
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(sourceFile));
|
|
2672
2822
|
const outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
2673
2823
|
const cssHandlerOptions = {
|
|
2674
2824
|
...getCssHandlerOptions(sourceFile),
|
|
@@ -2682,11 +2832,14 @@ function createGenerateBundleHook(context) {
|
|
|
2682
2832
|
tokenSources: sourceTraceTokenSources
|
|
2683
2833
|
});
|
|
2684
2834
|
const scopedGeneratorRuntime = createScopedGeneratorRuntime(outputFile, cssHandlerOptions, generatorRuntime);
|
|
2685
|
-
const
|
|
2835
|
+
const cssRuntimeSignature = createCssRuntimeSignature(createCandidateSignature(scopedGeneratorRuntime), await createScopedGeneratorCandidateSignature(rawSource, sourceFile, createCandidateSignature(scopedGeneratorRuntime), scopedSourceCandidateGetter, { includeFallbackSignature: cssHandlerOptions.isMainChunk }));
|
|
2836
|
+
const cssRuntimeAffectingHash = cache.computeHash(require_bundle_state.createRuntimeAffectingSourceSignature(rawSource, "css"));
|
|
2837
|
+
const rememberedCssRuntimeSignature = createRememberedCssRuntimeSignature(cssRuntimeSignature, cssRuntimeAffectingHash);
|
|
2838
|
+
const previousCss = useIncrementalMode && getLastCssSourceHash(lastCssSourceHashByFile, outputFile) === cssRuntimeAffectingHash ? getLastCssResult(lastCssResultByFile, outputFile) : void 0;
|
|
2686
2839
|
const rememberedKeys = refreshedRememberedGroup.map((item) => item.key);
|
|
2687
2840
|
const allRememberedSignaturesFresh = rememberedKeys.length > 0 && rememberedKeys.every((key) => getRememberedCssSignature?.(key) === rememberedCssRuntimeSignature);
|
|
2688
2841
|
if (bundleFiles.includes(outputFile) || bundleFiles.includes(sourceFile) || allRememberedSignaturesFresh) continue;
|
|
2689
|
-
|
|
2842
|
+
cssTaskFactories.push(() => timeTask("css.replay", async () => {
|
|
2690
2843
|
const start = performance.now();
|
|
2691
2844
|
const generated = await require_hmr_timing.generateCssByGenerator({
|
|
2692
2845
|
opts,
|
|
@@ -2698,9 +2851,11 @@ function createGenerateBundleHook(context) {
|
|
|
2698
2851
|
cssUserHandlerOptions: getCssUserHandlerOptions(sourceFile),
|
|
2699
2852
|
getSourceCandidatesForEntries: scopedSourceCandidateGetter,
|
|
2700
2853
|
styleHandler,
|
|
2701
|
-
debug
|
|
2854
|
+
debug,
|
|
2855
|
+
previousCss
|
|
2702
2856
|
});
|
|
2703
2857
|
const css = annotateCss(generated?.css ?? (await styleHandler(rawSource, cssHandlerOptions)).css);
|
|
2858
|
+
rememberLastCssResult(lastCssResultByFile, lastCssSourceHashByFile, outputFile, css, cssRuntimeAffectingHash);
|
|
2704
2859
|
for (const key of rememberedKeys) setRememberedCssSignature?.(key, rememberedCssRuntimeSignature);
|
|
2705
2860
|
if (generated) {
|
|
2706
2861
|
registerGeneratorDependencies$1({ addWatchFile }, generated.dependencies);
|
|
@@ -2721,7 +2876,11 @@ function createGenerateBundleHook(context) {
|
|
|
2721
2876
|
}));
|
|
2722
2877
|
}
|
|
2723
2878
|
}
|
|
2724
|
-
|
|
2879
|
+
require_hmr_timing.pushConcurrentTaskFactories(tasks, jsTaskFactories);
|
|
2880
|
+
if (cssTaskFactories.length > 0) {
|
|
2881
|
+
const cssConcurrency = resolveViteCssTaskConcurrency(useIncrementalMode);
|
|
2882
|
+
tasks.push(require_hmr_timing.runWithConcurrency(cssTaskFactories, cssConcurrency).then(() => void 0));
|
|
2883
|
+
}
|
|
2725
2884
|
const tasksStart = performance.now();
|
|
2726
2885
|
await Promise.all(tasks);
|
|
2727
2886
|
recordTimingDetail("tasks", tasksStart);
|
|
@@ -2776,7 +2935,7 @@ function createGenerateBundleHook(context) {
|
|
|
2776
2935
|
markCssAssetProcessed,
|
|
2777
2936
|
recordCssAssetResult,
|
|
2778
2937
|
recordViteProcessedCssAssetResult,
|
|
2779
|
-
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension),
|
|
2938
|
+
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot),
|
|
2780
2939
|
debug
|
|
2781
2940
|
});
|
|
2782
2941
|
return injectViteProcessedCssIntoMainCssAssets(bundle, {
|
|
@@ -2796,10 +2955,34 @@ function createGenerateBundleHook(context) {
|
|
|
2796
2955
|
const stateUpdateStart = performance.now();
|
|
2797
2956
|
require_bundle_state.updateBundleBuildState(state, snapshot, useIncrementalMode ? linkedByEntry ?? /* @__PURE__ */ new Map() : /* @__PURE__ */ new Map(), { incremental: useIncrementalMode });
|
|
2798
2957
|
state.generatorCandidateSignature = generatorCandidateSignature;
|
|
2958
|
+
if (useIncrementalMode && !snapshot.hasOmittedKnownFiles) cache.prune?.({
|
|
2959
|
+
cacheKeys: activeProcessCacheKeys,
|
|
2960
|
+
hashKeys: activeProcessHashKeys
|
|
2961
|
+
});
|
|
2962
|
+
pruneLastCssResults(lastCssResultByFile, lastCssSourceHashByFile, activeViteCssCacheFiles);
|
|
2963
|
+
pruneViteCssCaches?.({
|
|
2964
|
+
activeFiles: activeViteCssCacheFiles,
|
|
2965
|
+
activeKnownSfcFiles: new Set([...snapshot.sourceHashByFile.keys(), ...snapshot.entries.map((entry) => entry.file)])
|
|
2966
|
+
});
|
|
2799
2967
|
recordTimingDetail("state.update", stateUpdateStart);
|
|
2800
2968
|
debug("metrics iteration=%d runtime=%sms html(total=%d transform=%d hit=%d rate=%s elapsed=%sms) js(total=%d transform=%d hit=%d rate=%s elapsed=%sms) css(total=%d transform=%d hit=%d rate=%s elapsed=%sms)", useIncrementalMode ? state.iteration : 0, formatMs(metrics.runtimeSet), metrics.html.total, metrics.html.transformed, metrics.html.cacheHits, formatCacheHitRate(metrics.html), formatMs(metrics.html.elapsed), metrics.js.total, metrics.js.transformed, metrics.js.cacheHits, formatCacheHitRate(metrics.js), formatMs(metrics.js.elapsed), metrics.css.total, metrics.css.transformed, metrics.css.cacheHits, formatCacheHitRate(metrics.css), formatMs(metrics.css.elapsed));
|
|
2801
2969
|
if (hmrTimingRecorder) {
|
|
2802
|
-
hmrTimingRecorder.record("generateBundle", performance.now() - hmrTimingStartedAt,
|
|
2970
|
+
hmrTimingRecorder.record("generateBundle", performance.now() - hmrTimingStartedAt, {
|
|
2971
|
+
...timingDetails,
|
|
2972
|
+
memoryDebug: resolveViteMemoryDebugStats({
|
|
2973
|
+
activeProcessCacheKeys,
|
|
2974
|
+
activeProcessHashKeys,
|
|
2975
|
+
cache,
|
|
2976
|
+
generatorRuntimeSize: generatorRuntime.size,
|
|
2977
|
+
getViteCssCacheStats,
|
|
2978
|
+
lastCssResultByFile,
|
|
2979
|
+
phase: "generateBundle",
|
|
2980
|
+
runtimeSize: runtime.size,
|
|
2981
|
+
sourceCandidatesSize: sourceCandidates.size,
|
|
2982
|
+
transformRuntimeSize: transformRuntime.size,
|
|
2983
|
+
useIncrementalMode
|
|
2984
|
+
})
|
|
2985
|
+
});
|
|
2803
2986
|
hmrTimingRecorder.emitTotal();
|
|
2804
2987
|
}
|
|
2805
2988
|
onEnd();
|
|
@@ -2863,6 +3046,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
2863
3046
|
const isNativeAppStyleTarget = uniUtsPlatform.isApp || isHarmonyAppStyleTarget;
|
|
2864
3047
|
if (resolvedConfig?.command !== "build" && !isNativeAppStyleTarget) return;
|
|
2865
3048
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
3049
|
+
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig);
|
|
2866
3050
|
const sourceTraceTokenSources = getSourceCandidateSourcesForEntries ? require_hmr_timing.createCssTokenSourceMap(getSourceCandidateSourcesForEntries(void 0), opts) : void 0;
|
|
2867
3051
|
const annotateCss = (css) => require_hmr_timing.annotateCssSourceTrace(css, {
|
|
2868
3052
|
opts,
|
|
@@ -2875,7 +3059,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
2875
3059
|
markCssAssetProcessed,
|
|
2876
3060
|
recordCssAssetResult,
|
|
2877
3061
|
recordViteProcessedCssAssetResult,
|
|
2878
|
-
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, isNativeAppStyleTarget),
|
|
3062
|
+
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, isNativeAppStyleTarget, sourceRoot),
|
|
2879
3063
|
debug
|
|
2880
3064
|
});
|
|
2881
3065
|
};
|
|
@@ -3429,7 +3613,10 @@ function resolveImplicitTailwindcssBasedirFromViteRoot(root) {
|
|
|
3429
3613
|
const debug = require_v3_engine.createDebug();
|
|
3430
3614
|
const weappTailwindcssPackageDir = require_bundle_state.resolvePackageDir("weapp-tailwindcss");
|
|
3431
3615
|
const weappTailwindcssDirPosix = require_bundle_state.slash(weappTailwindcssPackageDir);
|
|
3432
|
-
const
|
|
3616
|
+
const SOURCE_CANDIDATE_SCAN_CACHE_MAX = 8;
|
|
3617
|
+
const sourceCandidateScanSnapshotCache = new lru_cache.LRUCache({ max: SOURCE_CANDIDATE_SCAN_CACHE_MAX });
|
|
3618
|
+
const VITE_REMEMBERED_CSS_CACHE_MAX = 96;
|
|
3619
|
+
const VITE_KNOWN_SFC_SOURCE_CACHE_MAX = 128;
|
|
3433
3620
|
const SFC_STYLE_BLOCK_RE = /<style\b[^>]*>([\s\S]*?)<\/style>/gi;
|
|
3434
3621
|
const SFC_COMPONENT_FILE_RE = /\.(?:vue|uvue|nvue|svelte|mpx)$/i;
|
|
3435
3622
|
function normalizeSignaturePath(value) {
|
|
@@ -3474,6 +3661,21 @@ function normalizeCssSourceIdentity(sourceFile) {
|
|
|
3474
3661
|
if (query.type === "style") return `${normalizedFile}?type=style&index=${query.index ?? 0}`;
|
|
3475
3662
|
return require_bundle_state.normalizeOutputPathKey(require_bundle_state.stripRequestQuery(cleanSourceFile));
|
|
3476
3663
|
}
|
|
3664
|
+
function touchMapEntry(map, key, value) {
|
|
3665
|
+
map.delete(key);
|
|
3666
|
+
map.set(key, value);
|
|
3667
|
+
}
|
|
3668
|
+
function pruneMapToMaxSize(map, maxSize, onDelete) {
|
|
3669
|
+
while (map.size > maxSize) {
|
|
3670
|
+
const key = map.keys().next().value;
|
|
3671
|
+
if (key === void 0) break;
|
|
3672
|
+
map.delete(key);
|
|
3673
|
+
onDelete?.(key);
|
|
3674
|
+
}
|
|
3675
|
+
}
|
|
3676
|
+
function normalizeVitePersistentCacheKey(file) {
|
|
3677
|
+
return require_bundle_state.normalizeOutputPathKey(file);
|
|
3678
|
+
}
|
|
3477
3679
|
/**
|
|
3478
3680
|
* @name WeappTailwindcss
|
|
3479
3681
|
* @description uni-app vite / uni-app-x 版本插件
|
|
@@ -3570,7 +3772,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
3570
3772
|
bareArbitraryValues: opts.arbitraryValues?.bareArbitraryValues,
|
|
3571
3773
|
extractor: sourceCandidateExtractor
|
|
3572
3774
|
});
|
|
3573
|
-
const sourceCandidateScanCache =
|
|
3775
|
+
const sourceCandidateScanCache = new lru_cache.LRUCache({ max: SOURCE_CANDIDATE_SCAN_CACHE_MAX });
|
|
3574
3776
|
let sourceScanEntries;
|
|
3575
3777
|
let sourceScanMatcher;
|
|
3576
3778
|
let sourceScanDependencies = /* @__PURE__ */ new Set();
|
|
@@ -3766,12 +3968,16 @@ function WeappTailwindcss(options = {}) {
|
|
|
3766
3968
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
3767
3969
|
if (!SFC_COMPONENT_FILE_RE.test(file)) return;
|
|
3768
3970
|
if (!hasSfcStyleBlocks(code)) return;
|
|
3769
|
-
knownSfcSources
|
|
3971
|
+
touchMapEntry(knownSfcSources, normalizeKnownSfcSourceKey(file), code);
|
|
3972
|
+
pruneMapToMaxSize(knownSfcSources, VITE_KNOWN_SFC_SOURCE_CACHE_MAX);
|
|
3770
3973
|
};
|
|
3771
3974
|
const getKnownSfcSource = (file) => {
|
|
3772
3975
|
const scanSource = sourceCandidateCollector.source(file);
|
|
3773
3976
|
if (scanSource && hasSfcStyleBlocks(scanSource)) return scanSource;
|
|
3774
|
-
|
|
3977
|
+
const key = normalizeKnownSfcSourceKey(file);
|
|
3978
|
+
const source = knownSfcSources.get(key);
|
|
3979
|
+
if (source != null) touchMapEntry(knownSfcSources, key, source);
|
|
3980
|
+
return source;
|
|
3775
3981
|
};
|
|
3776
3982
|
const rememberCssSource = (entry, cssRuntimeSignature) => {
|
|
3777
3983
|
const outputKey = require_bundle_state.normalizeOutputPathKey(entry.outputFile);
|
|
@@ -3779,10 +3985,10 @@ function WeappTailwindcss(options = {}) {
|
|
|
3779
3985
|
const previousOutputEntry = rememberedCssSources.get(outputKey);
|
|
3780
3986
|
const key = previousOutputEntry != null && normalizeCssSourceIdentity(previousOutputEntry.sourceFile) !== normalizedSourceFile ? `${outputKey}\0${normalizedSourceFile}` : outputKey;
|
|
3781
3987
|
const previous = rememberedCssSources.get(key);
|
|
3782
|
-
rememberedCssSources
|
|
3988
|
+
touchMapEntry(rememberedCssSources, key, entry);
|
|
3783
3989
|
for (const [rememberedKey, remembered] of rememberedCssSources) {
|
|
3784
3990
|
if (rememberedKey === key || normalizeCssSourceIdentity(remembered.sourceFile) !== normalizedSourceFile) continue;
|
|
3785
|
-
rememberedCssSources
|
|
3991
|
+
touchMapEntry(rememberedCssSources, rememberedKey, {
|
|
3786
3992
|
...remembered,
|
|
3787
3993
|
rawSource: entry.rawSource,
|
|
3788
3994
|
sourceFile: entry.sourceFile
|
|
@@ -3791,6 +3997,9 @@ function WeappTailwindcss(options = {}) {
|
|
|
3791
3997
|
}
|
|
3792
3998
|
if (cssRuntimeSignature) rememberedCssSignatureByFile.set(key, cssRuntimeSignature);
|
|
3793
3999
|
else if (previous?.rawSource !== entry.rawSource || previous?.sourceFile !== entry.sourceFile) rememberedCssSignatureByFile.delete(key);
|
|
4000
|
+
pruneMapToMaxSize(rememberedCssSources, VITE_REMEMBERED_CSS_CACHE_MAX, (rememberedKey) => {
|
|
4001
|
+
rememberedCssSignatureByFile.delete(String(rememberedKey));
|
|
4002
|
+
});
|
|
3794
4003
|
};
|
|
3795
4004
|
const refreshRememberedCssSourceEntry = (rememberedKey, remembered, sourceFile, rawSource) => {
|
|
3796
4005
|
if (remembered.rawSource === rawSource && remembered.sourceFile === sourceFile) return remembered;
|
|
@@ -3799,7 +4008,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
3799
4008
|
rawSource,
|
|
3800
4009
|
sourceFile
|
|
3801
4010
|
};
|
|
3802
|
-
rememberedCssSources
|
|
4011
|
+
touchMapEntry(rememberedCssSources, rememberedKey, nextRemembered);
|
|
3803
4012
|
rememberedCssSignatureByFile.delete(rememberedKey);
|
|
3804
4013
|
return nextRemembered;
|
|
3805
4014
|
};
|
|
@@ -3880,19 +4089,53 @@ function WeappTailwindcss(options = {}) {
|
|
|
3880
4089
|
rememberedCssSignatureByFile.set(require_bundle_state.normalizeOutputPathKey(file), cssRuntimeSignature);
|
|
3881
4090
|
};
|
|
3882
4091
|
const recordCssAssetResult = (file, css) => {
|
|
3883
|
-
viteGeneratedCssByFile
|
|
4092
|
+
touchMapEntry(viteGeneratedCssByFile, normalizeVitePersistentCacheKey(file), css);
|
|
3884
4093
|
};
|
|
3885
4094
|
const recordViteProcessedCssAssetResult = (file, css, options = {}) => {
|
|
3886
|
-
const key =
|
|
4095
|
+
const key = normalizeVitePersistentCacheKey(file);
|
|
3887
4096
|
const previous = viteProcessedCssAssetResults.get(key);
|
|
3888
|
-
viteProcessedCssAssetResults
|
|
4097
|
+
touchMapEntry(viteProcessedCssAssetResults, key, {
|
|
3889
4098
|
css,
|
|
3890
4099
|
injectIntoMain: options.injectIntoMain ?? previous?.injectIntoMain,
|
|
3891
4100
|
outputFile: options.outputFile ?? previous?.outputFile
|
|
3892
4101
|
});
|
|
3893
4102
|
};
|
|
3894
4103
|
const getViteProcessedCssAssetResults = () => viteProcessedCssAssetResults.entries();
|
|
3895
|
-
const getViteProcessedCssAssetResult = (file) => viteProcessedCssAssetResults.get(
|
|
4104
|
+
const getViteProcessedCssAssetResult = (file) => viteProcessedCssAssetResults.get(normalizeVitePersistentCacheKey(file));
|
|
4105
|
+
const getViteCssCacheStats = () => ({
|
|
4106
|
+
viteGeneratedCssByFile: viteGeneratedCssByFile.size,
|
|
4107
|
+
viteProcessedCssAssetResults: viteProcessedCssAssetResults.size,
|
|
4108
|
+
rememberedCssSources: rememberedCssSources.size,
|
|
4109
|
+
rememberedCssSignatureByFile: rememberedCssSignatureByFile.size,
|
|
4110
|
+
knownSfcSources: knownSfcSources.size,
|
|
4111
|
+
sourceCandidateScanCache: sourceCandidateScanCache.size,
|
|
4112
|
+
pendingSourceCandidateSyncs: pendingSourceCandidateSyncs.size,
|
|
4113
|
+
pendingSourceCandidateSyncByFile: pendingSourceCandidateSyncByFile.size
|
|
4114
|
+
});
|
|
4115
|
+
const pruneViteCssCaches = (options) => {
|
|
4116
|
+
const activeFiles = new Set([...options.activeFiles].map(normalizeVitePersistentCacheKey));
|
|
4117
|
+
for (const key of viteGeneratedCssByFile.keys()) if (!activeFiles.has(key)) viteGeneratedCssByFile.delete(key);
|
|
4118
|
+
for (const [key, record] of viteProcessedCssAssetResults) {
|
|
4119
|
+
const outputKey = typeof record.outputFile === "string" ? normalizeVitePersistentCacheKey(record.outputFile) : void 0;
|
|
4120
|
+
if (!activeFiles.has(key) && (outputKey == null || !activeFiles.has(outputKey))) viteProcessedCssAssetResults.delete(key);
|
|
4121
|
+
}
|
|
4122
|
+
for (const [key, remembered] of rememberedCssSources) {
|
|
4123
|
+
const outputKey = normalizeVitePersistentCacheKey(remembered.outputFile);
|
|
4124
|
+
const sourceKey = normalizeVitePersistentCacheKey(remembered.sourceFile);
|
|
4125
|
+
if (!activeFiles.has(key) && !activeFiles.has(outputKey) && !activeFiles.has(sourceKey)) {
|
|
4126
|
+
rememberedCssSources.delete(key);
|
|
4127
|
+
rememberedCssSignatureByFile.delete(key);
|
|
4128
|
+
}
|
|
4129
|
+
}
|
|
4130
|
+
if (options.activeKnownSfcFiles) {
|
|
4131
|
+
const activeKnownSfcFiles = new Set([...options.activeKnownSfcFiles].map((file) => normalizeKnownSfcSourceKey(file)).filter((file) => SFC_COMPONENT_FILE_RE.test(file)));
|
|
4132
|
+
for (const key of knownSfcSources.keys()) if (!activeKnownSfcFiles.has(key)) knownSfcSources.delete(key);
|
|
4133
|
+
}
|
|
4134
|
+
pruneMapToMaxSize(rememberedCssSources, VITE_REMEMBERED_CSS_CACHE_MAX, (rememberedKey) => {
|
|
4135
|
+
rememberedCssSignatureByFile.delete(String(rememberedKey));
|
|
4136
|
+
});
|
|
4137
|
+
pruneMapToMaxSize(knownSfcSources, VITE_KNOWN_SFC_SOURCE_CACHE_MAX);
|
|
4138
|
+
};
|
|
3896
4139
|
const normalizeViteProcessedCssFile = (file) => node_path.default.resolve((0, _weapp_tailwindcss_shared.cleanUrl)(file));
|
|
3897
4140
|
const markViteProcessedCssSource = (file) => {
|
|
3898
4141
|
viteProcessedCssSourceFiles.add(normalizeViteProcessedCssFile(file));
|
|
@@ -4002,7 +4245,8 @@ function WeappTailwindcss(options = {}) {
|
|
|
4002
4245
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
4003
4246
|
const isHarmonyAppStyleTarget = isHarmonyAppBuildTarget();
|
|
4004
4247
|
const isNativeAppStyleTarget = require_utils.resolveUniUtsPlatform().isApp || isHarmonyAppStyleTarget;
|
|
4005
|
-
const
|
|
4248
|
+
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig);
|
|
4249
|
+
const outputFile = resolveViteCssPipelineOutputFile(file, opts, rootDir, generatorOptions.target === "web", isNativeAppStyleTarget, sourceRoot);
|
|
4006
4250
|
const runtime = getRecordedGeneratorCandidates() ?? getSourceCandidates() ?? await ensureRuntimeClassSet();
|
|
4007
4251
|
const outputCssHandlerOptions = transformCssHandlerOptions.getCssHandlerOptions(outputFile);
|
|
4008
4252
|
const cssHandlerOptions = {
|
|
@@ -4093,6 +4337,8 @@ function WeappTailwindcss(options = {}) {
|
|
|
4093
4337
|
setRememberedCssSignature,
|
|
4094
4338
|
getKnownSfcSource,
|
|
4095
4339
|
recordGeneratorCandidates,
|
|
4340
|
+
pruneViteCssCaches,
|
|
4341
|
+
getViteCssCacheStats,
|
|
4096
4342
|
hmrTimingRecorder
|
|
4097
4343
|
});
|
|
4098
4344
|
const cssFinalizerOutputPlugin = createViteCssFinalizerOutputPlugin({
|