weapp-tailwindcss 5.1.5 → 5.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/bundlers/shared/generator-css/types.d.ts +1 -0
- package/dist/bundlers/shared/generator-css/user-css.d.ts +4 -1
- package/dist/bundlers/vite/generate-bundle/finalize.d.ts +1 -0
- package/dist/bundlers/vite/generate-bundle/remembered-css-replay.d.ts +1 -0
- package/dist/bundlers/vite/processed-css-assets.d.ts +7 -0
- package/dist/{context-rrYZuUBU.mjs → context-3GGqW9vw.mjs} +3 -3
- package/dist/{context-BziwyWy1.js → context-BCSk_YnL.js} +3 -3
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/{generator-24-HgU9F.mjs → generator-CoT5vu9w.mjs} +2 -2
- package/dist/{generator-CilgHtxb.js → generator-CqWzj2Z1.js} +2 -2
- package/dist/generator.js +2 -2
- package/dist/generator.mjs +2 -2
- package/dist/{gulp-ygWfmOqh.mjs → gulp-Bss4wJ8t.mjs} +4 -4
- package/dist/{gulp-CuVsZdO9.js → gulp-hXE1U4Cu.js} +4 -4
- package/dist/gulp.js +1 -1
- package/dist/gulp.mjs +1 -1
- package/dist/{hmr-timing-Dh_nn3w5.mjs → hmr-timing-Cfu-4Bnf.mjs} +24 -511
- package/dist/{hmr-timing-BKdCeIrn.js → hmr-timing-Df4203aI.js} +48 -565
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/postcss.js +2 -2
- package/dist/postcss.mjs +2 -2
- package/dist/presets.js +6 -3
- package/dist/presets.mjs +6 -3
- package/dist/rspack.js +1 -1
- package/dist/rspack.mjs +1 -1
- package/dist/runtime-branch/generator-target-env.d.ts +1 -0
- package/dist/{source-candidate-scan-signature-DIj9m4wB.js → source-candidate-scan-signature-5Uk6U72B.js} +3 -3
- package/dist/{source-candidate-scan-signature-DATRnS1X.mjs → source-candidate-scan-signature-BbCmW975.mjs} +3 -3
- package/dist/{tailwindcss-C-uM4rB8.mjs → tailwindcss-Bjr3aphG.mjs} +15 -2
- package/dist/{tailwindcss-BwoNQ3t8.js → tailwindcss-DYJ3HZD2.js} +15 -2
- package/dist/{transform-DHLemtaX.mjs → transform--155BmeJ.mjs} +1 -1
- package/dist/{transform-KLD1tJdb.js → transform-B6_y_yCB.js} +1 -1
- package/dist/{v4-engine-CKtsdKxK.js → v4-engine-C9cmNlP8.js} +610 -3
- package/dist/{v4-engine-BuuYDXt1.mjs → v4-engine-DRQaCFMm.mjs} +529 -6
- package/dist/{vite-Yp14HNyS.js → vite-Baw9qNrc.js} +560 -112
- package/dist/{vite-cH0tTMHc.mjs → vite-PdxjaqhO.mjs} +561 -113
- package/dist/vite.js +1 -1
- package/dist/vite.mjs +1 -1
- package/dist/weapp-tw-css-import-rewrite-loader.js +2994 -2958
- package/dist/{webpack-DBhmJ-_P.mjs → webpack-BffTDmod.mjs} +12 -13
- package/dist/{webpack-DN3tgLbF.js → webpack-C9u7mfGE.js} +18 -19
- package/dist/webpack.js +1 -1
- package/dist/webpack.mjs +1 -1
- package/package.json +3 -3
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
const require_rolldown_runtime = require("./rolldown-runtime-emK7D4bc.js");
|
|
2
2
|
const require_framework = require("./framework.js");
|
|
3
|
-
const require_v4_engine = require("./v4-engine-
|
|
4
|
-
const require_generator = require("./generator-
|
|
3
|
+
const require_v4_engine = require("./v4-engine-C9cmNlP8.js");
|
|
4
|
+
const require_generator = require("./generator-CqWzj2Z1.js");
|
|
5
5
|
const require_utils = require("./utils-D3h8j7Mk.js");
|
|
6
|
-
const require_context = require("./context-
|
|
7
|
-
const require_tailwindcss = require("./tailwindcss-
|
|
8
|
-
const require_hmr_timing = require("./hmr-timing-
|
|
9
|
-
const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-
|
|
6
|
+
const require_context = require("./context-BCSk_YnL.js");
|
|
7
|
+
const require_tailwindcss = require("./tailwindcss-DYJ3HZD2.js");
|
|
8
|
+
const require_hmr_timing = require("./hmr-timing-Df4203aI.js");
|
|
9
|
+
const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-5Uk6U72B.js");
|
|
10
10
|
require("./logger-TlKT3xmR.js");
|
|
11
11
|
let node_fs = require("node:fs");
|
|
12
12
|
node_fs = require_rolldown_runtime.__toESM(node_fs);
|
|
@@ -515,7 +515,7 @@ function resolveUniAppXStyleIsolationEnabled(root) {
|
|
|
515
515
|
//#region src/uni-app-x/vite.ts
|
|
516
516
|
let transformUVuePromise;
|
|
517
517
|
function loadTransformUVue() {
|
|
518
|
-
transformUVuePromise ?? (transformUVuePromise = Promise.resolve().then(() => require("./transform-
|
|
518
|
+
transformUVuePromise ?? (transformUVuePromise = Promise.resolve().then(() => require("./transform-B6_y_yCB.js")).then((mod) => mod.transformUVue));
|
|
519
519
|
return transformUVuePromise;
|
|
520
520
|
}
|
|
521
521
|
const preprocessorLangs = /* @__PURE__ */ new Set([
|
|
@@ -1061,7 +1061,7 @@ function normalizeMatchedCssSourcePath(file) {
|
|
|
1061
1061
|
if (!file || !node_path.default.isAbsolute(file)) return;
|
|
1062
1062
|
return node_path.default.resolve(file.replace(/[?#].*$/, ""));
|
|
1063
1063
|
}
|
|
1064
|
-
function collectConfiguredCssEntries(opts) {
|
|
1064
|
+
function collectConfiguredCssEntries$1(opts) {
|
|
1065
1065
|
const runtimeCssEntries = opts.tailwindcssRuntimeOptions?.tailwindcss?.v4?.cssEntries ?? [];
|
|
1066
1066
|
return [
|
|
1067
1067
|
...opts.cssEntries ?? [],
|
|
@@ -1084,7 +1084,7 @@ function collectCssConfigBaseCandidates(source, file, outputRoot, opts) {
|
|
|
1084
1084
|
const runtimeProjectRoot = typeof opts.tailwindcssRuntimeOptions?.projectRoot === "string" ? opts.tailwindcssRuntimeOptions.projectRoot : void 0;
|
|
1085
1085
|
const sourceBaseFallback = opts.tailwindcss?.v4?.base ?? runtimeProjectRoot ?? opts.tailwindcssBasedir ?? outputRoot;
|
|
1086
1086
|
const sourceRoot = opts.tailwindcssBasedir ?? runtimeProjectRoot;
|
|
1087
|
-
const configuredCssEntries = collectConfiguredCssEntries(opts);
|
|
1087
|
+
const configuredCssEntries = collectConfiguredCssEntries$1(opts);
|
|
1088
1088
|
for (const cssEntry of configuredCssEntries) {
|
|
1089
1089
|
const resolvedCssEntry = node_path.default.resolve(cssEntry);
|
|
1090
1090
|
if (configuredCssEntries.length === 1 || isMatchingCssSourceFile(file, resolvedCssEntry, outputRoot) || hasMatchingStyleFileBase(file, resolvedCssEntry, outputRoot, sourceRoot)) addCandidate(node_path.default.dirname(resolvedCssEntry));
|
|
@@ -2020,6 +2020,21 @@ function appendCss$1(baseCss, css) {
|
|
|
2020
2020
|
if (css.length === 0) return baseCss;
|
|
2021
2021
|
return `${baseCss}\n${css}`;
|
|
2022
2022
|
}
|
|
2023
|
+
function normalizeCssRecordIdentity(css) {
|
|
2024
|
+
return css.trim();
|
|
2025
|
+
}
|
|
2026
|
+
function hasNonCommentCss(css) {
|
|
2027
|
+
return css.replace(/\/\*[\s\S]*?\*\//g, "").trim().length > 0;
|
|
2028
|
+
}
|
|
2029
|
+
function dedupeViteCssResults(records) {
|
|
2030
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2031
|
+
return records.filter((record) => {
|
|
2032
|
+
const key = `${require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile ?? "")}\0${normalizeCssRecordIdentity(record.css)}`;
|
|
2033
|
+
if (seen.has(key)) return false;
|
|
2034
|
+
seen.add(key);
|
|
2035
|
+
return true;
|
|
2036
|
+
});
|
|
2037
|
+
}
|
|
2023
2038
|
function removeTailwindSourceMediaWrappers(css) {
|
|
2024
2039
|
if (!css.includes("@media source(")) return css;
|
|
2025
2040
|
try {
|
|
@@ -2096,6 +2111,183 @@ function collectRootStyleBundleCssSources(bundle, excludedFile) {
|
|
|
2096
2111
|
}
|
|
2097
2112
|
return sources;
|
|
2098
2113
|
}
|
|
2114
|
+
function isHtmlOutputFile(file) {
|
|
2115
|
+
return /\.html(?:$|[?#])/i.test(file);
|
|
2116
|
+
}
|
|
2117
|
+
function stripQueryAndHash(file) {
|
|
2118
|
+
return file.replace(/[?#].*$/, "");
|
|
2119
|
+
}
|
|
2120
|
+
function resolveHtmlLinkedStyleFile(htmlFile, request) {
|
|
2121
|
+
if (!isStyleImportRequest(request)) return;
|
|
2122
|
+
const cleanRequest = stripQueryAndHash(request);
|
|
2123
|
+
if (cleanRequest.startsWith("/")) return require_source_candidate_scan_signature.normalizeOutputPathKey(cleanRequest.slice(1));
|
|
2124
|
+
const htmlDir = posix.posix.dirname(require_source_candidate_scan_signature.normalizeOutputPathKey(stripQueryAndHash(htmlFile)));
|
|
2125
|
+
return require_source_candidate_scan_signature.normalizeOutputPathKey(posix.posix.join(htmlDir === "." ? "" : htmlDir, cleanRequest));
|
|
2126
|
+
}
|
|
2127
|
+
function collectHtmlLinkedStyleFiles(bundle) {
|
|
2128
|
+
const linkedFiles = /* @__PURE__ */ new Set();
|
|
2129
|
+
const linkedBasenames = /* @__PURE__ */ new Set();
|
|
2130
|
+
const linkHrefRE = /<link\s[^>]*href\s*=\s*(["'])([^"']+)\1[^>]*>/gi;
|
|
2131
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2132
|
+
if (output.type !== "asset") continue;
|
|
2133
|
+
const htmlFile = getAssetFile$1(bundleFile, output);
|
|
2134
|
+
if (!isHtmlOutputFile(htmlFile)) continue;
|
|
2135
|
+
const html = readAssetSource$2(output);
|
|
2136
|
+
for (const match of html.matchAll(linkHrefRE)) {
|
|
2137
|
+
const href = match[2];
|
|
2138
|
+
if (!href) continue;
|
|
2139
|
+
const linkedFile = resolveHtmlLinkedStyleFile(htmlFile, href);
|
|
2140
|
+
if (!linkedFile || !isRootStyleOutputFile(linkedFile)) continue;
|
|
2141
|
+
linkedFiles.add(linkedFile);
|
|
2142
|
+
linkedBasenames.add(posix.posix.basename(linkedFile));
|
|
2143
|
+
}
|
|
2144
|
+
}
|
|
2145
|
+
return {
|
|
2146
|
+
linkedBasenames,
|
|
2147
|
+
linkedFiles
|
|
2148
|
+
};
|
|
2149
|
+
}
|
|
2150
|
+
function isLinkedStyleFile(file, linked) {
|
|
2151
|
+
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(stripQueryAndHash(file));
|
|
2152
|
+
return linked.linkedFiles.has(fileKey) || isRootStyleOutputFile(fileKey) && linked.linkedBasenames.has(posix.posix.basename(fileKey));
|
|
2153
|
+
}
|
|
2154
|
+
function removeDuplicateUnlinkedRootCssAssetsReferencedByHtml(bundle, options = {}) {
|
|
2155
|
+
const linked = collectHtmlLinkedStyleFiles(bundle);
|
|
2156
|
+
if (linked.linkedFiles.size === 0 && linked.linkedBasenames.size === 0) return 0;
|
|
2157
|
+
const linkedSources = /* @__PURE__ */ new Set();
|
|
2158
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2159
|
+
if (output.type !== "asset") continue;
|
|
2160
|
+
const file = getAssetFile$1(bundleFile, output);
|
|
2161
|
+
if (!isCssOutputFile(file) || isMiniProgramStyleOutputFile(file) || !isLinkedStyleFile(file, linked)) continue;
|
|
2162
|
+
const source = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(readAssetSource$2(output)).trim();
|
|
2163
|
+
if (source.length > 0) linkedSources.add(source);
|
|
2164
|
+
}
|
|
2165
|
+
if (linkedSources.size === 0) return 0;
|
|
2166
|
+
let removed = 0;
|
|
2167
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2168
|
+
if (output.type !== "asset") continue;
|
|
2169
|
+
const file = getAssetFile$1(bundleFile, output);
|
|
2170
|
+
if (!isRootStyleOutputFile(file) || isMiniProgramStyleOutputFile(file) || isLinkedStyleFile(file, linked)) continue;
|
|
2171
|
+
const source = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(readAssetSource$2(output)).trim();
|
|
2172
|
+
if (!linkedSources.has(source)) continue;
|
|
2173
|
+
delete bundle[bundleFile];
|
|
2174
|
+
options.debug?.("remove duplicate unlinked root css asset referenced by html: %s", file);
|
|
2175
|
+
removed++;
|
|
2176
|
+
}
|
|
2177
|
+
return removed;
|
|
2178
|
+
}
|
|
2179
|
+
const VUE_SCOPED_ATTR_RE = /\[data-v-[^\]]+\]/gi;
|
|
2180
|
+
function hasVueScopedAttr(value) {
|
|
2181
|
+
VUE_SCOPED_ATTR_RE.lastIndex = 0;
|
|
2182
|
+
const matched = VUE_SCOPED_ATTR_RE.test(value);
|
|
2183
|
+
VUE_SCOPED_ATTR_RE.lastIndex = 0;
|
|
2184
|
+
return matched;
|
|
2185
|
+
}
|
|
2186
|
+
function normalizeCssSignatureValue(value) {
|
|
2187
|
+
return value.replace(VUE_SCOPED_ATTR_RE, "").replace(/\s+/g, " ").replace(/\s*([>+~])\s*/g, "$1").replace(/\(\s+/g, "(").replace(/\s+\)/g, ")").trim();
|
|
2188
|
+
}
|
|
2189
|
+
function createDeclarationSignature(rule) {
|
|
2190
|
+
return createDeclarationKeys(rule).sort().join(";");
|
|
2191
|
+
}
|
|
2192
|
+
function createRuleCoverageKey(selector, declarations) {
|
|
2193
|
+
return `${normalizeCssSignatureValue(selector)}\0${declarations}`;
|
|
2194
|
+
}
|
|
2195
|
+
function createDeclarationKeys(rule) {
|
|
2196
|
+
return (rule.nodes ?? []).filter((node) => node.type === "decl").map((node) => `${node.prop}:${normalizeCssSignatureValue(node.value)}${node.important ? "!important" : ""}`);
|
|
2197
|
+
}
|
|
2198
|
+
function createAtRuleCoverageKey(atRule) {
|
|
2199
|
+
return `${atRule.name}\0${normalizeCssSignatureValue(atRule.params)}\0${normalizeCssSignatureValue(atRule.toString())}`;
|
|
2200
|
+
}
|
|
2201
|
+
function hasClassSelector(selector) {
|
|
2202
|
+
return /(?:^|[^\\])\.[_a-z\u00A0-\uFFFF-]/i.test(normalizeCssSignatureValue(selector));
|
|
2203
|
+
}
|
|
2204
|
+
function isLikelyTailwindGlobalSelector(selector) {
|
|
2205
|
+
const normalized = normalizeCssSignatureValue(selector);
|
|
2206
|
+
return normalized === "*" || normalized.startsWith("::") || normalized.startsWith(":root") || normalized.startsWith(":host") || /^(?:html|body|hr|abbr|h1|h2|h3|h4|h5|h6|a|b|strong|code|kbd|samp|small|sub|sup|table|button|input|select|optgroup|textarea|summary|blockquote|dl|dd|fieldset|legend|ol|ul|menu|dialog|progress|video|audio|canvas|embed|iframe|img|object|svg|details|template|[uo]ni-progress)(?:$|[:,[\s>+~.#])/.test(normalized);
|
|
2207
|
+
}
|
|
2208
|
+
function isLikelyTailwindGlobalRule(rule) {
|
|
2209
|
+
return (rule.selectors ?? [rule.selector]).every((selector) => !hasClassSelector(selector) && isLikelyTailwindGlobalSelector(selector));
|
|
2210
|
+
}
|
|
2211
|
+
function isLikelyTailwindPropertyAtRule(atRule) {
|
|
2212
|
+
return atRule.name.toLowerCase() === "property" && normalizeCssSignatureValue(atRule.params).startsWith("--tw-");
|
|
2213
|
+
}
|
|
2214
|
+
function collectRootScopedComparableCssCoverage(cssSources) {
|
|
2215
|
+
const rules = /* @__PURE__ */ new Set();
|
|
2216
|
+
const atRules = /* @__PURE__ */ new Set();
|
|
2217
|
+
const declarationsBySelector = /* @__PURE__ */ new Map();
|
|
2218
|
+
for (const source of cssSources) try {
|
|
2219
|
+
const root = _weapp_tailwindcss_postcss.postcss.parse(source);
|
|
2220
|
+
root.walkRules((rule) => {
|
|
2221
|
+
const declarations = createDeclarationSignature(rule);
|
|
2222
|
+
if (declarations.length === 0) return;
|
|
2223
|
+
for (const selector of rule.selectors ?? [rule.selector]) {
|
|
2224
|
+
const normalizedSelector = normalizeCssSignatureValue(selector);
|
|
2225
|
+
rules.add(`${normalizedSelector}\0${declarations}`);
|
|
2226
|
+
const selectorDeclarations = declarationsBySelector.get(normalizedSelector) ?? /* @__PURE__ */ new Set();
|
|
2227
|
+
for (const declaration of createDeclarationKeys(rule)) selectorDeclarations.add(declaration);
|
|
2228
|
+
declarationsBySelector.set(normalizedSelector, selectorDeclarations);
|
|
2229
|
+
}
|
|
2230
|
+
});
|
|
2231
|
+
root.walkAtRules((atRule) => {
|
|
2232
|
+
atRules.add(createAtRuleCoverageKey(atRule));
|
|
2233
|
+
});
|
|
2234
|
+
} catch {}
|
|
2235
|
+
return {
|
|
2236
|
+
rules,
|
|
2237
|
+
atRules,
|
|
2238
|
+
declarationsBySelector
|
|
2239
|
+
};
|
|
2240
|
+
}
|
|
2241
|
+
function isRuleCoveredByRootCss(rule, coverage) {
|
|
2242
|
+
const declarations = createDeclarationSignature(rule);
|
|
2243
|
+
if (declarations.length === 0) return false;
|
|
2244
|
+
const selectors = rule.selectors ?? [rule.selector];
|
|
2245
|
+
if (selectors.every((selector) => coverage.rules.has(createRuleCoverageKey(selector, declarations)))) return true;
|
|
2246
|
+
const declarationKeys = createDeclarationKeys(rule);
|
|
2247
|
+
return declarationKeys.length > 0 && selectors.every((selector) => {
|
|
2248
|
+
const rootDeclarations = coverage.declarationsBySelector.get(normalizeCssSignatureValue(selector));
|
|
2249
|
+
return rootDeclarations != null && declarationKeys.every((declaration) => rootDeclarations.has(declaration));
|
|
2250
|
+
}) || selectors.every((selector) => coverage.declarationsBySelector.has(normalizeCssSignatureValue(selector)));
|
|
2251
|
+
}
|
|
2252
|
+
function removeScopedCssCoveredByRootStyleSources(css, rootSources) {
|
|
2253
|
+
if (!hasVueScopedAttr(css)) return css;
|
|
2254
|
+
const hasScopedTailwindGeneratedCss = /tailwindcss v\d/i.test(css);
|
|
2255
|
+
const coverage = collectRootScopedComparableCssCoverage(rootSources);
|
|
2256
|
+
if (coverage.rules.size === 0 && coverage.atRules.size === 0 && !hasScopedTailwindGeneratedCss) return css;
|
|
2257
|
+
try {
|
|
2258
|
+
const root = _weapp_tailwindcss_postcss.postcss.parse(css);
|
|
2259
|
+
let changed = false;
|
|
2260
|
+
root.walkComments((comment) => {
|
|
2261
|
+
if (/tailwindcss v\d/i.test(comment.text)) {
|
|
2262
|
+
comment.remove();
|
|
2263
|
+
changed = true;
|
|
2264
|
+
}
|
|
2265
|
+
});
|
|
2266
|
+
root.walkRules((rule) => {
|
|
2267
|
+
if (isRuleCoveredByRootCss(rule, coverage) || hasScopedTailwindGeneratedCss && isLikelyTailwindGlobalRule(rule)) {
|
|
2268
|
+
rule.remove();
|
|
2269
|
+
changed = true;
|
|
2270
|
+
}
|
|
2271
|
+
});
|
|
2272
|
+
root.walkAtRules((atRule) => {
|
|
2273
|
+
if (coverage.atRules.has(createAtRuleCoverageKey(atRule)) || hasScopedTailwindGeneratedCss && isLikelyTailwindPropertyAtRule(atRule)) {
|
|
2274
|
+
atRule.remove();
|
|
2275
|
+
changed = true;
|
|
2276
|
+
return;
|
|
2277
|
+
}
|
|
2278
|
+
if (atRule.nodes !== void 0 && atRule.nodes.length === 0) {
|
|
2279
|
+
atRule.remove();
|
|
2280
|
+
changed = true;
|
|
2281
|
+
}
|
|
2282
|
+
});
|
|
2283
|
+
return changed ? removeDanglingCssSourceTraceComments(root.toString()).trim() : css;
|
|
2284
|
+
} catch {
|
|
2285
|
+
return css;
|
|
2286
|
+
}
|
|
2287
|
+
}
|
|
2288
|
+
function removeScopedTailwindPreflightCss(css) {
|
|
2289
|
+
return removeScopedCssCoveredByRootStyleSources(css, []);
|
|
2290
|
+
}
|
|
2099
2291
|
function collectSingleViteGeneratedCssMarkerFile(rawSource) {
|
|
2100
2292
|
const blocks = require_source_candidate_scan_signature.parseBundlerGeneratedCssMarkerBlocks(rawSource).filter((block) => block.bundler === "vite");
|
|
2101
2293
|
if (blocks.length !== 1) return;
|
|
@@ -2108,7 +2300,9 @@ function shouldFilterRootGeneratedCssMarkerForScopedAsset(targetFile, markerFile
|
|
|
2108
2300
|
return !isMatchingGeneratedCssMarkerFile(targetFile, markerFile, resolveViteProcessedCssOutputFile);
|
|
2109
2301
|
}
|
|
2110
2302
|
function removeCssCoveredByRootStyleBundleSources(bundle, file, css) {
|
|
2111
|
-
|
|
2303
|
+
const rootSources = collectRootStyleBundleCssSources(bundle, file);
|
|
2304
|
+
const nextCss = removeScopedCssCoveredByRootStyleSources(removeDanglingCssSourceTraceComments(removeCssCoveredByImportedViteResults(css, rootSources)), rootSources);
|
|
2305
|
+
return hasNonCommentCss(nextCss) ? nextCss : "";
|
|
2112
2306
|
}
|
|
2113
2307
|
function removeDanglingCssSourceTraceComments(css) {
|
|
2114
2308
|
if (!css.includes("/* tokens:")) return css;
|
|
@@ -2132,8 +2326,11 @@ function removeCssCoveredByRootStyleAssets(bundle, options) {
|
|
|
2132
2326
|
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2133
2327
|
if (output.type !== "asset") continue;
|
|
2134
2328
|
const file = getAssetFile$1(bundleFile, output);
|
|
2135
|
-
if (!options.cssMatcher(file) || isRootStyleOutputFile(file) || options.isViteProcessedCssAsset?.(output, file) === true || options.subpackageRoots != null && isSubpackageOutputFile(file, options.subpackageRoots)) continue;
|
|
2136
2329
|
const rawSource = readAssetSource$2(output);
|
|
2330
|
+
const hasScopedCss = hasVueScopedAttr(rawSource);
|
|
2331
|
+
const hasTailwindGeneratedCss = /tailwindcss v\d/i.test(rawSource);
|
|
2332
|
+
const shouldIncludeTailwindGeneratedCssAsset = options.includeTailwindGeneratedCssAssets === true && hasTailwindGeneratedCss && isCssOutputFile(file) && !isMiniProgramStyleOutputFile(file);
|
|
2333
|
+
if (!(options.cssMatcher(file) || hasScopedCss && isCssOutputFile(file) || shouldIncludeTailwindGeneratedCssAsset) || isRootStyleOutputFile(file) || options.isViteProcessedCssAsset?.(output, file) === true && !hasScopedCss && !shouldIncludeTailwindGeneratedCssAsset || options.subpackageRoots != null && isSubpackageOutputFile(file, options.subpackageRoots)) continue;
|
|
2137
2334
|
const nextCss = removeCssCoveredByRootStyleBundleSources(bundle, file, rawSource);
|
|
2138
2335
|
if (nextCss === rawSource) continue;
|
|
2139
2336
|
output.source = nextCss;
|
|
@@ -2186,6 +2383,12 @@ function shouldUseCssAssetAsMainInjectionTarget(opts, file, records) {
|
|
|
2186
2383
|
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2187
2384
|
if (!isRootStyleOutputFile(file) && records.some((record) => typeof record.outputFile === "string" && require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) === fileKey)) return true;
|
|
2188
2385
|
if (!isRootStyleOutputFile(file)) return records.some((record) => record.injectIntoMain === true && typeof record.outputFile === "string" && require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) === fileKey);
|
|
2386
|
+
const matchedRootWebOutputTargets = records.map((record) => typeof record.outputFile === "string" ? require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) : void 0).filter((outputFile) => typeof outputFile === "string" && isRootStyleOutputFile(outputFile) && !isMiniProgramStyleOutputFile(outputFile)).filter((outputFile) => opts.mainCssChunkMatcher(outputFile, opts.appType));
|
|
2387
|
+
if (opts.appType === "uni-app-vite" && !isMiniProgramStyleOutputFile(file) && matchedRootWebOutputTargets.length > 0) return matchedRootWebOutputTargets.includes(fileKey);
|
|
2388
|
+
const explicitRootTargets = records.filter((record) => record.injectIntoMain === true).map((record) => typeof record.outputFile === "string" ? require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) : void 0).filter((outputFile) => typeof outputFile === "string" && isRootStyleOutputFile(outputFile) && !isMiniProgramStyleOutputFile(outputFile));
|
|
2389
|
+
const explicitWebCssTargets = records.filter((record) => record.injectIntoMain === true).map((record) => typeof record.outputFile === "string" ? require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) : void 0).filter((outputFile) => typeof outputFile === "string" && isCssOutputFile(outputFile) && !isMiniProgramStyleOutputFile(outputFile));
|
|
2390
|
+
if (opts.appType === "uni-app-vite" && !isMiniProgramStyleOutputFile(file) && explicitWebCssTargets.length > 0) return explicitRootTargets.includes(fileKey);
|
|
2391
|
+
if (explicitRootTargets.length > 0) return explicitRootTargets.includes(fileKey);
|
|
2189
2392
|
if (records.some((record) => {
|
|
2190
2393
|
if (record.injectIntoMain !== true) return false;
|
|
2191
2394
|
return isRootStyleOutputFile(file) || typeof record.outputFile === "string" && require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) === fileKey;
|
|
@@ -2206,6 +2409,33 @@ function isViteProcessedCssResultCoveredByImportedBundleAsset(record, importedSt
|
|
|
2206
2409
|
}
|
|
2207
2410
|
return false;
|
|
2208
2411
|
}
|
|
2412
|
+
function removeCoveredInjectedSourceAssets(bundle, targetFile, targetCss, records, options) {
|
|
2413
|
+
let removed = 0;
|
|
2414
|
+
const targetFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(targetFile);
|
|
2415
|
+
const targetIsRootWebStyle = isRootStyleOutputFile(targetFileKey) && !isMiniProgramStyleOutputFile(targetFileKey);
|
|
2416
|
+
for (const record of records) {
|
|
2417
|
+
if (!options.shouldRemoveInjectedSourceAsset?.(targetFile, record)) continue;
|
|
2418
|
+
const recordFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(record.file);
|
|
2419
|
+
for (const [candidateFile, candidateOutput] of Object.entries(bundle)) {
|
|
2420
|
+
if (candidateOutput.type !== "asset") continue;
|
|
2421
|
+
const candidateKey = require_source_candidate_scan_signature.normalizeOutputPathKey(getAssetFile$1(candidateFile, candidateOutput));
|
|
2422
|
+
if (candidateKey === targetFileKey) continue;
|
|
2423
|
+
const isRecordFile = candidateKey === recordFileKey;
|
|
2424
|
+
const candidateIsRootWebStyle = isRootStyleOutputFile(candidateKey) && !isMiniProgramStyleOutputFile(candidateKey);
|
|
2425
|
+
const candidateSource = readAssetSource$2(candidateOutput).trim();
|
|
2426
|
+
const uncoveredCandidateSource = candidateSource.length > 0 ? (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(targetCss, candidateSource).trim() : candidateSource;
|
|
2427
|
+
const isProcessedSource = candidateSource === record.css.trim() || candidateSource.length > 0 && (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(targetCss, candidateSource) || targetIsRootWebStyle && candidateIsRootWebStyle && candidateSource.length > 0 && !hasNonCommentCss(uncoveredCandidateSource);
|
|
2428
|
+
if (!isRecordFile && !isProcessedSource) continue;
|
|
2429
|
+
if (candidateIsRootWebStyle && !targetIsRootWebStyle) continue;
|
|
2430
|
+
if (candidateIsRootWebStyle && !isRecordFile) continue;
|
|
2431
|
+
if (candidateIsRootWebStyle) delete bundle[candidateFile];
|
|
2432
|
+
else clearAssetSource(candidateOutput);
|
|
2433
|
+
options.debug?.("remove injected vite-processed source css asset: %s -> %s", candidateKey, targetFile);
|
|
2434
|
+
removed++;
|
|
2435
|
+
}
|
|
2436
|
+
}
|
|
2437
|
+
return removed;
|
|
2438
|
+
}
|
|
2209
2439
|
function removeCssCoveredByImportedViteResults(css, importedCssSources) {
|
|
2210
2440
|
if (importedCssSources.length === 0) return css;
|
|
2211
2441
|
const importedCss = importedCssSources.map((source) => require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(source).trim()).filter(Boolean).join("\n");
|
|
@@ -2232,6 +2462,38 @@ function collectBundleAssetFiles(bundle) {
|
|
|
2232
2462
|
}
|
|
2233
2463
|
return files;
|
|
2234
2464
|
}
|
|
2465
|
+
function normalizeComparableStyleFile(file) {
|
|
2466
|
+
return require_source_candidate_scan_signature.normalizeOutputPathKey(posix.normalize(file.replace(/[?#].*$/, "")));
|
|
2467
|
+
}
|
|
2468
|
+
function collectConfiguredTailwindV4CssEntryFiles(opts) {
|
|
2469
|
+
const runtimeCssEntries = opts.tailwindRuntime?.options?.tailwindcss?.v4?.cssEntries;
|
|
2470
|
+
return [
|
|
2471
|
+
...Array.isArray(opts.cssEntries) ? opts.cssEntries : [],
|
|
2472
|
+
...Array.isArray(opts.tailwindcss?.v4?.cssEntries) ? opts.tailwindcss.v4.cssEntries : [],
|
|
2473
|
+
...Array.isArray(opts.tailwindcssRuntimeOptions?.tailwindcss?.v4?.cssEntries) ? opts.tailwindcssRuntimeOptions.tailwindcss.v4.cssEntries : [],
|
|
2474
|
+
...Array.isArray(runtimeCssEntries) ? runtimeCssEntries : []
|
|
2475
|
+
].filter((file) => typeof file === "string" && file.length > 0);
|
|
2476
|
+
}
|
|
2477
|
+
function isConfiguredTailwindV4CssEntryFile(opts, file) {
|
|
2478
|
+
if (typeof file !== "string" || file.length === 0) return false;
|
|
2479
|
+
const fileKey = normalizeComparableStyleFile(file);
|
|
2480
|
+
return collectConfiguredTailwindV4CssEntryFiles(opts).some((entry) => normalizeComparableStyleFile(entry) === fileKey);
|
|
2481
|
+
}
|
|
2482
|
+
function resolveUniAppViteWebviewRootCssInjectionTarget(bundle, opts, sourceFile, outputFile) {
|
|
2483
|
+
if (opts.appType !== "uni-app-vite" || isMiniProgramStyleOutputFile(outputFile) || !isConfiguredTailwindV4CssEntryFile(opts, sourceFile)) return;
|
|
2484
|
+
const rootCssFiles = [];
|
|
2485
|
+
const matchedRootCssFiles = [];
|
|
2486
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2487
|
+
if (output.type !== "asset") continue;
|
|
2488
|
+
const file = getAssetFile$1(bundleFile, output);
|
|
2489
|
+
if (!opts.cssMatcher(file) || !isRootStyleOutputFile(file) || isMiniProgramStyleOutputFile(file)) continue;
|
|
2490
|
+
rootCssFiles.push(file);
|
|
2491
|
+
if (opts.mainCssChunkMatcher(file, opts.appType)) matchedRootCssFiles.push(file);
|
|
2492
|
+
}
|
|
2493
|
+
if (matchedRootCssFiles.length === 1) return matchedRootCssFiles[0];
|
|
2494
|
+
if (matchedRootCssFiles.length > 1) return;
|
|
2495
|
+
return rootCssFiles.length === 1 ? rootCssFiles[0] : void 0;
|
|
2496
|
+
}
|
|
2235
2497
|
function findBundleAssetByOutputFile(bundle, file) {
|
|
2236
2498
|
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2237
2499
|
return Object.entries(bundle).find(([bundleFile, output]) => {
|
|
@@ -2285,6 +2547,8 @@ function collectViteProcessedCssAssetResults(bundle, options) {
|
|
|
2285
2547
|
options.markCssAssetProcessed?.(output, file);
|
|
2286
2548
|
options.recordCssAssetResult?.(file, nextCss);
|
|
2287
2549
|
const resolvedOutputFile = resolveViteGeneratedCssMarkerOutputFile(file, singleMarkerFile, existingAssetFiles, options.resolveViteProcessedCssOutputFile);
|
|
2550
|
+
const webviewRootCssInjectionTarget = options.opts ? resolveUniAppViteWebviewRootCssInjectionTarget(bundle, options.opts, singleMarkerFile ?? file, resolvedOutputFile) : void 0;
|
|
2551
|
+
const recordOutputFile = webviewRootCssInjectionTarget ?? resolvedOutputFile;
|
|
2288
2552
|
if (singleMarkerFile && require_source_candidate_scan_signature.normalizeOutputPathKey(resolvedOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file) && !isRootStyleOutputFile(resolvedOutputFile) && existingAssetFiles.has(require_source_candidate_scan_signature.normalizeOutputPathKey(resolvedOutputFile))) {
|
|
2289
2553
|
const targetAsset = findBundleAssetByOutputFile(bundle, resolvedOutputFile);
|
|
2290
2554
|
if (targetAsset) {
|
|
@@ -2304,24 +2568,24 @@ function collectViteProcessedCssAssetResults(bundle, options) {
|
|
|
2304
2568
|
continue;
|
|
2305
2569
|
}
|
|
2306
2570
|
}
|
|
2307
|
-
const shouldReplayIntoMainCss = options.opts != null && shouldReplayViteProcessedCssIntoMainCss(options.opts, file, singleMarkerFile, resolvedOutputFile, options.subpackageRoots);
|
|
2571
|
+
const shouldReplayIntoMainCss = options.opts != null && (webviewRootCssInjectionTarget != null || shouldReplayViteProcessedCssIntoMainCss(options.opts, file, singleMarkerFile, resolvedOutputFile, options.subpackageRoots));
|
|
2308
2572
|
options.recordViteProcessedCssAssetResult?.(file, nextCss, {
|
|
2309
2573
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2310
|
-
outputFile:
|
|
2574
|
+
outputFile: recordOutputFile
|
|
2311
2575
|
});
|
|
2312
|
-
if (require_source_candidate_scan_signature.normalizeOutputPathKey(
|
|
2576
|
+
if (require_source_candidate_scan_signature.normalizeOutputPathKey(recordOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file)) options.recordViteProcessedCssAssetResult?.(recordOutputFile, nextCss, {
|
|
2313
2577
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2314
|
-
outputFile:
|
|
2578
|
+
outputFile: recordOutputFile
|
|
2315
2579
|
});
|
|
2316
2580
|
for (const markerFile of collectMatchingGeneratedCssMarkerFiles(file, rawSource, options.resolveViteProcessedCssOutputFile)) {
|
|
2317
2581
|
if (require_source_candidate_scan_signature.normalizeOutputPathKey(markerFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(file)) continue;
|
|
2318
2582
|
options.recordViteProcessedCssAssetResult?.(markerFile, nextCss, {
|
|
2319
2583
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2320
|
-
outputFile:
|
|
2584
|
+
outputFile: recordOutputFile
|
|
2321
2585
|
});
|
|
2322
|
-
if (require_source_candidate_scan_signature.normalizeOutputPathKey(
|
|
2586
|
+
if (require_source_candidate_scan_signature.normalizeOutputPathKey(recordOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(markerFile) && require_source_candidate_scan_signature.normalizeOutputPathKey(recordOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file)) options.recordViteProcessedCssAssetResult?.(recordOutputFile, nextCss, {
|
|
2323
2587
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2324
|
-
outputFile:
|
|
2588
|
+
outputFile: recordOutputFile
|
|
2325
2589
|
});
|
|
2326
2590
|
}
|
|
2327
2591
|
if (isCoveredViteGeneratedSourceAsset(file, existingAssetFiles, options.resolveViteProcessedCssOutputFile)) {
|
|
@@ -2336,7 +2600,8 @@ function collectViteProcessedCssAssetResults(bundle, options) {
|
|
|
2336
2600
|
return collected;
|
|
2337
2601
|
}
|
|
2338
2602
|
function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
2339
|
-
const
|
|
2603
|
+
const transformCss = (css, file) => options.transformCss?.(css, file) ?? css;
|
|
2604
|
+
const viteCssResults = dedupeViteCssResults([...options.getViteProcessedCssAssetResults?.() ?? []].map(([file, record]) => {
|
|
2340
2605
|
return typeof record === "string" ? {
|
|
2341
2606
|
file,
|
|
2342
2607
|
css: record,
|
|
@@ -2347,10 +2612,14 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2347
2612
|
injectIntoMain: record.injectIntoMain,
|
|
2348
2613
|
outputFile: record.outputFile
|
|
2349
2614
|
};
|
|
2350
|
-
}).
|
|
2615
|
+
})).map((record) => ({
|
|
2616
|
+
...record,
|
|
2617
|
+
css: transformCss(record.css, record.outputFile ?? record.file)
|
|
2618
|
+
})).filter((record) => record.css.length > 0);
|
|
2351
2619
|
let injected = 0;
|
|
2352
2620
|
for (const [bundleFile, bundleOutput] of Object.entries(bundle)) {
|
|
2353
2621
|
let output = bundleOutput;
|
|
2622
|
+
if (bundle[bundleFile] !== bundleOutput) continue;
|
|
2354
2623
|
if (output.type !== "asset") continue;
|
|
2355
2624
|
let file = getAssetFile$1(bundleFile, output);
|
|
2356
2625
|
if (!options.opts.cssMatcher(file) || !shouldUseCssAssetAsMainInjectionTarget(options.opts, file, viteCssResults)) continue;
|
|
@@ -2372,7 +2641,7 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2372
2641
|
}
|
|
2373
2642
|
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2374
2643
|
const mainFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2375
|
-
let nextCss = removeTailwindEntryDirectivesFromCss(originalSource);
|
|
2644
|
+
let nextCss = transformCss(removeTailwindEntryDirectivesFromCss(originalSource), file);
|
|
2376
2645
|
const importedStyleFiles = collectImportedStyleFiles(nextCss, file);
|
|
2377
2646
|
const importedBundleCssSources = collectImportedBundleCssSources(bundle, importedStyleFiles);
|
|
2378
2647
|
nextCss = removeCssCoveredByImportedViteResults(nextCss, importedBundleCssSources);
|
|
@@ -2381,12 +2650,14 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2381
2650
|
const uncoveredImportedViteCssResults = importedViteCssResults.filter((record) => !isViteProcessedCssResultCoveredByImportedBundleAsset(record, importedStyleFiles, bundleAssetFiles));
|
|
2382
2651
|
const importedCssSources = [...importedBundleCssSources, ...uncoveredImportedViteCssResults.map((record) => record.css)];
|
|
2383
2652
|
nextCss = removeCssCoveredByImportedViteResults(nextCss, uncoveredImportedViteCssResults.map((record) => record.css));
|
|
2653
|
+
const targetViteCssResults = [];
|
|
2384
2654
|
for (const record of viteCssResults) {
|
|
2385
2655
|
if (!isRootStyleOutputFile(file)) {
|
|
2386
2656
|
if (typeof record.outputFile !== "string" || require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) !== fileKey) continue;
|
|
2387
2657
|
}
|
|
2388
2658
|
if (!shouldInjectViteProcessedCssResult(options.opts, mainFileKey, record.file, record)) continue;
|
|
2389
2659
|
if (isViteProcessedCssResultImported(record, importedStyleFiles)) continue;
|
|
2660
|
+
targetViteCssResults.push(record);
|
|
2390
2661
|
let css = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(record.css).trim();
|
|
2391
2662
|
css = removeCssCoveredByImportedViteResults(css, importedCssSources).trim();
|
|
2392
2663
|
if (css.length === 0) continue;
|
|
@@ -2417,29 +2688,19 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2417
2688
|
if (css.length === 0) continue;
|
|
2418
2689
|
}
|
|
2419
2690
|
const missingCss = (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(nextCss, css);
|
|
2420
|
-
if (missingCss.length === 0 || (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(nextCss, missingCss)) continue;
|
|
2691
|
+
if (missingCss.length === 0 || !hasNonCommentCss(missingCss) || (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(nextCss, missingCss)) continue;
|
|
2421
2692
|
nextCss = appendCss$1(nextCss, missingCss);
|
|
2422
2693
|
}
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
if (!options.shouldRemoveInjectedSourceAsset?.(file, record)) continue;
|
|
2431
|
-
const recordFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(record.file);
|
|
2432
|
-
for (const [candidateFile, candidateOutput] of Object.entries(bundle)) {
|
|
2433
|
-
if (candidateOutput.type !== "asset") continue;
|
|
2434
|
-
const candidateKey = require_source_candidate_scan_signature.normalizeOutputPathKey(getAssetFile$1(candidateFile, candidateOutput));
|
|
2435
|
-
const isRecordFile = candidateKey === recordFileKey;
|
|
2436
|
-
const candidateSource = readAssetSource$2(candidateOutput).trim();
|
|
2437
|
-
const isProcessedSource = candidateSource === record.css.trim() || candidateSource.length > 0 && (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(nextCss, candidateSource);
|
|
2438
|
-
if (!isRecordFile && !isProcessedSource || candidateKey === require_source_candidate_scan_signature.normalizeOutputPathKey(file)) continue;
|
|
2439
|
-
clearAssetSource(candidateOutput);
|
|
2440
|
-
options.debug?.("remove injected vite-processed source css asset: %s -> %s", candidateKey, file);
|
|
2441
|
-
}
|
|
2694
|
+
nextCss = transformCss(nextCss, file);
|
|
2695
|
+
if (nextCss !== originalSource) {
|
|
2696
|
+
output.source = nextCss;
|
|
2697
|
+
options.markCssAssetProcessed?.(output, file);
|
|
2698
|
+
options.recordCssAssetResult?.(file, nextCss);
|
|
2699
|
+
options.onUpdate?.(file, originalSource, nextCss);
|
|
2700
|
+
options.debug?.("inject vite-processed css into main css asset: %s bytes=%d", file, nextCss.length);
|
|
2442
2701
|
}
|
|
2702
|
+
const removedSources = removeCoveredInjectedSourceAssets(bundle, file, nextCss, targetViteCssResults, options);
|
|
2703
|
+
if (nextCss === originalSource && removedSources === 0) continue;
|
|
2443
2704
|
injected++;
|
|
2444
2705
|
}
|
|
2445
2706
|
return injected;
|
|
@@ -2711,9 +2972,34 @@ function pruneLastCssResults(resultByFile, sourceHashByFile, activeFiles) {
|
|
|
2711
2972
|
function readAssetSource(asset) {
|
|
2712
2973
|
return typeof asset.source === "string" ? asset.source : asset.source.toString();
|
|
2713
2974
|
}
|
|
2975
|
+
function isUniAppViteWebviewAppBundle(bundleFiles) {
|
|
2976
|
+
return bundleFiles.some((file) => node_path.default.basename(file.replace(/[?#].*$/, "")) === "app-service.js");
|
|
2977
|
+
}
|
|
2978
|
+
function isUniAppViteWebviewOutDir$2(outDir) {
|
|
2979
|
+
const normalized = outDir ? node_path.default.basename(node_path.default.normalize(outDir)).trim().toLowerCase() : void 0;
|
|
2980
|
+
return normalized === "app" || normalized === "app-plus";
|
|
2981
|
+
}
|
|
2714
2982
|
function getAssetFile(bundleFile, asset) {
|
|
2715
2983
|
return asset.fileName || bundleFile;
|
|
2716
2984
|
}
|
|
2985
|
+
function finalizeUniAppViteWebviewCssCompat(bundle, options) {
|
|
2986
|
+
if (options.opts.generator?.webCompat === false) return 0;
|
|
2987
|
+
let transformed = 0;
|
|
2988
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2989
|
+
if (output.type !== "asset") continue;
|
|
2990
|
+
const file = getAssetFile(bundleFile, output);
|
|
2991
|
+
if (!options.opts.cssMatcher(file) || !/\.css(?:$|[?#])/i.test(file)) continue;
|
|
2992
|
+
const rawSource = readAssetSource(output);
|
|
2993
|
+
const nextCss = (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)((0, _weapp_tailwindcss_postcss.transformWebCssCompat)(rawSource, options.opts.generator?.webCompat ?? true), { escapeMap: options.opts.escapeMap });
|
|
2994
|
+
if (nextCss === rawSource) continue;
|
|
2995
|
+
output.source = nextCss;
|
|
2996
|
+
options.recordCssAssetResult?.(file, nextCss);
|
|
2997
|
+
options.onUpdate(file, rawSource, nextCss);
|
|
2998
|
+
options.debug("finalize uni-app vite webview css compat: %s bytes=%d", file, nextCss.length);
|
|
2999
|
+
transformed++;
|
|
3000
|
+
}
|
|
3001
|
+
return transformed;
|
|
3002
|
+
}
|
|
2717
3003
|
function isRootMiniProgramStyleOutputFile(file) {
|
|
2718
3004
|
const normalized = require_source_candidate_scan_signature.normalizeOutputPathKey(file.replace(/[?#].*$/, ""));
|
|
2719
3005
|
return !normalized.includes("/") && /\.(?:wxss|acss|ttss|qss|jxss|tyss)$/i.test(normalized);
|
|
@@ -2782,7 +3068,7 @@ function normalizeTaroRootImportShellAssets(bundle, options) {
|
|
|
2782
3068
|
return updated;
|
|
2783
3069
|
}
|
|
2784
3070
|
async function finalizeGenerateBundle(options) {
|
|
2785
|
-
const { activeProcessCacheKeys, activeProcessHashKeys, activeViteCssCacheFiles, bundle, bundleFiles, cache, cssTaskFactories, debug, defaultStyleOutputExtension, formatIteration, generatorCandidateSignature, generatorRuntime, getCssHandlerOptions, getSourceCandidateSourcesForEntries, getSourceCandidatesForEntries, getViteCssCacheStats, getViteProcessedCssAssetResults, hmrTimingRecorder, hmrTimingStartedAt, isHarmonyAppStyleTarget, isNativeAppStyleTarget, isViteProcessedCssAsset, isWebGeneratorTarget, jsAfterCss, jsTaskFactories, lastCssResultByFile, lastCssSourceHashByFile, linkedByEntry, markCssAssetProcessed, metrics, onEnd, onUpdate, opts, pendingLinkedUpdates, pruneViteCssCaches, recordCssAssetResult, recordTimingDetail, recordViteProcessedCssAssetResult, rootDir, runtime, runtimeState, shouldPreserveAppCssExtension, snapshot, sourceCandidates, sourceRoot, state, styleHandler, tasks, timingDetails, transformRuntime, useIncrementalMode } = options;
|
|
3071
|
+
const { activeProcessCacheKeys, activeProcessHashKeys, activeViteCssCacheFiles, bundle, bundleFiles, cache, cssTaskFactories, debug, defaultStyleOutputExtension, formatIteration, generatorCandidateSignature, generatorRuntime, getCssHandlerOptions, getSourceCandidateSourcesForEntries, getSourceCandidatesForEntries, getViteCssCacheStats, getViteProcessedCssAssetResults, hmrTimingRecorder, hmrTimingStartedAt, isHarmonyAppStyleTarget, isNativeAppStyleTarget, isViteProcessedCssAsset, isWebGeneratorTarget, jsAfterCss, jsTaskFactories, lastCssResultByFile, lastCssSourceHashByFile, linkedByEntry, markCssAssetProcessed, metrics, onEnd, onUpdate, opts, outDir, pendingLinkedUpdates, pruneViteCssCaches, recordCssAssetResult, recordTimingDetail, recordViteProcessedCssAssetResult, rootDir, runtime, runtimeState, shouldPreserveAppCssExtension, snapshot, sourceCandidates, sourceRoot, state, styleHandler, tasks, timingDetails, transformRuntime, transformWebTargetCss, useIncrementalMode } = options;
|
|
2786
3072
|
const tasksStart = performance.now();
|
|
2787
3073
|
if (cssTaskFactories.length > 0) {
|
|
2788
3074
|
const cssTask = require_hmr_timing.runWithConcurrency(cssTaskFactories, resolveViteCssTaskConcurrency(useIncrementalMode, runtimeState.tailwindRuntime.majorVersion)).then(() => void 0);
|
|
@@ -2817,6 +3103,7 @@ async function finalizeGenerateBundle(options) {
|
|
|
2817
3103
|
recordViteProcessedCssAssetResult,
|
|
2818
3104
|
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles),
|
|
2819
3105
|
subpackageRoots: collectMiniProgramSubpackageRoots(bundle),
|
|
3106
|
+
transformCss: transformWebTargetCss,
|
|
2820
3107
|
debug
|
|
2821
3108
|
});
|
|
2822
3109
|
return injectViteProcessedCssIntoMainCssAssets(bundle, {
|
|
@@ -2824,6 +3111,7 @@ async function finalizeGenerateBundle(options) {
|
|
|
2824
3111
|
getViteProcessedCssAssetResults,
|
|
2825
3112
|
markCssAssetProcessed,
|
|
2826
3113
|
recordCssAssetResult,
|
|
3114
|
+
transformCss: transformWebTargetCss,
|
|
2827
3115
|
shouldRemoveInjectedSourceAsset: (targetFile, record) => {
|
|
2828
3116
|
if (record.injectIntoMain === false) return false;
|
|
2829
3117
|
const targetFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(targetFile);
|
|
@@ -2849,11 +3137,13 @@ async function finalizeGenerateBundle(options) {
|
|
|
2849
3137
|
removeCssCoveredByRootStyleAssets(bundle, {
|
|
2850
3138
|
cssMatcher: opts.cssMatcher,
|
|
2851
3139
|
debug,
|
|
3140
|
+
includeTailwindGeneratedCssAssets: opts.appType === "uni-app-vite" && isWebGeneratorTarget && isUniAppViteWebviewAppBundle(bundleFiles),
|
|
2852
3141
|
isViteProcessedCssAsset,
|
|
2853
3142
|
onUpdate,
|
|
2854
3143
|
recordCssAssetResult,
|
|
2855
3144
|
subpackageRoots: collectMiniProgramSubpackageRoots(bundle)
|
|
2856
3145
|
});
|
|
3146
|
+
if (opts.appType === "uni-app-vite" && isWebGeneratorTarget && isUniAppViteWebviewAppBundle(Object.keys(bundle))) removeDuplicateUnlinkedRootCssAssetsReferencedByHtml(bundle, { debug });
|
|
2857
3147
|
await finalizeMiniProgramCssAssets(bundle, {
|
|
2858
3148
|
cssMatcher: opts.cssMatcher,
|
|
2859
3149
|
debug,
|
|
@@ -2864,6 +3154,12 @@ async function finalizeGenerateBundle(options) {
|
|
|
2864
3154
|
recordCssAssetResult,
|
|
2865
3155
|
styleHandler
|
|
2866
3156
|
});
|
|
3157
|
+
if (opts.appType === "uni-app-vite" && (isWebGeneratorTarget || isUniAppViteWebviewAppBundle(Object.keys(bundle)) || isUniAppViteWebviewOutDir$2(outDir))) finalizeUniAppViteWebviewCssCompat(bundle, {
|
|
3158
|
+
debug,
|
|
3159
|
+
onUpdate,
|
|
3160
|
+
opts,
|
|
3161
|
+
recordCssAssetResult
|
|
3162
|
+
});
|
|
2867
3163
|
const stateUpdateStart = performance.now();
|
|
2868
3164
|
require_source_candidate_scan_signature.updateBundleBuildState(state, snapshot, useIncrementalMode ? linkedByEntry ?? /* @__PURE__ */ new Map() : /* @__PURE__ */ new Map(), { incremental: useIncrementalMode });
|
|
2869
3165
|
state.generatorCandidateSignature = generatorCandidateSignature;
|
|
@@ -3278,7 +3574,9 @@ function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGenerator
|
|
|
3278
3574
|
const groups = /* @__PURE__ */ new Map();
|
|
3279
3575
|
for (const [key, remembered] of sources ?? []) {
|
|
3280
3576
|
const cleanSourceFile = remembered.sourceFile.replace(/[?#].*$/, "");
|
|
3281
|
-
const
|
|
3577
|
+
const resolvedOutputFile = CSS_SOURCE_OUTPUT_EXT_RE.test(cleanSourceFile) ? resolveViteCssPipelineOutputFileFromSourceFile(remembered.sourceFile, opts, rootDir, isWebGeneratorTarget, preserveCssExtension, sourceRoot, styleOutputExtension, styleOutputFiles) : resolveViteCssPipelineOutputFileFromSourceFile(remembered.outputFile, opts, rootDir, isWebGeneratorTarget, preserveCssExtension, sourceRoot, styleOutputExtension, styleOutputFiles);
|
|
3578
|
+
const rememberedOutputFile = remembered.outputFile.replace(/[?#].*$/, "");
|
|
3579
|
+
const outputKey = require_source_candidate_scan_signature.normalizeOutputPathKey(opts.cssMatcher(rememberedOutputFile) && !require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedOutputFile).includes("/") && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(resolvedOutputFile.replace(/[?#].*$/, "")) ? remembered.outputFile : resolvedOutputFile);
|
|
3282
3580
|
const group = groups.get(outputKey) ?? [];
|
|
3283
3581
|
group.push({
|
|
3284
3582
|
key,
|
|
@@ -3291,7 +3589,7 @@ function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGenerator
|
|
|
3291
3589
|
//#endregion
|
|
3292
3590
|
//#region src/bundlers/vite/generate-bundle/remembered-css-replay.ts
|
|
3293
3591
|
async function processRememberedCssReplay(options) {
|
|
3294
|
-
const { addWatchFile, activeViteCssCacheFiles, bundleFiles, cache, createScopedGeneratorRuntime, createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, cssTaskFactories, debug, defaultStyleOutputExtension, emitOrReplayCssAsset, generatorRuntime, getCssHandlerOptions, getCssUserHandlerOptions, getRememberedCssSignature, getRememberedCssSources, isNativeAppStyleTarget, isWebGeneratorTarget, lastCssResultByFile, lastCssSourceHashByFile, markCssAssetProcessed, metrics, normalizeViteCssCacheKey, onUpdate, opts, recordCssAssetResult, recordViteProcessedCssAssetResult, refreshRememberedCssSource, rootDir, runtimeState, setRememberedCssSignature, shouldInjectCssIntoMainFromOutput, shouldPreserveAppCssExtension, sourceRoot, styleHandler, timeTask, useIncrementalMode } = options;
|
|
3592
|
+
const { addWatchFile, activeViteCssCacheFiles, bundleFiles, cache, createScopedGeneratorRuntime, createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, cssTaskFactories, debug, defaultStyleOutputExtension, emitOrReplayCssAsset, generatorRuntime, generatorPlatform, getCssHandlerOptions, getCssUserHandlerOptions, getRememberedCssSignature, getRememberedCssSources, isNativeAppStyleTarget, isWebGeneratorTarget, lastCssResultByFile, lastCssSourceHashByFile, markCssAssetProcessed, metrics, normalizeViteCssCacheKey, onUpdate, opts, recordCssAssetResult, recordViteProcessedCssAssetResult, refreshRememberedCssSource, rootDir, runtimeState, setRememberedCssSignature, shouldInjectCssIntoMainFromOutput, shouldPreserveAppCssExtension, sourceRoot, styleHandler, timeTask, useIncrementalMode } = options;
|
|
3295
3593
|
const rememberedReplayGroups = collectRememberedCssReplayGroups(getRememberedCssSources?.(), opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
3296
3594
|
for (const [outputFile, rememberedGroup] of rememberedReplayGroups) {
|
|
3297
3595
|
if (require_source_candidate_scan_signature.isHTMLRequest(outputFile) || options.opts.htmlMatcher(outputFile)) continue;
|
|
@@ -3342,6 +3640,7 @@ async function processRememberedCssReplay(options) {
|
|
|
3342
3640
|
cssHandlerOptions,
|
|
3343
3641
|
cssUserHandlerOptions: getCssUserHandlerOptions(sourceFile),
|
|
3344
3642
|
getSourceCandidatesForEntries: scopedSourceCandidateGetter,
|
|
3643
|
+
generatorPlatform,
|
|
3345
3644
|
styleHandler,
|
|
3346
3645
|
debug,
|
|
3347
3646
|
previousCss
|
|
@@ -3923,6 +4222,16 @@ function resolveSourceRootFromBundleGraph(config, bundle) {
|
|
|
3923
4222
|
}
|
|
3924
4223
|
//#endregion
|
|
3925
4224
|
//#region src/bundlers/vite/generate-bundle.ts
|
|
4225
|
+
function inferPlatformFromViteOutDir$1(outDir) {
|
|
4226
|
+
const segment = outDir ? node_path.default.basename(node_path.default.normalize(outDir)) : void 0;
|
|
4227
|
+
if (!segment) return;
|
|
4228
|
+
const normalized = segment.trim().toLowerCase();
|
|
4229
|
+
if (normalized === "h5" || normalized === "web" || normalized === "app" || normalized === "app-plus" || normalized.startsWith("app-") || normalized.startsWith("mp-") || normalized.startsWith("quickapp-webview")) return normalized;
|
|
4230
|
+
}
|
|
4231
|
+
function isUniAppViteWebviewOutDir$1(outDir) {
|
|
4232
|
+
const normalized = outDir ? node_path.default.basename(node_path.default.normalize(outDir)).trim().toLowerCase() : void 0;
|
|
4233
|
+
return normalized === "app" || normalized === "app-plus";
|
|
4234
|
+
}
|
|
3926
4235
|
function createGenerateBundleHook(context) {
|
|
3927
4236
|
const state = require_source_candidate_scan_signature.createBundleBuildState();
|
|
3928
4237
|
const lastCssResultByFile = /* @__PURE__ */ new Map();
|
|
@@ -3952,23 +4261,32 @@ function createGenerateBundleHook(context) {
|
|
|
3952
4261
|
const { cache, onEnd, onStart, onUpdate, styleHandler, templateHandler, jsHandler, uniAppX } = opts;
|
|
3953
4262
|
const resolvedConfig = getResolvedConfig();
|
|
3954
4263
|
const uniUtsPlatform = require_utils.resolveUniUtsPlatform();
|
|
3955
|
-
const
|
|
4264
|
+
const generatorPlatform = opts.cssOptions?.platform ?? opts.platform ?? inferPlatformFromViteOutDir$1(resolvedConfig?.build?.outDir);
|
|
4265
|
+
const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(opts.generator, {
|
|
3956
4266
|
appType: opts.appType,
|
|
3957
|
-
platform:
|
|
4267
|
+
platform: generatorPlatform,
|
|
3958
4268
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
3959
4269
|
uniAppX,
|
|
3960
4270
|
uniUtsPlatform
|
|
3961
|
-
})
|
|
4271
|
+
});
|
|
4272
|
+
const generatorBranch = require_generator.resolveGeneratorRuntimeBranch(generatorOptions, {
|
|
3962
4273
|
appType: opts.appType,
|
|
3963
|
-
platform:
|
|
4274
|
+
platform: generatorPlatform,
|
|
3964
4275
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
3965
4276
|
uniAppX,
|
|
3966
4277
|
uniUtsPlatform
|
|
3967
4278
|
});
|
|
3968
4279
|
const isWebGeneratorTarget = generatorBranch.isWeb;
|
|
3969
|
-
const
|
|
3970
|
-
const
|
|
3971
|
-
const
|
|
4280
|
+
const shouldApplyWebviewSafeSelectors = opts.appType === "uni-app-vite" && isUniAppViteWebviewOutDir$1(resolvedConfig?.build?.outDir);
|
|
4281
|
+
const shouldApplyWebviewCssCompat = isWebGeneratorTarget || shouldApplyWebviewSafeSelectors;
|
|
4282
|
+
const transformWebTargetCss = (css) => {
|
|
4283
|
+
const compatCss = isWebGeneratorTarget ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, generatorOptions.webCompat) : shouldApplyWebviewCssCompat ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, generatorOptions.webCompat ?? true) : css;
|
|
4284
|
+
return shouldApplyWebviewSafeSelectors ? (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)(compatCss, { escapeMap: opts.escapeMap }) : compatCss;
|
|
4285
|
+
};
|
|
4286
|
+
const isUniAppXStyleTarget = opts.appType === "uni-app-x";
|
|
4287
|
+
const isNativeAppStyleTarget = isUniAppXStyleTarget && uniUtsPlatform.isApp;
|
|
4288
|
+
const canInferHarmonyAppStyleTarget = isUniAppXStyleTarget && (!uniUtsPlatform.normalized || uniUtsPlatform.isApp);
|
|
4289
|
+
const isHarmonyAppStyleTarget = isUniAppXStyleTarget && (uniUtsPlatform.isAppHarmony || canInferHarmonyAppStyleTarget && (isUniAppXHarmonyBundle(bundle) || isUniAppXHarmonyOutDir(resolvedConfig?.build?.outDir)));
|
|
3972
4290
|
const shouldPreserveAppCssExtension = isNativeAppStyleTarget || isHarmonyAppStyleTarget;
|
|
3973
4291
|
const shouldGenerateWebCssByGenerator = isWebGeneratorTarget;
|
|
3974
4292
|
const { getCssHandlerOptions, getCssUserHandlerOptions } = cssHandlerOptions;
|
|
@@ -3990,6 +4308,7 @@ function createGenerateBundleHook(context) {
|
|
|
3990
4308
|
recordViteProcessedCssAssetResult,
|
|
3991
4309
|
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, Object.keys(bundle)),
|
|
3992
4310
|
subpackageRoots: currentSubpackageRoots,
|
|
4311
|
+
transformCss: transformWebTargetCss,
|
|
3993
4312
|
debug
|
|
3994
4313
|
});
|
|
3995
4314
|
const hmrTimingStartedAt = performance.now();
|
|
@@ -4033,7 +4352,47 @@ function createGenerateBundleHook(context) {
|
|
|
4033
4352
|
const snapshotStart = performance.now();
|
|
4034
4353
|
const snapshot = require_source_candidate_scan_signature.buildBundleSnapshot(bundle, opts, outDir, state, envFlags.disableDirtyOptimization || !useIncrementalMode, { hasOmittedKnownFiles });
|
|
4035
4354
|
const configuredTailwindV4CssSourceEntriesForScope = getConfiguredTailwindV4CssSourceEntries();
|
|
4036
|
-
const
|
|
4355
|
+
const normalizeSystemAliasPathKey = (file) => file.startsWith("/private/var/") ? file.slice(8) : file;
|
|
4356
|
+
const normalizeConfiguredTailwindV4CssEntryFileKey = (file) => {
|
|
4357
|
+
const cleanFile = file.replace(/[?#].*$/, "");
|
|
4358
|
+
return normalizeSystemAliasPathKey(require_source_candidate_scan_signature.normalizeOutputPathKey(node_path.default.isAbsolute(cleanFile) ? node_path.default.resolve(cleanFile) : node_path.default.resolve(opts.tailwindcssBasedir ?? rootDir, cleanFile)));
|
|
4359
|
+
};
|
|
4360
|
+
const runtimeTailwindcssOptions = require_v4_engine.resolveTailwindcssOptions(opts.tailwindcssRuntimeOptions);
|
|
4361
|
+
const tailwindRuntimeOptions = require_v4_engine.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
|
|
4362
|
+
const configuredTailwindV4CssSourceFileKeysForScope = new Set(configuredTailwindV4CssSourceEntriesForScope.map((entry) => normalizeConfiguredTailwindV4CssEntryFileKey(entry.file)));
|
|
4363
|
+
const configuredTailwindV4ExplicitCssEntryFileKeysForScope = new Set([
|
|
4364
|
+
...Array.isArray(opts.cssEntries) ? opts.cssEntries : [],
|
|
4365
|
+
...Array.isArray(opts.tailwindcss?.v4?.cssEntries) ? opts.tailwindcss.v4.cssEntries : [],
|
|
4366
|
+
...Array.isArray(runtimeTailwindcssOptions?.v4?.cssEntries) ? runtimeTailwindcssOptions.v4.cssEntries : [],
|
|
4367
|
+
...Array.isArray(tailwindRuntimeOptions?.v4?.cssEntries) ? tailwindRuntimeOptions.v4.cssEntries : []
|
|
4368
|
+
].filter((file) => typeof file === "string" && file.length > 0).map(normalizeConfiguredTailwindV4CssEntryFileKey));
|
|
4369
|
+
const resolveUniAppViteWebviewRootCssInjectionTarget = (sourceFile, outputFile) => {
|
|
4370
|
+
if (opts.appType !== "uni-app-vite" || !outputFile.replace(/[?#].*$/, "").endsWith(".css") || typeof sourceFile !== "string" || !configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(sourceFile))) return;
|
|
4371
|
+
const rootCssFiles = bundleFiles.filter((file) => {
|
|
4372
|
+
const normalized = require_source_candidate_scan_signature.normalizeOutputPathKey(file.replace(/[?#].*$/, ""));
|
|
4373
|
+
return opts.cssMatcher(file) && normalized.endsWith(".css") && !normalized.includes("/");
|
|
4374
|
+
});
|
|
4375
|
+
const matchedRootCssFiles = rootCssFiles.filter((file) => getCssHandlerOptions(file).isMainChunk);
|
|
4376
|
+
if (matchedRootCssFiles.length === 1) return matchedRootCssFiles[0];
|
|
4377
|
+
if (matchedRootCssFiles.length > 1) return;
|
|
4378
|
+
return rootCssFiles.length === 1 ? rootCssFiles[0] : void 0;
|
|
4379
|
+
};
|
|
4380
|
+
const resolveConfiguredTailwindV4CssEntryOutputFile = (sourceFile) => resolveViteCssPipelineOutputFile(sourceFile, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
4381
|
+
const selectUniAppViteWebviewRootCssSourceEntry = (outputFile, entries) => {
|
|
4382
|
+
if (opts.appType !== "uni-app-vite" || !isWebGeneratorTarget || !opts.cssMatcher(outputFile) || require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile.replace(/[?#].*$/, "")).includes("/")) return;
|
|
4383
|
+
const generationEntries = entries.filter((entry) => hasTailwindGenerationSource(entry.source));
|
|
4384
|
+
if (generationEntries.length <= 1) return generationEntries[0];
|
|
4385
|
+
const rootOutputEntries = generationEntries.filter((entry) => {
|
|
4386
|
+
return !require_source_candidate_scan_signature.normalizeOutputPathKey(resolveConfiguredTailwindV4CssEntryOutputFile(entry.file).replace(/[?#].*$/, "")).includes("/");
|
|
4387
|
+
});
|
|
4388
|
+
if (rootOutputEntries.length === 1) return rootOutputEntries[0];
|
|
4389
|
+
if (currentSubpackageRoots) {
|
|
4390
|
+
const mainPackageEntries = generationEntries.filter((entry) => {
|
|
4391
|
+
return !isSubpackageOutputFile(resolveConfiguredTailwindV4CssEntryOutputFile(entry.file), currentSubpackageRoots);
|
|
4392
|
+
});
|
|
4393
|
+
if (mainPackageEntries.length === 1) return mainPackageEntries[0];
|
|
4394
|
+
}
|
|
4395
|
+
};
|
|
4037
4396
|
const { createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, shouldExcludeSubpackageSourceCandidates, shouldInjectCssIntoMainFromOutput } = createSubpackageSourceCandidateScope({
|
|
4038
4397
|
cssSourceFiles: configuredTailwindV4CssSourceEntriesForScope.map((entry) => entry.file),
|
|
4039
4398
|
getSourceCandidateSourcesForEntries,
|
|
@@ -4189,10 +4548,14 @@ function createGenerateBundleHook(context) {
|
|
|
4189
4548
|
onUpdate,
|
|
4190
4549
|
debug
|
|
4191
4550
|
});
|
|
4192
|
-
const
|
|
4551
|
+
const createBaseHandlerOptions = createJsHandlerOptionsFactory({
|
|
4193
4552
|
getMajorVersion: () => runtimeState.tailwindRuntime.majorVersion,
|
|
4194
4553
|
moduleGraph: moduleGraphOptions
|
|
4195
4554
|
});
|
|
4555
|
+
const createHandlerOptions = (absoluteFilename, extra) => createBaseHandlerOptions(absoluteFilename, shouldApplyWebviewSafeSelectors ? {
|
|
4556
|
+
needEscaped: true,
|
|
4557
|
+
...extra
|
|
4558
|
+
} : extra);
|
|
4196
4559
|
const linkedByEntry = useIncrementalMode ? /* @__PURE__ */ new Map() : void 0;
|
|
4197
4560
|
const sharedCssResultCache = /* @__PURE__ */ new Map();
|
|
4198
4561
|
const activeProcessCacheKeys = /* @__PURE__ */ new Set();
|
|
@@ -4307,7 +4670,7 @@ function createGenerateBundleHook(context) {
|
|
|
4307
4670
|
return await refreshRememberedCssSource?.(remembered) ?? remembered;
|
|
4308
4671
|
}));
|
|
4309
4672
|
rememberedCssSources = rememberedCssSources.filter((remembered) => {
|
|
4310
|
-
if (!configuredTailwindV4CssSourceFileKeysForScope.has(
|
|
4673
|
+
if (!configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile))) return true;
|
|
4311
4674
|
const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(remembered.sourceFile);
|
|
4312
4675
|
return !matchedOutputFile || require_source_candidate_scan_signature.normalizeOutputPathKey(matchedOutputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
4313
4676
|
});
|
|
@@ -4318,7 +4681,7 @@ function createGenerateBundleHook(context) {
|
|
|
4318
4681
|
const rememberedSourcesBelongToInferredSfc = rememberedCssSources.length > 0 && rememberedCssSources.every((remembered) => normalizeSfcSourceFileForCompare(remembered.sourceFile) === inferredSourceFile);
|
|
4319
4682
|
if (!hasUsableRememberedTailwindSource || rememberedSourcesBelongToInferredSfc) rememberedCssSources = [inferredSfcStyleSource];
|
|
4320
4683
|
}
|
|
4321
|
-
if (isTemporaryCssAssetFile(outputFile) && rememberedCssSources.some((remembered) => configuredTailwindV4CssSourceFileKeysForScope.has(
|
|
4684
|
+
if (isTemporaryCssAssetFile(outputFile) && rememberedCssSources.some((remembered) => configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile)))) {
|
|
4322
4685
|
rememberedCssSources = [];
|
|
4323
4686
|
hasUsableRememberedTailwindSource = false;
|
|
4324
4687
|
}
|
|
@@ -4346,7 +4709,14 @@ function createGenerateBundleHook(context) {
|
|
|
4346
4709
|
}
|
|
4347
4710
|
if (!hasUsableRememberedTailwindSource) {
|
|
4348
4711
|
const configuredTailwindV4CssSourceEntries = getConfiguredTailwindV4CssSourceEntries();
|
|
4349
|
-
const
|
|
4712
|
+
const inferredSourceStyle = resolveSourceStyleSourceFromOutputFile(outputFile, snapshot, outDir, sourceRoot, getCssSource, getSourceCandidateSources, configuredTailwindV4CssSourceEntries.map((entry) => [entry.file, entry.source]), debug);
|
|
4713
|
+
const inferredWebviewRootSourceEntry = inferredSourceStyle ? void 0 : selectUniAppViteWebviewRootCssSourceEntry(outputFile, configuredTailwindV4CssSourceEntries);
|
|
4714
|
+
const inferredWebviewRootSourceStyle = inferredWebviewRootSourceEntry ? {
|
|
4715
|
+
outputFile,
|
|
4716
|
+
rawSource: inferredWebviewRootSourceEntry.source,
|
|
4717
|
+
sourceFile: inferredWebviewRootSourceEntry.file
|
|
4718
|
+
} : void 0;
|
|
4719
|
+
const inferredOriginalSourceStyle = inferredSourceStyle ?? (outputFile === file ? void 0 : resolveSourceStyleSourceFromOutputFile(file, snapshot, outDir, sourceRoot, getCssSource, getSourceCandidateSources, configuredTailwindV4CssSourceEntries.map((entry) => [entry.file, entry.source]), debug)) ?? inferredWebviewRootSourceStyle;
|
|
4350
4720
|
if (inferredOriginalSourceStyle) {
|
|
4351
4721
|
outputFile = resolveMatchedOutputFileForCurrentAsset(inferredOriginalSourceStyle.sourceFile) ?? outputFile;
|
|
4352
4722
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
@@ -4396,7 +4766,7 @@ function createGenerateBundleHook(context) {
|
|
|
4396
4766
|
}
|
|
4397
4767
|
}
|
|
4398
4768
|
let rememberedCssSource = mergeRememberedCssSources(rememberedCssSources, outputFile);
|
|
4399
|
-
if (rememberedCssSource && viteProcessedCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(
|
|
4769
|
+
if (rememberedCssSource && viteProcessedCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(rememberedCssSource.sourceFile))) {
|
|
4400
4770
|
const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(rememberedCssSource.sourceFile);
|
|
4401
4771
|
if (matchedOutputFile && require_source_candidate_scan_signature.normalizeOutputPathKey(matchedOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile)) {
|
|
4402
4772
|
outputFile = matchedOutputFile;
|
|
@@ -4425,11 +4795,12 @@ function createGenerateBundleHook(context) {
|
|
|
4425
4795
|
}
|
|
4426
4796
|
const hasRememberedApplyDirective = rememberedCssSource != null && require_v4_engine.hasTailwindApplyDirective(rememberedCssSource.rawSource);
|
|
4427
4797
|
const hasRememberedTailwindGenerationSource = rememberedCssSource != null && hasTailwindGenerationSource(rememberedCssSource.rawSource);
|
|
4428
|
-
const usesConfiguredTailwindV4FallbackSource = rememberedCssSource != null && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile) && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.sourceFile.replace(/[?#].*$/, "")) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
4429
4798
|
const hasSameOutputRememberedTailwindGenerationSource = hasRememberedTailwindGenerationSource && rememberedCssSource != null && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
4430
4799
|
const hasStaleViteProcessedCssSource = vitePipelineCssAsset && hasDifferentRememberedCssSource && (hasCurrentTailwindGenerationDirective || hasRememberedApplyDirective || hasRememberedTailwindGenerationSource);
|
|
4431
4800
|
const generatorSourceFile = vitePipelineCssAsset ? rememberedCssSource?.sourceFile ?? assetSourceFile : assetSourceFile;
|
|
4432
|
-
|
|
4801
|
+
const webviewRootCssInjectionTarget = vitePipelineCssAsset ? resolveUniAppViteWebviewRootCssInjectionTarget(generatorSourceFile, outputFile) : void 0;
|
|
4802
|
+
const usesConfiguredTailwindV4FallbackSource = rememberedCssSource != null && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile) && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.sourceFile.replace(/[?#].*$/, "")) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
4803
|
+
if (vitePipelineCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(generatorSourceFile))) {
|
|
4433
4804
|
usedConfiguredTailwindV4CssSourceFiles.add(require_source_candidate_scan_signature.normalizeOutputPathKey(generatorSourceFile));
|
|
4434
4805
|
temporaryCssAssetSourceResolver.markUsed(generatorSourceFile);
|
|
4435
4806
|
}
|
|
@@ -4437,7 +4808,7 @@ function createGenerateBundleHook(context) {
|
|
|
4437
4808
|
...getCssHandlerOptions(generatorSourceFile),
|
|
4438
4809
|
isMainChunk: resolvedFromTemporaryCssAsset ? false : outputCssHandlerOptions.isMainChunk
|
|
4439
4810
|
} : getCssHandlerOptions(file);
|
|
4440
|
-
const generatorCssEntries =
|
|
4811
|
+
const generatorCssEntries = configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(generatorSourceFile)) ? [generatorSourceFile] : opts.cssEntries;
|
|
4441
4812
|
const generatorCssHandlerOptions = {
|
|
4442
4813
|
...cssHandlerOptions,
|
|
4443
4814
|
sourceOptions: {
|
|
@@ -4455,6 +4826,10 @@ function createGenerateBundleHook(context) {
|
|
|
4455
4826
|
opts,
|
|
4456
4827
|
tokenSources: sourceTraceTokenSources
|
|
4457
4828
|
});
|
|
4829
|
+
const removeRootCoveredCssFromScopedAsset = (css) => {
|
|
4830
|
+
const normalizedOutputFile = require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile.replace(/[?#].*$/, ""));
|
|
4831
|
+
return !normalizedOutputFile.includes("/") || currentSubpackageRoots != null && isSubpackageOutputFile(normalizedOutputFile, currentSubpackageRoots) ? css : removeCssCoveredByRootStyleBundleSources(bundle, outputFile, css);
|
|
4832
|
+
};
|
|
4458
4833
|
const shouldRegenerateMainPackageCssWithScopedCandidates = vitePipelineCssAsset && shouldExcludeSubpackageSourceCandidates(outputFile, generatorCssHandlerOptions);
|
|
4459
4834
|
const generatorCssUserHandlerOptions = getCssUserHandlerOptions(generatorSourceFile);
|
|
4460
4835
|
const cssRuntimeAffectingSignature = vitePipelineCssAsset ? require_source_candidate_scan_signature.createRuntimeAffectingSourceSignature(generatorRawSource, "css") : snapshot.runtimeAffectingSignatureByFile.get(file) ?? require_source_candidate_scan_signature.createRuntimeAffectingSourceSignature(generatorRawSource, "css");
|
|
@@ -4462,19 +4837,30 @@ function createGenerateBundleHook(context) {
|
|
|
4462
4837
|
const cssShareScope = createCssTransformShareScopeKey(opts, outputFile, generatorRawSource);
|
|
4463
4838
|
const shouldRegenerateCollectedViteCss = viteProcessedCssAsset && useIncrementalMode && state.generatorCandidateSignature !== void 0 && generatorCandidatesChanged && (hasTailwindGenerationSource(generatorRawSource) || require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource) || rememberedCssSource != null && hasTailwindGenerationSource(rememberedCssSource.rawSource));
|
|
4464
4839
|
const shouldRefreshViteProcessedCssByCandidates = viteProcessedCssAsset && useIncrementalMode && state.generatorCandidateSignature !== void 0 && generatorCandidatesChanged;
|
|
4465
|
-
const
|
|
4840
|
+
const vitePipelineCssInjectionOutputFile = webviewRootCssInjectionTarget ?? outputFile;
|
|
4841
|
+
const shouldRecordVitePipelineCssByOutput = require_source_candidate_scan_signature.normalizeOutputPathKey(vitePipelineCssInjectionOutputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
4842
|
+
const shouldInjectVitePipelineCssIntoMain = vitePipelineCssAsset && outputCssHandlerOptions.isMainChunk !== true && (webviewRootCssInjectionTarget != null || shouldInjectCssIntoMainFromOutput(outputFile, generatorSourceFile, outputCssHandlerOptions));
|
|
4466
4843
|
const shouldTrackGeneratorRuntime = hasStaleViteProcessedCssSource || shouldRegenerateMainPackageCssWithScopedCandidates || hasCurrentTailwindGenerationDirective || hasSameOutputRememberedTailwindGenerationSource || shouldProcessTailwindGeneration && (!useIncrementalMode || cssHandlerOptions.isMainChunk || processFiles.css.has(file) || runtimeLinkedCssFiles.has(file) || runtimeLinkedCssFiles.has(outputFile) || shouldRegenerateCollectedViteCss || hasRuntimeAffectingChanges && (alreadyProcessedCssAsset || vitePipelineCssAsset));
|
|
4467
4844
|
const shouldPreserveCollectedViteCssAsset = !shouldRegenerateCollectedViteCss && (state.generatorCandidateSignature === void 0 || !generatorCandidatesChanged) && (collectedBundlerGeneratedCssFiles.has(file) || require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource));
|
|
4468
4845
|
const strippedViteProcessedCss = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(rawSource);
|
|
4469
4846
|
const shouldPreserveStaleGeneratedCssAsset = hasStaleViteProcessedCssSource && shouldPreserveCollectedViteCssAsset && strippedViteProcessedCss.trim().length > 0 && !strippedViteProcessedCss.includes("weapp-tailwindcss generator-placeholder") && !strippedViteProcessedCss.includes("vite-placeholder") && !hasTailwindGenerationSource(strippedViteProcessedCss) && !require_v4_engine.hasTailwindApplyDirective(strippedViteProcessedCss);
|
|
4470
4847
|
if (alreadyProcessedCssAsset && !shouldRefreshViteProcessedCssByCandidates && (!hasStaleViteProcessedCssSource || shouldPreserveStaleGeneratedCssAsset) && !hasRememberedApplySource && !shouldRegenerateMainPackageCssWithScopedCandidates && (!shouldTrackGeneratorRuntime || shouldPreserveCollectedViteCssAsset)) {
|
|
4471
|
-
const nextCss = strippedViteProcessedCss;
|
|
4848
|
+
const nextCss = removeRootCoveredCssFromScopedAsset(strippedViteProcessedCss);
|
|
4472
4849
|
applyCssResult(nextCss);
|
|
4473
4850
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
4474
4851
|
recordCssAssetResult?.(outputFile, nextCss);
|
|
4475
|
-
|
|
4852
|
+
if (vitePipelineCssAsset && rememberedCssSource) rememberCssSource?.({
|
|
4853
|
+
outputFile: vitePipelineCssInjectionOutputFile,
|
|
4854
|
+
rawSource: generatorRawSource,
|
|
4855
|
+
sourceFile: generatorSourceFile
|
|
4856
|
+
});
|
|
4857
|
+
if (shouldRecordVitePipelineCssByOutput) recordViteProcessedCssAssetResult?.(vitePipelineCssInjectionOutputFile, nextCss, {
|
|
4476
4858
|
injectIntoMain: outputCssHandlerOptions.isMainChunk ? false : shouldInjectVitePipelineCssIntoMain,
|
|
4477
|
-
outputFile
|
|
4859
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4860
|
+
});
|
|
4861
|
+
if (vitePipelineCssAsset && shouldInjectVitePipelineCssIntoMain) recordViteProcessedCssAssetResult?.(file, nextCss, {
|
|
4862
|
+
injectIntoMain: shouldInjectVitePipelineCssIntoMain,
|
|
4863
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4478
4864
|
});
|
|
4479
4865
|
onUpdate(outputFile, rawSource, nextCss);
|
|
4480
4866
|
debug("css skip vite-processed asset: %s", outputFile);
|
|
@@ -4512,7 +4898,7 @@ function createGenerateBundleHook(context) {
|
|
|
4512
4898
|
rememberLastCssResult(lastCssResultByFile, lastCssSourceHashByFile, outputFile, source, cssRuntimeAffectingHash);
|
|
4513
4899
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
4514
4900
|
if (rememberedCssSources.length <= 1) rememberCssSource?.({
|
|
4515
|
-
outputFile,
|
|
4901
|
+
outputFile: vitePipelineCssInjectionOutputFile,
|
|
4516
4902
|
rawSource: generatorRawSource,
|
|
4517
4903
|
sourceFile: generatorSourceFile
|
|
4518
4904
|
}, rememberedCssRuntimeSignature);
|
|
@@ -4547,6 +4933,7 @@ function createGenerateBundleHook(context) {
|
|
|
4547
4933
|
cssUserHandlerOptions: generatorCssUserHandlerOptions,
|
|
4548
4934
|
getSourceCandidatesForEntries: scopedSourceCandidateGetter,
|
|
4549
4935
|
sourceCandidates: scopedGeneratorRuntime,
|
|
4936
|
+
generatorPlatform,
|
|
4550
4937
|
styleHandler,
|
|
4551
4938
|
debug,
|
|
4552
4939
|
previousCss,
|
|
@@ -4554,19 +4941,19 @@ function createGenerateBundleHook(context) {
|
|
|
4554
4941
|
...usesConfiguredTailwindV4FallbackSource ? { restoreLocalCssImports: false } : {}
|
|
4555
4942
|
}) : void 0;
|
|
4556
4943
|
if (generated) {
|
|
4557
|
-
const tracedCss = annotateCss(generated.css);
|
|
4944
|
+
const tracedCss = removeRootCoveredCssFromScopedAsset(annotateCss(transformWebTargetCss(generated.css)));
|
|
4558
4945
|
registerGeneratorDependencies$1({ addWatchFile }, generated.dependencies);
|
|
4559
4946
|
if (envFlags.debugCssDiff) debug("css diff %s: %s", generatorSourceFile, require_source_candidate_scan_signature.summarizeStringDiff(generatorRawSource, tracedCss));
|
|
4560
4947
|
debug("css generated result: %s bytes=%d", file, tracedCss.length);
|
|
4561
4948
|
for (const candidate of generated.classSet ?? []) transformRuntime.add(candidate);
|
|
4562
4949
|
recordCssAssetResult?.(outputFile, tracedCss);
|
|
4563
|
-
recordViteProcessedCssAssetResult?.(
|
|
4950
|
+
if (shouldRecordVitePipelineCssByOutput) recordViteProcessedCssAssetResult?.(vitePipelineCssInjectionOutputFile, tracedCss, {
|
|
4564
4951
|
injectIntoMain: outputCssHandlerOptions.isMainChunk ? false : shouldInjectVitePipelineCssIntoMain,
|
|
4565
|
-
outputFile
|
|
4952
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4566
4953
|
});
|
|
4567
4954
|
if (vitePipelineCssAsset && shouldInjectVitePipelineCssIntoMain) recordViteProcessedCssAssetResult?.(file, tracedCss, {
|
|
4568
4955
|
injectIntoMain: shouldInjectVitePipelineCssIntoMain,
|
|
4569
|
-
outputFile
|
|
4956
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4570
4957
|
});
|
|
4571
4958
|
metrics.css.elapsed += measureElapsed(start);
|
|
4572
4959
|
metrics.css.transformed++;
|
|
@@ -4574,10 +4961,11 @@ function createGenerateBundleHook(context) {
|
|
|
4574
4961
|
return tracedCss;
|
|
4575
4962
|
}
|
|
4576
4963
|
if (isWebGeneratorTarget) {
|
|
4964
|
+
const outputCss = transformWebTargetCss(rawSource);
|
|
4577
4965
|
metrics.css.elapsed += measureElapsed(start);
|
|
4578
4966
|
metrics.css.transformed++;
|
|
4579
4967
|
debug("css preserve web target: %s", outputFile);
|
|
4580
|
-
return annotateCss(
|
|
4968
|
+
return annotateCss(outputCss);
|
|
4581
4969
|
}
|
|
4582
4970
|
const { css } = await styleHandler(generatorRawSource, cssHandlerOptions);
|
|
4583
4971
|
const tracedCss = annotateCss(css);
|
|
@@ -4597,7 +4985,7 @@ function createGenerateBundleHook(context) {
|
|
|
4597
4985
|
continue;
|
|
4598
4986
|
}
|
|
4599
4987
|
if (type !== "js") continue;
|
|
4600
|
-
if (isWebGeneratorTarget) {
|
|
4988
|
+
if (isWebGeneratorTarget && !shouldApplyWebviewSafeSelectors) {
|
|
4601
4989
|
debug("js skip web target: %s", file);
|
|
4602
4990
|
continue;
|
|
4603
4991
|
}
|
|
@@ -4643,6 +5031,7 @@ function createGenerateBundleHook(context) {
|
|
|
4643
5031
|
debug,
|
|
4644
5032
|
defaultStyleOutputExtension,
|
|
4645
5033
|
emitOrReplayCssAsset,
|
|
5034
|
+
generatorPlatform,
|
|
4646
5035
|
generatorRuntime,
|
|
4647
5036
|
getCssHandlerOptions,
|
|
4648
5037
|
getCssUserHandlerOptions,
|
|
@@ -4722,12 +5111,19 @@ function createGenerateBundleHook(context) {
|
|
|
4722
5111
|
tasks,
|
|
4723
5112
|
timingDetails,
|
|
4724
5113
|
transformRuntime,
|
|
5114
|
+
transformWebTargetCss,
|
|
4725
5115
|
useIncrementalMode
|
|
4726
5116
|
});
|
|
4727
5117
|
};
|
|
4728
5118
|
}
|
|
4729
5119
|
//#endregion
|
|
4730
5120
|
//#region src/bundlers/vite/css-finalizer.ts
|
|
5121
|
+
function inferPlatformFromViteOutDir(outDir) {
|
|
5122
|
+
const segment = outDir ? node_path.default.basename(node_path.default.normalize(outDir)) : void 0;
|
|
5123
|
+
if (!segment) return;
|
|
5124
|
+
const normalized = segment.trim().toLowerCase();
|
|
5125
|
+
if (normalized === "h5" || normalized === "web" || normalized === "app" || normalized === "app-plus" || normalized.startsWith("app-") || normalized.startsWith("mp-") || normalized.startsWith("quickapp-webview")) return normalized;
|
|
5126
|
+
}
|
|
4731
5127
|
function isAddWatchFileInvalidRollupPhaseError(error) {
|
|
4732
5128
|
const candidate = error;
|
|
4733
5129
|
return candidate?.code === "INVALID_ROLLUP_PHASE" || candidate?.pluginCode === "INVALID_ROLLUP_PHASE" || candidate?.message?.includes("Cannot call \"addWatchFile\" after the build has finished.") === true;
|
|
@@ -4771,8 +5167,13 @@ function shouldFinalizeProcessedCssAsset(opts, file) {
|
|
|
4771
5167
|
function collectViteProcessedCssSources(getViteProcessedCssAssetResults) {
|
|
4772
5168
|
return [...getViteProcessedCssAssetResults?.() ?? []].map(([, record]) => typeof record === "string" ? record : record.css);
|
|
4773
5169
|
}
|
|
4774
|
-
function
|
|
4775
|
-
|
|
5170
|
+
function isUniAppViteWebviewOutDir(outDir) {
|
|
5171
|
+
const normalized = outDir ? node_path.default.basename(node_path.default.normalize(outDir)).trim().toLowerCase() : void 0;
|
|
5172
|
+
return normalized === "app" || normalized === "app-plus";
|
|
5173
|
+
}
|
|
5174
|
+
function finalizeWebCss(css, enabled, webCompat, options = {}) {
|
|
5175
|
+
const compatCss = enabled ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, webCompat) : css;
|
|
5176
|
+
return options.safeSelectors ? (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)(compatCss, { escapeMap: options.escapeMap }) : compatCss;
|
|
4776
5177
|
}
|
|
4777
5178
|
function createViteCssFinalizerOutputPlugin(context) {
|
|
4778
5179
|
return {
|
|
@@ -4784,24 +5185,27 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4784
5185
|
const { opts, runtimeState, ensureRuntimeClassSet, isCssAssetProcessed, markCssAssetProcessed, debug, getResolvedConfig, recordCssAssetResult, recordViteProcessedCssAssetResult, getViteProcessedCssAssetResults, getRecordedGeneratorCandidates, getSourceCandidates, getSourceCandidatesForEntries, getSourceCandidateSourcesForEntries, waitForSourceCandidateSyncs, rememberMainCssSource, getRememberedMainCssSource, isViteProcessedCssAsset } = context;
|
|
4785
5186
|
const resolvedConfig = getResolvedConfig();
|
|
4786
5187
|
const uniUtsPlatform = require_utils.resolveUniUtsPlatform();
|
|
5188
|
+
const generatorPlatform = opts.cssOptions?.platform ?? opts.platform ?? inferPlatformFromViteOutDir(resolvedConfig?.build?.outDir);
|
|
4787
5189
|
const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(opts.generator, {
|
|
4788
5190
|
appType: opts.appType,
|
|
4789
|
-
platform:
|
|
5191
|
+
platform: generatorPlatform,
|
|
4790
5192
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
4791
5193
|
uniAppX: opts.uniAppX,
|
|
4792
5194
|
uniUtsPlatform
|
|
4793
5195
|
});
|
|
4794
5196
|
const generatorBranch = require_generator.resolveGeneratorRuntimeBranch(generatorOptions, {
|
|
4795
5197
|
appType: opts.appType,
|
|
4796
|
-
platform:
|
|
5198
|
+
platform: generatorPlatform,
|
|
4797
5199
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
4798
5200
|
uniAppX: opts.uniAppX,
|
|
4799
5201
|
uniUtsPlatform
|
|
4800
5202
|
});
|
|
4801
5203
|
const isWebGeneratorTarget = generatorBranch.isWeb;
|
|
4802
|
-
const
|
|
4803
|
-
const
|
|
4804
|
-
const
|
|
5204
|
+
const shouldApplyWebviewSafeSelectors = opts.appType === "uni-app-vite" && isUniAppViteWebviewOutDir(resolvedConfig?.build?.outDir);
|
|
5205
|
+
const isUniAppXStyleTarget = opts.appType === "uni-app-x";
|
|
5206
|
+
const canInferHarmonyAppStyleTarget = isUniAppXStyleTarget && (!uniUtsPlatform.normalized || uniUtsPlatform.isApp);
|
|
5207
|
+
const isHarmonyAppStyleTarget = isUniAppXStyleTarget && (uniUtsPlatform.isAppHarmony || canInferHarmonyAppStyleTarget && (isUniAppXHarmonyBundle(bundle) || isUniAppXHarmonyOutDir(resolvedConfig?.build?.outDir)));
|
|
5208
|
+
const isNativeAppStyleTarget = isUniAppXStyleTarget && (uniUtsPlatform.isApp || isHarmonyAppStyleTarget);
|
|
4805
5209
|
if (resolvedConfig?.command !== "build" && !isNativeAppStyleTarget) return;
|
|
4806
5210
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
4807
5211
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType) ?? resolveSourceRootFromBundleGraph(resolvedConfig, bundle);
|
|
@@ -4818,7 +5222,10 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4818
5222
|
recordCssAssetResult,
|
|
4819
5223
|
recordViteProcessedCssAssetResult,
|
|
4820
5224
|
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, isNativeAppStyleTarget, sourceRoot, resolveMiniProgramStyleOutputExtension({ files: Object.keys(bundle) }), Object.keys(bundle)),
|
|
4821
|
-
transformCss: (css) => finalizeWebCss(css, generatorBranch.isWeb, generatorOptions.webCompat
|
|
5225
|
+
transformCss: (css) => finalizeWebCss(css, generatorBranch.isWeb, generatorOptions.webCompat, {
|
|
5226
|
+
escapeMap: opts.escapeMap,
|
|
5227
|
+
safeSelectors: shouldApplyWebviewSafeSelectors
|
|
5228
|
+
}),
|
|
4822
5229
|
debug
|
|
4823
5230
|
});
|
|
4824
5231
|
};
|
|
@@ -4828,6 +5235,10 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4828
5235
|
getViteProcessedCssAssetResults,
|
|
4829
5236
|
markCssAssetProcessed,
|
|
4830
5237
|
recordCssAssetResult,
|
|
5238
|
+
transformCss: (css) => finalizeWebCss(css, generatorBranch.isWeb, generatorOptions.webCompat, {
|
|
5239
|
+
escapeMap: opts.escapeMap,
|
|
5240
|
+
safeSelectors: shouldApplyWebviewSafeSelectors
|
|
5241
|
+
}),
|
|
4831
5242
|
debug,
|
|
4832
5243
|
onUpdate: opts.onUpdate
|
|
4833
5244
|
});
|
|
@@ -4853,6 +5264,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4853
5264
|
isMainChunk: false
|
|
4854
5265
|
},
|
|
4855
5266
|
getSourceCandidatesForEntries,
|
|
5267
|
+
generatorPlatform,
|
|
4856
5268
|
styleHandler: opts.styleHandler,
|
|
4857
5269
|
debug
|
|
4858
5270
|
});
|
|
@@ -4891,7 +5303,10 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4891
5303
|
const file = output.fileName || bundleFile;
|
|
4892
5304
|
const rawSource = output.source.toString();
|
|
4893
5305
|
if (isViteProcessedCssAsset?.(output, file)) {
|
|
4894
|
-
const nextCss = annotateCss(finalizeWebCss(require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(rawSource), generatorBranch.isWeb, generatorOptions.webCompat
|
|
5306
|
+
const nextCss = annotateCss(finalizeWebCss(require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(rawSource), generatorBranch.isWeb, generatorOptions.webCompat, {
|
|
5307
|
+
escapeMap: opts.escapeMap,
|
|
5308
|
+
safeSelectors: shouldApplyWebviewSafeSelectors
|
|
5309
|
+
}));
|
|
4895
5310
|
output.source = nextCss;
|
|
4896
5311
|
markCssAssetProcessed(output, file);
|
|
4897
5312
|
recordCssAssetResult?.(file, nextCss);
|
|
@@ -4922,10 +5337,14 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4922
5337
|
cssHandlerOptions: generatorCssHandlerOptions,
|
|
4923
5338
|
cssUserHandlerOptions: generatorCssUserHandlerOptions,
|
|
4924
5339
|
getSourceCandidatesForEntries,
|
|
5340
|
+
generatorPlatform,
|
|
4925
5341
|
styleHandler: opts.styleHandler,
|
|
4926
5342
|
debug
|
|
4927
5343
|
}) : void 0;
|
|
4928
|
-
const nextCss = annotateCss(generated?.css ?? (generatorBranch.isWeb ? finalizeWebCss(rawSource, true, generatorOptions.webCompat
|
|
5344
|
+
const nextCss = annotateCss(generated?.css ?? (generatorBranch.isWeb ? finalizeWebCss(rawSource, true, generatorOptions.webCompat, {
|
|
5345
|
+
escapeMap: opts.escapeMap,
|
|
5346
|
+
safeSelectors: shouldApplyWebviewSafeSelectors
|
|
5347
|
+
}) : (await opts.styleHandler(rawSource, cssHandlerOptions)).css));
|
|
4929
5348
|
if (generated) {
|
|
4930
5349
|
registerGeneratorDependencies(this, generated.dependencies);
|
|
4931
5350
|
debug("css finalizer generated result: %s bytes=%d", file, nextCss.length);
|
|
@@ -5074,6 +5493,7 @@ function createViteCssMemory(options) {
|
|
|
5074
5493
|
for (const [rememberedKey, remembered] of relatedRememberedEntries) {
|
|
5075
5494
|
touchMapEntry(rememberedCssSources, rememberedKey, {
|
|
5076
5495
|
...remembered,
|
|
5496
|
+
outputFile: entry.outputFile,
|
|
5077
5497
|
rawSource: entry.rawSource,
|
|
5078
5498
|
sourceFile: entry.sourceFile
|
|
5079
5499
|
});
|
|
@@ -5724,6 +6144,15 @@ function sameStringList(first, second) {
|
|
|
5724
6144
|
if (!first || !second || first.length !== second.length) return false;
|
|
5725
6145
|
return first.every((item, index) => item === second[index]);
|
|
5726
6146
|
}
|
|
6147
|
+
function collectConfiguredCssEntries(options) {
|
|
6148
|
+
const runtimeCssEntries = options.tailwindcssRuntimeOptions?.tailwindcss?.v4?.cssEntries;
|
|
6149
|
+
const entries = [
|
|
6150
|
+
...Array.isArray(options.cssEntries) ? options.cssEntries : [],
|
|
6151
|
+
...Array.isArray(options.tailwindcss?.v4?.cssEntries) ? options.tailwindcss.v4.cssEntries : [],
|
|
6152
|
+
...Array.isArray(runtimeCssEntries) ? runtimeCssEntries : []
|
|
6153
|
+
].filter((item) => typeof item === "string" && item.length > 0);
|
|
6154
|
+
return entries.length > 0 ? [...new Set(entries)] : void 0;
|
|
6155
|
+
}
|
|
5727
6156
|
function normalizeViteStylePlatform(value, appType) {
|
|
5728
6157
|
return require_context.normalizeFrameworkStylePlatform(value, appType);
|
|
5729
6158
|
}
|
|
@@ -5736,6 +6165,13 @@ function inferPlatformFromOutDir(outDir) {
|
|
|
5736
6165
|
function isWebOrNativeAppPlatform(platform) {
|
|
5737
6166
|
return platform === "h5" || platform === "web" || platform?.startsWith("web-") === true || platform === "app" || platform === "app-plus" || platform?.startsWith("app-") === true;
|
|
5738
6167
|
}
|
|
6168
|
+
function isUniAppViteWebviewStylePlatform(platform) {
|
|
6169
|
+
return platform === "app" || platform === "app-plus";
|
|
6170
|
+
}
|
|
6171
|
+
function applyUniAppViteWebviewCssCompat(css, options) {
|
|
6172
|
+
const compatCss = (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, options.compat);
|
|
6173
|
+
return options.safeSelectors ? (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)(compatCss, { escapeMap: options.escapeMap }) : compatCss;
|
|
6174
|
+
}
|
|
5739
6175
|
/**
|
|
5740
6176
|
* @name WeappTailwindcss
|
|
5741
6177
|
* @description uni-app vite / uni-app-x 版本插件
|
|
@@ -5744,7 +6180,7 @@ function isWebOrNativeAppPlatform(platform) {
|
|
|
5744
6180
|
function WeappTailwindcss(options = {}) {
|
|
5745
6181
|
const hasExplicitAppType = typeof options.appType === "string" && options.appType.trim().length > 0;
|
|
5746
6182
|
const hasExplicitTailwindcssBasedir = typeof options.tailwindcssBasedir === "string" && options.tailwindcssBasedir.trim().length > 0;
|
|
5747
|
-
const rawCssEntries =
|
|
6183
|
+
const rawCssEntries = collectConfiguredCssEntries(options);
|
|
5748
6184
|
const opts = require_context.getCompilerContext({
|
|
5749
6185
|
...options,
|
|
5750
6186
|
__internalDeferMissingCssEntriesWarning: true
|
|
@@ -5772,18 +6208,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
5772
6208
|
if (!disabledOptions.plugin && tailwindcssMajorVersion !== 4) throw new Error("weapp-tailwindcss/vite 新生成管线仅支持 Tailwind CSS v4,请升级 tailwindcss 或停留在旧版 weapp-tailwindcss。");
|
|
5773
6209
|
const shouldOwnTailwindGeneration = !disabledOptions.plugin;
|
|
5774
6210
|
const shouldRewriteCssImports = opts.rewriteCssImports === true;
|
|
5775
|
-
|
|
5776
|
-
appType: opts.appType,
|
|
5777
|
-
platform: opts.cssOptions?.platform ?? opts.platform,
|
|
5778
|
-
tailwindcssMajorVersion,
|
|
5779
|
-
uniAppX
|
|
5780
|
-
});
|
|
5781
|
-
const generatorBranch = require_generator.resolveGeneratorRuntimeBranch(generatorOptions, {
|
|
5782
|
-
appType: opts.appType,
|
|
5783
|
-
platform: opts.cssOptions?.platform ?? opts.platform,
|
|
5784
|
-
tailwindcssMajorVersion,
|
|
5785
|
-
uniAppX
|
|
5786
|
-
});
|
|
6211
|
+
let resolvedConfig;
|
|
5787
6212
|
const resolveViteStylePlatform = () => {
|
|
5788
6213
|
const explicit = normalizeViteStylePlatform(opts.cssOptions?.platform ?? opts.platform, opts.appType);
|
|
5789
6214
|
if (explicit) return explicit;
|
|
@@ -5793,9 +6218,23 @@ function WeappTailwindcss(options = {}) {
|
|
|
5793
6218
|
}
|
|
5794
6219
|
return inferPlatformFromOutDir(resolvedConfig?.build?.outDir);
|
|
5795
6220
|
};
|
|
6221
|
+
const resolveGeneratorPlatform = () => opts.cssOptions?.platform ?? opts.platform ?? resolveViteStylePlatform();
|
|
6222
|
+
const resolveCurrentGeneratorOptions = () => require_generator.normalizeWeappTailwindcssGeneratorOptions(opts.generator, {
|
|
6223
|
+
appType: opts.appType,
|
|
6224
|
+
platform: resolveGeneratorPlatform(),
|
|
6225
|
+
tailwindcssMajorVersion,
|
|
6226
|
+
uniAppX
|
|
6227
|
+
});
|
|
6228
|
+
const resolveCurrentGeneratorBranch = () => require_generator.resolveGeneratorRuntimeBranch(resolveCurrentGeneratorOptions(), {
|
|
6229
|
+
appType: opts.appType,
|
|
6230
|
+
platform: resolveGeneratorPlatform(),
|
|
6231
|
+
tailwindcssMajorVersion,
|
|
6232
|
+
uniAppX
|
|
6233
|
+
});
|
|
6234
|
+
const initialGeneratorBranch = resolveCurrentGeneratorBranch();
|
|
5796
6235
|
const transformEarlyMiniProgramCss = (code) => {
|
|
5797
6236
|
const platform = resolveViteStylePlatform();
|
|
5798
|
-
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) :
|
|
6237
|
+
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) : resolveCurrentGeneratorBranch().isWeb)) return code;
|
|
5799
6238
|
let transformedCode = code;
|
|
5800
6239
|
if (transformedCode.includes("#if")) transformedCode = (0, _weapp_tailwindcss_postcss.compileCssMacroConditionalComments)(transformedCode, { platform: resolveViteStylePlatform() });
|
|
5801
6240
|
if (transformedCode.includes("@layer")) transformedCode = (0, _weapp_tailwindcss_postcss.unwrapUnsupportedCascadeLayers)(transformedCode);
|
|
@@ -5803,10 +6242,10 @@ function WeappTailwindcss(options = {}) {
|
|
|
5803
6242
|
};
|
|
5804
6243
|
const finalizeViteMiniProgramCss = (css) => {
|
|
5805
6244
|
const platform = resolveViteStylePlatform();
|
|
5806
|
-
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) :
|
|
6245
|
+
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) : resolveCurrentGeneratorBranch().isWeb)) return css;
|
|
5807
6246
|
return (0, _weapp_tailwindcss_postcss.unwrapUnsupportedCascadeLayers)(css);
|
|
5808
6247
|
};
|
|
5809
|
-
const shouldInferAppType = !hasExplicitAppType && !
|
|
6248
|
+
const shouldInferAppType = !hasExplicitAppType && !initialGeneratorBranch.isWeb;
|
|
5810
6249
|
const hasInitialTailwindCssRoots = require_v4_engine.hasConfiguredTailwindV4CssRoots({
|
|
5811
6250
|
...options,
|
|
5812
6251
|
cssEntries: opts.cssEntries ?? options.cssEntries
|
|
@@ -5886,7 +6325,6 @@ function WeappTailwindcss(options = {}) {
|
|
|
5886
6325
|
await refreshRuntimeStateForAutoCssSources?.(true);
|
|
5887
6326
|
};
|
|
5888
6327
|
const customAttributesEntities = require_context.toCustomAttributesEntities(customAttributes);
|
|
5889
|
-
let resolvedConfig;
|
|
5890
6328
|
let recordedGeneratorCandidates;
|
|
5891
6329
|
const sourceCandidateCollector = require_hmr_timing.createSourceCandidateCollector({ bareArbitraryValues: opts.arbitraryValues?.bareArbitraryValues });
|
|
5892
6330
|
const sourceCandidateScanCache = new lru_cache.LRUCache({ max: SOURCE_CANDIDATE_SCAN_CACHE_MAX });
|
|
@@ -5944,7 +6382,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
5944
6382
|
const isWatchLikeBuild = () => isWatchBuild() || resolvedConfig?.command === "serve" || node_process.default.env["WEAPP_TW_WATCH_REGRESSION"] === "1" || node_process.default.env["WEAPP_TW_HMR_TIMING"] === "1";
|
|
5945
6383
|
const isCurrentWebLikeStylePlatform = () => {
|
|
5946
6384
|
const platform = resolveViteStylePlatform();
|
|
5947
|
-
return platform ? isWebOrNativeAppPlatform(platform) :
|
|
6385
|
+
return platform ? isWebOrNativeAppPlatform(platform) : resolveCurrentGeneratorBranch().isWeb;
|
|
5948
6386
|
};
|
|
5949
6387
|
const isNuxtPageMacroHotModule = (id) => {
|
|
5950
6388
|
if (typeof id !== "string" || !/[?&]macro=true(?:&|$)/.test(id)) return false;
|
|
@@ -6164,48 +6602,58 @@ function WeappTailwindcss(options = {}) {
|
|
|
6164
6602
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6165
6603
|
const requestFile = require_source_candidate_scan_signature.isCSSRequest(id) ? id : file;
|
|
6166
6604
|
if (!require_source_candidate_scan_signature.isCSSRequest(requestFile) || opts.htmlMatcher(file) || require_source_candidate_scan_signature.isHTMLRequest(file)) return;
|
|
6605
|
+
const generatorCode = require_v4_engine.normalizeEmptyTailwindCustomVariants(code);
|
|
6167
6606
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
6168
6607
|
const isHarmonyAppStyleTarget = isHarmonyAppBuildTarget();
|
|
6169
|
-
const isNativeAppStyleTarget = require_utils.resolveUniUtsPlatform().isApp || isHarmonyAppStyleTarget;
|
|
6608
|
+
const isNativeAppStyleTarget = opts.appType === "uni-app-x" && (require_utils.resolveUniUtsPlatform().isApp || isHarmonyAppStyleTarget);
|
|
6170
6609
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType);
|
|
6171
|
-
const
|
|
6610
|
+
const currentGeneratorOptions = resolveCurrentGeneratorOptions();
|
|
6611
|
+
const currentGeneratorBranch = resolveCurrentGeneratorBranch();
|
|
6612
|
+
const outputFile = resolveViteCssPipelineOutputFile(requestFile, opts, rootDir, currentGeneratorBranch.isWeb, isNativeAppStyleTarget, sourceRoot);
|
|
6172
6613
|
const runtime = getRecordedGeneratorCandidates() ?? getSourceCandidates() ?? await ensureRuntimeClassSet();
|
|
6173
6614
|
const outputCssHandlerOptions = transformCssHandlerOptions.getCssHandlerOptions(outputFile);
|
|
6174
6615
|
const cssHandlerOptions = {
|
|
6175
6616
|
...transformCssHandlerOptions.getCssHandlerOptions(file),
|
|
6176
6617
|
isMainChunk: outputCssHandlerOptions.isMainChunk
|
|
6177
6618
|
};
|
|
6178
|
-
const transientCssSource = transientAutoCssSources.get(file) ?? (require_v4_engine.hasTailwindRootDirectives(
|
|
6619
|
+
const transientCssSource = transientAutoCssSources.get(file) ?? (require_v4_engine.hasTailwindRootDirectives(generatorCode, { importFallback: currentGeneratorOptions.importFallback }) || require_v4_engine.hasTailwindSourceDirectives(generatorCode, { importFallback: currentGeneratorOptions.importFallback }) || require_v4_engine.hasTailwindApplyDirective(generatorCode) ? {
|
|
6179
6620
|
base: node_path.default.dirname(node_path.default.resolve(file)),
|
|
6180
|
-
css:
|
|
6621
|
+
css: generatorCode,
|
|
6181
6622
|
file: node_path.default.resolve(file)
|
|
6182
6623
|
} : void 0);
|
|
6183
|
-
const shouldDeferEmptyScopedCssSource = transientCssSource == null && !(opts.appType === "uni-app-x" && !cssHandlerOptions.isMainChunk && require_v4_engine.hasTailwindApplyDirective(
|
|
6624
|
+
const shouldDeferEmptyScopedCssSource = transientCssSource == null && !(opts.appType === "uni-app-x" && !cssHandlerOptions.isMainChunk && require_v4_engine.hasTailwindApplyDirective(generatorCode));
|
|
6184
6625
|
const generated = await require_source_candidate_scan_signature.generateTailwindV4Css({
|
|
6185
6626
|
opts,
|
|
6186
6627
|
runtimeState,
|
|
6187
6628
|
runtime,
|
|
6188
|
-
rawSource:
|
|
6629
|
+
rawSource: generatorCode,
|
|
6189
6630
|
file,
|
|
6190
6631
|
outputFile,
|
|
6191
6632
|
cssHandlerOptions,
|
|
6192
6633
|
cssUserHandlerOptions: transformCssHandlerOptions.getCssUserHandlerOptions(file),
|
|
6193
6634
|
cssSources: transientCssSource ? [transientCssSource] : void 0,
|
|
6194
6635
|
getSourceCandidatesForEntries,
|
|
6636
|
+
generatorPlatform: resolveGeneratorPlatform(),
|
|
6195
6637
|
styleHandler,
|
|
6196
6638
|
debug,
|
|
6197
6639
|
previousCss: viteGeneratedCssByFile.get(file),
|
|
6198
6640
|
deferEmptyScopedCssSource: shouldDeferEmptyScopedCssSource,
|
|
6199
|
-
restoreLocalCssImports: !
|
|
6641
|
+
restoreLocalCssImports: !currentGeneratorBranch.isWeb
|
|
6200
6642
|
});
|
|
6201
6643
|
if (!generated) return;
|
|
6202
|
-
const
|
|
6644
|
+
const finalizedCss = finalizeViteMiniProgramCss(generated.css);
|
|
6645
|
+
const isUniAppViteWebviewPlatform = opts.appType === "uni-app-vite" && isUniAppViteWebviewStylePlatform(resolveViteStylePlatform());
|
|
6646
|
+
const tracedCss = require_hmr_timing.annotateCssSourceTrace(removeScopedTailwindPreflightCss(currentGeneratorBranch.isWeb || isUniAppViteWebviewPlatform ? applyUniAppViteWebviewCssCompat(finalizedCss, {
|
|
6647
|
+
compat: currentGeneratorOptions.webCompat ?? true,
|
|
6648
|
+
escapeMap: opts.escapeMap,
|
|
6649
|
+
safeSelectors: isUniAppViteWebviewPlatform
|
|
6650
|
+
}) : finalizedCss), {
|
|
6203
6651
|
opts,
|
|
6204
6652
|
tokenSources: require_hmr_timing.createCssTokenSourceMap(getSourceCandidateSourcesForEntries(void 0), opts)
|
|
6205
6653
|
});
|
|
6206
6654
|
for (const dependency of generated.dependencies) hookContext?.addWatchFile?.(dependency);
|
|
6207
6655
|
viteGeneratedCssByFile.set(file, tracedCss);
|
|
6208
|
-
const shouldInjectGeneratedCssIntoMain = mainCssChunkMatcher(outputFile, opts.appType) || require_v4_engine.hasTailwindRootDirectives(
|
|
6656
|
+
const shouldInjectGeneratedCssIntoMain = mainCssChunkMatcher(outputFile, opts.appType) || require_v4_engine.hasTailwindRootDirectives(generatorCode, { importFallback: currentGeneratorOptions.importFallback }) && !require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile).includes("/");
|
|
6209
6657
|
recordViteProcessedCssAssetResult(file, tracedCss, {
|
|
6210
6658
|
injectIntoMain: shouldInjectGeneratedCssIntoMain,
|
|
6211
6659
|
outputFile
|
|
@@ -6237,7 +6685,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
6237
6685
|
onTailwindRootCss: (id, code) => registerAutoCssSource(id, code),
|
|
6238
6686
|
onCssSourceTransform: (id, code) => cssMemory.refreshRememberedCssSourceBySourceFile(id, code),
|
|
6239
6687
|
shouldGenerateCss: (_id, code) => hasVitePipelineTailwindGenerationDirective(code),
|
|
6240
|
-
shouldDeferGeneration: (_id, code) => !shouldRewriteCssImports && require_v4_engine.hasTailwindRootDirectives(code, { importFallback:
|
|
6688
|
+
shouldDeferGeneration: (_id, code) => !shouldRewriteCssImports && require_v4_engine.hasTailwindRootDirectives(code, { importFallback: resolveCurrentGeneratorOptions().importFallback }),
|
|
6241
6689
|
shouldOwnTailwindGeneration,
|
|
6242
6690
|
shouldRewrite: shouldRewriteCssImports,
|
|
6243
6691
|
weappTailwindcssDirPosix
|
|
@@ -6336,7 +6784,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
6336
6784
|
order: "pre",
|
|
6337
6785
|
async handler(code, id) {
|
|
6338
6786
|
let transformedCode = code;
|
|
6339
|
-
if (shouldOwnTailwindGeneration && !
|
|
6787
|
+
if (shouldOwnTailwindGeneration && !resolveCurrentGeneratorBranch().isWeb && require_source_candidate_scan_signature.isCSSRequest(id)) transformedCode = transformEarlyMiniProgramCss(code);
|
|
6340
6788
|
const shouldReturnTransformedCode = transformedCode !== code;
|
|
6341
6789
|
if (shouldOwnTailwindGeneration) cssMemory.rememberKnownSfcSource(id, transformedCode);
|
|
6342
6790
|
if (!shouldOwnTailwindGeneration || !require_hmr_timing.isSourceCandidateRequest(id) || !shouldCollectTransformedSourceCandidates(id)) {
|
|
@@ -6416,10 +6864,10 @@ function WeappTailwindcss(options = {}) {
|
|
|
6416
6864
|
shouldGenerate: () => shouldOwnTailwindGeneration
|
|
6417
6865
|
}),
|
|
6418
6866
|
createViteServeJsTransformPlugin({
|
|
6419
|
-
createHandlerOptions: serveJsHandlerOptions,
|
|
6867
|
+
createHandlerOptions: (file) => serveJsHandlerOptions(file, opts.appType === "uni-app-vite" && isUniAppViteWebviewStylePlatform(resolveViteStylePlatform()) ? { needEscaped: true } : void 0),
|
|
6420
6868
|
getCommand: () => resolvedConfig?.command,
|
|
6421
6869
|
jsHandler,
|
|
6422
|
-
shouldTransform: () => shouldOwnTailwindGeneration && !
|
|
6870
|
+
shouldTransform: () => shouldOwnTailwindGeneration && (!resolveCurrentGeneratorBranch().isWeb || opts.appType === "uni-app-vite" && isUniAppViteWebviewStylePlatform(resolveViteStylePlatform())),
|
|
6423
6871
|
transformRuntime: ensureRuntimeClassSet
|
|
6424
6872
|
}),
|
|
6425
6873
|
{
|