weapp-tailwindcss 5.0.10 → 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-Bh-BNp5g.js → vite-BBGOjh9e.js} +301 -56
- package/dist/{vite-BM_iIFmS.mjs → vite-CS5DE-HD.mjs} +300 -55
- 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();
|
|
@@ -2181,6 +2310,16 @@ function createGenerateBundleHook(context) {
|
|
|
2181
2310
|
recordTimingDetail(`tasks.${name}`, start);
|
|
2182
2311
|
}
|
|
2183
2312
|
};
|
|
2313
|
+
const emitOrReplayCssAsset = (fileName, source) => {
|
|
2314
|
+
const replayAsset = createReplayCssAsset(fileName, source);
|
|
2315
|
+
if (typeof this.emitFile === "function") this.emitFile({
|
|
2316
|
+
type: "asset",
|
|
2317
|
+
fileName,
|
|
2318
|
+
source
|
|
2319
|
+
});
|
|
2320
|
+
else bundle[fileName] = replayAsset;
|
|
2321
|
+
return replayAsset;
|
|
2322
|
+
};
|
|
2184
2323
|
const metrics = createEmptyMetrics();
|
|
2185
2324
|
const forceRuntimeRefreshByEnv = node_process.default.env["WEAPP_TW_VITE_FORCE_RUNTIME_REFRESH"] === "1";
|
|
2186
2325
|
const disableDirtyOptimization = node_process.default.env["WEAPP_TW_VITE_DISABLE_DIRTY"] === "1";
|
|
@@ -2188,6 +2327,7 @@ function createGenerateBundleHook(context) {
|
|
|
2188
2327
|
const debugCssDiff = node_process.default.env["WEAPP_TW_VITE_DEBUG_CSS_DIFF"] === "1";
|
|
2189
2328
|
const disableV3OxideSourceRuntime = node_process.default.env["WEAPP_TW_VITE_DISABLE_V3_OXIDE_RUNTIME"] === "1";
|
|
2190
2329
|
const bundleFiles = Object.keys(bundle);
|
|
2330
|
+
const activeViteCssCacheFiles = new Set(bundleFiles.map(normalizeViteCssCacheKey));
|
|
2191
2331
|
const subpackageRoots = collectMiniProgramSubpackageRoots(bundle);
|
|
2192
2332
|
if (subpackageRoots) currentSubpackageRoots = subpackageRoots;
|
|
2193
2333
|
const isMainPackageStyleOutputFile = (file) => currentSubpackageRoots != null && !isSubpackageOutputFile(file, currentSubpackageRoots);
|
|
@@ -2311,7 +2451,14 @@ function createGenerateBundleHook(context) {
|
|
|
2311
2451
|
});
|
|
2312
2452
|
const linkedByEntry = useIncrementalMode ? /* @__PURE__ */ new Map() : void 0;
|
|
2313
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
|
+
};
|
|
2314
2460
|
const tasks = [];
|
|
2461
|
+
const cssTaskFactories = [];
|
|
2315
2462
|
const jsTaskFactories = [];
|
|
2316
2463
|
for (const entry of snapshot.entries) {
|
|
2317
2464
|
const { file, output: originalSource, source: originalEntrySource, type } = entry;
|
|
@@ -2323,10 +2470,13 @@ function createGenerateBundleHook(context) {
|
|
|
2323
2470
|
}
|
|
2324
2471
|
if (!processFiles.html.has(file)) continue;
|
|
2325
2472
|
const rawSource = originalEntrySource;
|
|
2473
|
+
const cacheKey = file;
|
|
2474
|
+
const hashKey = `${file}:html:${runtimeSignature}`;
|
|
2475
|
+
rememberProcessCacheKey(cacheKey, hashKey);
|
|
2326
2476
|
tasks.push(timeTask("html", () => require_hmr_timing.processCachedTask({
|
|
2327
2477
|
cache,
|
|
2328
|
-
cacheKey
|
|
2329
|
-
hashKey
|
|
2478
|
+
cacheKey,
|
|
2479
|
+
hashKey,
|
|
2330
2480
|
hash: getSnapshotHash(snapshot.sourceHashByFile, file, rawSource),
|
|
2331
2481
|
applyResult(source) {
|
|
2332
2482
|
originalSource.source = source;
|
|
@@ -2365,6 +2515,7 @@ function createGenerateBundleHook(context) {
|
|
|
2365
2515
|
metrics.css.total++;
|
|
2366
2516
|
const rawSource = normalizeRelativeCssConfigDirectives(originalEntrySource, file, outDir, opts);
|
|
2367
2517
|
const outputFile = resolveViteCssOutputFile(file, opts, isWebGeneratorTarget, shouldPreserveAppCssExtension);
|
|
2518
|
+
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
2368
2519
|
if (outputFile !== file && !canProcessViteSourceStyleAsCss(rawSource, file)) {
|
|
2369
2520
|
delete bundle[file];
|
|
2370
2521
|
debug("css skip raw source style asset: %s -> %s", file, outputFile);
|
|
@@ -2373,12 +2524,7 @@ function createGenerateBundleHook(context) {
|
|
|
2373
2524
|
const applyCssResult = (source) => {
|
|
2374
2525
|
if (outputFile !== file) {
|
|
2375
2526
|
delete bundle[file];
|
|
2376
|
-
|
|
2377
|
-
type: "asset",
|
|
2378
|
-
fileName: outputFile,
|
|
2379
|
-
source
|
|
2380
|
-
});
|
|
2381
|
-
else bundle[outputFile] = createReplayCssAsset(outputFile, source);
|
|
2527
|
+
emitOrReplayCssAsset(outputFile, source);
|
|
2382
2528
|
originalSource.fileName = outputFile;
|
|
2383
2529
|
}
|
|
2384
2530
|
originalSource.source = source;
|
|
@@ -2454,8 +2600,10 @@ function createGenerateBundleHook(context) {
|
|
|
2454
2600
|
const cssRuntimeSignature = createCssRuntimeSignature(runtimeSignature, scopedGeneratorCandidateSignature);
|
|
2455
2601
|
const rememberedCssRuntimeSignature = createRememberedCssRuntimeSignature(cssRuntimeSignature, cssRuntimeAffectingHash);
|
|
2456
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"}`;
|
|
2457
2605
|
if (!shouldTrackGeneratorRuntime) {
|
|
2458
|
-
const lastCss = lastCssResultByFile
|
|
2606
|
+
const lastCss = getLastCssResult(lastCssResultByFile, outputFile, file);
|
|
2459
2607
|
if (lastCss != null) {
|
|
2460
2608
|
applyCssResult(lastCss);
|
|
2461
2609
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
@@ -2464,14 +2612,15 @@ function createGenerateBundleHook(context) {
|
|
|
2464
2612
|
continue;
|
|
2465
2613
|
}
|
|
2466
2614
|
}
|
|
2467
|
-
|
|
2615
|
+
rememberProcessCacheKey(cssCacheKey, cssHashKey);
|
|
2616
|
+
cssTaskFactories.push(() => timeTask("css", () => require_hmr_timing.processCachedTask({
|
|
2468
2617
|
cache,
|
|
2469
|
-
cacheKey:
|
|
2470
|
-
hashKey:
|
|
2618
|
+
cacheKey: cssCacheKey,
|
|
2619
|
+
hashKey: cssHashKey,
|
|
2471
2620
|
hash: `${cssRuntimeAffectingHash}:${scopedGeneratorCandidateSignature}:${sourceTraceSignature}`,
|
|
2472
2621
|
applyResult(source) {
|
|
2473
2622
|
applyCssResult(source);
|
|
2474
|
-
lastCssResultByFile
|
|
2623
|
+
rememberLastCssResult(lastCssResultByFile, lastCssSourceHashByFile, outputFile, source, cssRuntimeAffectingHash);
|
|
2475
2624
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
2476
2625
|
if (rememberedCssSources.length <= 1) rememberCssSource?.({
|
|
2477
2626
|
outputFile,
|
|
@@ -2508,7 +2657,7 @@ function createGenerateBundleHook(context) {
|
|
|
2508
2657
|
getSourceCandidatesForEntries: scopedSourceCandidateGetter,
|
|
2509
2658
|
styleHandler,
|
|
2510
2659
|
debug,
|
|
2511
|
-
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
|
|
2512
2661
|
});
|
|
2513
2662
|
if (generated) {
|
|
2514
2663
|
const tracedCss = annotateCss(generated.css);
|
|
@@ -2569,10 +2718,12 @@ function createGenerateBundleHook(context) {
|
|
|
2569
2718
|
jsTaskFactories.push(async () => {
|
|
2570
2719
|
await timeTask("js", async () => {
|
|
2571
2720
|
const hashSalt = createJsHashSalt(runtimeSignature, useIncrementalMode ? createLinkedImpactSignature(file, snapshot.linkedImpactsByEntry, snapshot.sourceHashByFile) : void 0);
|
|
2721
|
+
const hashKey = `${file}:js`;
|
|
2722
|
+
rememberProcessCacheKey(file, hashKey);
|
|
2572
2723
|
await require_hmr_timing.processCachedTask({
|
|
2573
2724
|
cache,
|
|
2574
2725
|
cacheKey: file,
|
|
2575
|
-
hashKey
|
|
2726
|
+
hashKey,
|
|
2576
2727
|
hash: `${getSnapshotHash(snapshot.sourceHashByFile, file, initialRawSource)}:${hashSalt}`,
|
|
2577
2728
|
applyResult(source) {
|
|
2578
2729
|
originalSource.code = source;
|
|
@@ -2611,9 +2762,11 @@ function createGenerateBundleHook(context) {
|
|
|
2611
2762
|
collectLinkedFileNames(linked, getJsEntry, linkedSet);
|
|
2612
2763
|
baseApplyLinkedUpdates(linked);
|
|
2613
2764
|
};
|
|
2765
|
+
const uniAppXJsHashKey = `${file}:js`;
|
|
2766
|
+
rememberProcessCacheKey(file, uniAppXJsHashKey);
|
|
2614
2767
|
const factory = createUniAppXAssetTask(file, originalSource, outDir, {
|
|
2615
2768
|
cache,
|
|
2616
|
-
hashKey:
|
|
2769
|
+
hashKey: uniAppXJsHashKey,
|
|
2617
2770
|
hashSalt: createJsHashSalt(runtimeSignature, [UNI_APP_X_STYLE_PLACEHOLDER_VERSION, useIncrementalMode ? createLinkedImpactSignature(file, snapshot.linkedImpactsByEntry, snapshot.sourceHashByFile) : void 0].filter(Boolean).join(":")),
|
|
2618
2771
|
createHandlerOptions,
|
|
2619
2772
|
debug,
|
|
@@ -2655,7 +2808,7 @@ function createGenerateBundleHook(context) {
|
|
|
2655
2808
|
}
|
|
2656
2809
|
}
|
|
2657
2810
|
if (useIncrementalMode || isNativeAppStyleTarget) {
|
|
2658
|
-
const rememberedReplayGroups = collectRememberedCssReplayGroups(getRememberedCssSources?.(), opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension);
|
|
2811
|
+
const rememberedReplayGroups = collectRememberedCssReplayGroups(getRememberedCssSources?.(), opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot);
|
|
2659
2812
|
for (const [outputFile, rememberedGroup] of rememberedReplayGroups) {
|
|
2660
2813
|
const refreshedRememberedGroup = await Promise.all(rememberedGroup.map(async (item) => ({
|
|
2661
2814
|
key: item.key,
|
|
@@ -2664,6 +2817,8 @@ function createGenerateBundleHook(context) {
|
|
|
2664
2817
|
const rememberedCssSource = mergeRememberedCssSources(refreshedRememberedGroup.map((item) => item.remembered), outputFile);
|
|
2665
2818
|
if (!rememberedCssSource) continue;
|
|
2666
2819
|
const { rawSource, sourceFile } = rememberedCssSource;
|
|
2820
|
+
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
2821
|
+
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(sourceFile));
|
|
2667
2822
|
const outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
2668
2823
|
const cssHandlerOptions = {
|
|
2669
2824
|
...getCssHandlerOptions(sourceFile),
|
|
@@ -2677,11 +2832,14 @@ function createGenerateBundleHook(context) {
|
|
|
2677
2832
|
tokenSources: sourceTraceTokenSources
|
|
2678
2833
|
});
|
|
2679
2834
|
const scopedGeneratorRuntime = createScopedGeneratorRuntime(outputFile, cssHandlerOptions, generatorRuntime);
|
|
2680
|
-
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;
|
|
2681
2839
|
const rememberedKeys = refreshedRememberedGroup.map((item) => item.key);
|
|
2682
2840
|
const allRememberedSignaturesFresh = rememberedKeys.length > 0 && rememberedKeys.every((key) => getRememberedCssSignature?.(key) === rememberedCssRuntimeSignature);
|
|
2683
2841
|
if (bundleFiles.includes(outputFile) || bundleFiles.includes(sourceFile) || allRememberedSignaturesFresh) continue;
|
|
2684
|
-
|
|
2842
|
+
cssTaskFactories.push(() => timeTask("css.replay", async () => {
|
|
2685
2843
|
const start = performance.now();
|
|
2686
2844
|
const generated = await require_hmr_timing.generateCssByGenerator({
|
|
2687
2845
|
opts,
|
|
@@ -2693,9 +2851,11 @@ function createGenerateBundleHook(context) {
|
|
|
2693
2851
|
cssUserHandlerOptions: getCssUserHandlerOptions(sourceFile),
|
|
2694
2852
|
getSourceCandidatesForEntries: scopedSourceCandidateGetter,
|
|
2695
2853
|
styleHandler,
|
|
2696
|
-
debug
|
|
2854
|
+
debug,
|
|
2855
|
+
previousCss
|
|
2697
2856
|
});
|
|
2698
2857
|
const css = annotateCss(generated?.css ?? (await styleHandler(rawSource, cssHandlerOptions)).css);
|
|
2858
|
+
rememberLastCssResult(lastCssResultByFile, lastCssSourceHashByFile, outputFile, css, cssRuntimeAffectingHash);
|
|
2699
2859
|
for (const key of rememberedKeys) setRememberedCssSignature?.(key, rememberedCssRuntimeSignature);
|
|
2700
2860
|
if (generated) {
|
|
2701
2861
|
registerGeneratorDependencies$1({ addWatchFile }, generated.dependencies);
|
|
@@ -2707,13 +2867,7 @@ function createGenerateBundleHook(context) {
|
|
|
2707
2867
|
});
|
|
2708
2868
|
debug("css replay generated result: %s bytes=%d", outputFile, css.length);
|
|
2709
2869
|
}
|
|
2710
|
-
const replayAsset =
|
|
2711
|
-
bundle[outputFile] = replayAsset;
|
|
2712
|
-
if (typeof this.emitFile === "function") this.emitFile({
|
|
2713
|
-
type: "asset",
|
|
2714
|
-
fileName: outputFile,
|
|
2715
|
-
source: css
|
|
2716
|
-
});
|
|
2870
|
+
const replayAsset = emitOrReplayCssAsset(outputFile, css);
|
|
2717
2871
|
markCssAssetProcessed?.(replayAsset, outputFile);
|
|
2718
2872
|
metrics.css.elapsed += measureElapsed(start);
|
|
2719
2873
|
metrics.css.transformed++;
|
|
@@ -2722,7 +2876,11 @@ function createGenerateBundleHook(context) {
|
|
|
2722
2876
|
}));
|
|
2723
2877
|
}
|
|
2724
2878
|
}
|
|
2725
|
-
|
|
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
|
+
}
|
|
2726
2884
|
const tasksStart = performance.now();
|
|
2727
2885
|
await Promise.all(tasks);
|
|
2728
2886
|
recordTimingDetail("tasks", tasksStart);
|
|
@@ -2777,7 +2935,7 @@ function createGenerateBundleHook(context) {
|
|
|
2777
2935
|
markCssAssetProcessed,
|
|
2778
2936
|
recordCssAssetResult,
|
|
2779
2937
|
recordViteProcessedCssAssetResult,
|
|
2780
|
-
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension),
|
|
2938
|
+
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot),
|
|
2781
2939
|
debug
|
|
2782
2940
|
});
|
|
2783
2941
|
return injectViteProcessedCssIntoMainCssAssets(bundle, {
|
|
@@ -2797,10 +2955,34 @@ function createGenerateBundleHook(context) {
|
|
|
2797
2955
|
const stateUpdateStart = performance.now();
|
|
2798
2956
|
require_bundle_state.updateBundleBuildState(state, snapshot, useIncrementalMode ? linkedByEntry ?? /* @__PURE__ */ new Map() : /* @__PURE__ */ new Map(), { incremental: useIncrementalMode });
|
|
2799
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
|
+
});
|
|
2800
2967
|
recordTimingDetail("state.update", stateUpdateStart);
|
|
2801
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));
|
|
2802
2969
|
if (hmrTimingRecorder) {
|
|
2803
|
-
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
|
+
});
|
|
2804
2986
|
hmrTimingRecorder.emitTotal();
|
|
2805
2987
|
}
|
|
2806
2988
|
onEnd();
|
|
@@ -2864,6 +3046,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
2864
3046
|
const isNativeAppStyleTarget = uniUtsPlatform.isApp || isHarmonyAppStyleTarget;
|
|
2865
3047
|
if (resolvedConfig?.command !== "build" && !isNativeAppStyleTarget) return;
|
|
2866
3048
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
3049
|
+
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig);
|
|
2867
3050
|
const sourceTraceTokenSources = getSourceCandidateSourcesForEntries ? require_hmr_timing.createCssTokenSourceMap(getSourceCandidateSourcesForEntries(void 0), opts) : void 0;
|
|
2868
3051
|
const annotateCss = (css) => require_hmr_timing.annotateCssSourceTrace(css, {
|
|
2869
3052
|
opts,
|
|
@@ -2876,7 +3059,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
2876
3059
|
markCssAssetProcessed,
|
|
2877
3060
|
recordCssAssetResult,
|
|
2878
3061
|
recordViteProcessedCssAssetResult,
|
|
2879
|
-
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, isNativeAppStyleTarget),
|
|
3062
|
+
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, isNativeAppStyleTarget, sourceRoot),
|
|
2880
3063
|
debug
|
|
2881
3064
|
});
|
|
2882
3065
|
};
|
|
@@ -3430,7 +3613,10 @@ function resolveImplicitTailwindcssBasedirFromViteRoot(root) {
|
|
|
3430
3613
|
const debug = require_v3_engine.createDebug();
|
|
3431
3614
|
const weappTailwindcssPackageDir = require_bundle_state.resolvePackageDir("weapp-tailwindcss");
|
|
3432
3615
|
const weappTailwindcssDirPosix = require_bundle_state.slash(weappTailwindcssPackageDir);
|
|
3433
|
-
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;
|
|
3434
3620
|
const SFC_STYLE_BLOCK_RE = /<style\b[^>]*>([\s\S]*?)<\/style>/gi;
|
|
3435
3621
|
const SFC_COMPONENT_FILE_RE = /\.(?:vue|uvue|nvue|svelte|mpx)$/i;
|
|
3436
3622
|
function normalizeSignaturePath(value) {
|
|
@@ -3475,6 +3661,21 @@ function normalizeCssSourceIdentity(sourceFile) {
|
|
|
3475
3661
|
if (query.type === "style") return `${normalizedFile}?type=style&index=${query.index ?? 0}`;
|
|
3476
3662
|
return require_bundle_state.normalizeOutputPathKey(require_bundle_state.stripRequestQuery(cleanSourceFile));
|
|
3477
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
|
+
}
|
|
3478
3679
|
/**
|
|
3479
3680
|
* @name WeappTailwindcss
|
|
3480
3681
|
* @description uni-app vite / uni-app-x 版本插件
|
|
@@ -3571,7 +3772,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
3571
3772
|
bareArbitraryValues: opts.arbitraryValues?.bareArbitraryValues,
|
|
3572
3773
|
extractor: sourceCandidateExtractor
|
|
3573
3774
|
});
|
|
3574
|
-
const sourceCandidateScanCache =
|
|
3775
|
+
const sourceCandidateScanCache = new lru_cache.LRUCache({ max: SOURCE_CANDIDATE_SCAN_CACHE_MAX });
|
|
3575
3776
|
let sourceScanEntries;
|
|
3576
3777
|
let sourceScanMatcher;
|
|
3577
3778
|
let sourceScanDependencies = /* @__PURE__ */ new Set();
|
|
@@ -3767,12 +3968,16 @@ function WeappTailwindcss(options = {}) {
|
|
|
3767
3968
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
3768
3969
|
if (!SFC_COMPONENT_FILE_RE.test(file)) return;
|
|
3769
3970
|
if (!hasSfcStyleBlocks(code)) return;
|
|
3770
|
-
knownSfcSources
|
|
3971
|
+
touchMapEntry(knownSfcSources, normalizeKnownSfcSourceKey(file), code);
|
|
3972
|
+
pruneMapToMaxSize(knownSfcSources, VITE_KNOWN_SFC_SOURCE_CACHE_MAX);
|
|
3771
3973
|
};
|
|
3772
3974
|
const getKnownSfcSource = (file) => {
|
|
3773
3975
|
const scanSource = sourceCandidateCollector.source(file);
|
|
3774
3976
|
if (scanSource && hasSfcStyleBlocks(scanSource)) return scanSource;
|
|
3775
|
-
|
|
3977
|
+
const key = normalizeKnownSfcSourceKey(file);
|
|
3978
|
+
const source = knownSfcSources.get(key);
|
|
3979
|
+
if (source != null) touchMapEntry(knownSfcSources, key, source);
|
|
3980
|
+
return source;
|
|
3776
3981
|
};
|
|
3777
3982
|
const rememberCssSource = (entry, cssRuntimeSignature) => {
|
|
3778
3983
|
const outputKey = require_bundle_state.normalizeOutputPathKey(entry.outputFile);
|
|
@@ -3780,10 +3985,10 @@ function WeappTailwindcss(options = {}) {
|
|
|
3780
3985
|
const previousOutputEntry = rememberedCssSources.get(outputKey);
|
|
3781
3986
|
const key = previousOutputEntry != null && normalizeCssSourceIdentity(previousOutputEntry.sourceFile) !== normalizedSourceFile ? `${outputKey}\0${normalizedSourceFile}` : outputKey;
|
|
3782
3987
|
const previous = rememberedCssSources.get(key);
|
|
3783
|
-
rememberedCssSources
|
|
3988
|
+
touchMapEntry(rememberedCssSources, key, entry);
|
|
3784
3989
|
for (const [rememberedKey, remembered] of rememberedCssSources) {
|
|
3785
3990
|
if (rememberedKey === key || normalizeCssSourceIdentity(remembered.sourceFile) !== normalizedSourceFile) continue;
|
|
3786
|
-
rememberedCssSources
|
|
3991
|
+
touchMapEntry(rememberedCssSources, rememberedKey, {
|
|
3787
3992
|
...remembered,
|
|
3788
3993
|
rawSource: entry.rawSource,
|
|
3789
3994
|
sourceFile: entry.sourceFile
|
|
@@ -3792,6 +3997,9 @@ function WeappTailwindcss(options = {}) {
|
|
|
3792
3997
|
}
|
|
3793
3998
|
if (cssRuntimeSignature) rememberedCssSignatureByFile.set(key, cssRuntimeSignature);
|
|
3794
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
|
+
});
|
|
3795
4003
|
};
|
|
3796
4004
|
const refreshRememberedCssSourceEntry = (rememberedKey, remembered, sourceFile, rawSource) => {
|
|
3797
4005
|
if (remembered.rawSource === rawSource && remembered.sourceFile === sourceFile) return remembered;
|
|
@@ -3800,7 +4008,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
3800
4008
|
rawSource,
|
|
3801
4009
|
sourceFile
|
|
3802
4010
|
};
|
|
3803
|
-
rememberedCssSources
|
|
4011
|
+
touchMapEntry(rememberedCssSources, rememberedKey, nextRemembered);
|
|
3804
4012
|
rememberedCssSignatureByFile.delete(rememberedKey);
|
|
3805
4013
|
return nextRemembered;
|
|
3806
4014
|
};
|
|
@@ -3881,19 +4089,53 @@ function WeappTailwindcss(options = {}) {
|
|
|
3881
4089
|
rememberedCssSignatureByFile.set(require_bundle_state.normalizeOutputPathKey(file), cssRuntimeSignature);
|
|
3882
4090
|
};
|
|
3883
4091
|
const recordCssAssetResult = (file, css) => {
|
|
3884
|
-
viteGeneratedCssByFile
|
|
4092
|
+
touchMapEntry(viteGeneratedCssByFile, normalizeVitePersistentCacheKey(file), css);
|
|
3885
4093
|
};
|
|
3886
4094
|
const recordViteProcessedCssAssetResult = (file, css, options = {}) => {
|
|
3887
|
-
const key =
|
|
4095
|
+
const key = normalizeVitePersistentCacheKey(file);
|
|
3888
4096
|
const previous = viteProcessedCssAssetResults.get(key);
|
|
3889
|
-
viteProcessedCssAssetResults
|
|
4097
|
+
touchMapEntry(viteProcessedCssAssetResults, key, {
|
|
3890
4098
|
css,
|
|
3891
4099
|
injectIntoMain: options.injectIntoMain ?? previous?.injectIntoMain,
|
|
3892
4100
|
outputFile: options.outputFile ?? previous?.outputFile
|
|
3893
4101
|
});
|
|
3894
4102
|
};
|
|
3895
4103
|
const getViteProcessedCssAssetResults = () => viteProcessedCssAssetResults.entries();
|
|
3896
|
-
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
|
+
};
|
|
3897
4139
|
const normalizeViteProcessedCssFile = (file) => node_path.default.resolve((0, _weapp_tailwindcss_shared.cleanUrl)(file));
|
|
3898
4140
|
const markViteProcessedCssSource = (file) => {
|
|
3899
4141
|
viteProcessedCssSourceFiles.add(normalizeViteProcessedCssFile(file));
|
|
@@ -4003,7 +4245,8 @@ function WeappTailwindcss(options = {}) {
|
|
|
4003
4245
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
4004
4246
|
const isHarmonyAppStyleTarget = isHarmonyAppBuildTarget();
|
|
4005
4247
|
const isNativeAppStyleTarget = require_utils.resolveUniUtsPlatform().isApp || isHarmonyAppStyleTarget;
|
|
4006
|
-
const
|
|
4248
|
+
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig);
|
|
4249
|
+
const outputFile = resolveViteCssPipelineOutputFile(file, opts, rootDir, generatorOptions.target === "web", isNativeAppStyleTarget, sourceRoot);
|
|
4007
4250
|
const runtime = getRecordedGeneratorCandidates() ?? getSourceCandidates() ?? await ensureRuntimeClassSet();
|
|
4008
4251
|
const outputCssHandlerOptions = transformCssHandlerOptions.getCssHandlerOptions(outputFile);
|
|
4009
4252
|
const cssHandlerOptions = {
|
|
@@ -4094,6 +4337,8 @@ function WeappTailwindcss(options = {}) {
|
|
|
4094
4337
|
setRememberedCssSignature,
|
|
4095
4338
|
getKnownSfcSource,
|
|
4096
4339
|
recordGeneratorCandidates,
|
|
4340
|
+
pruneViteCssCaches,
|
|
4341
|
+
getViteCssCacheStats,
|
|
4097
4342
|
hmrTimingRecorder
|
|
4098
4343
|
});
|
|
4099
4344
|
const cssFinalizerOutputPlugin = createViteCssFinalizerOutputPlugin({
|