weapp-tailwindcss 5.1.4 → 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/generation-helpers.d.ts +8 -2
- package/dist/bundlers/shared/generator-css/source-resolver/metadata.d.ts +5 -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/generate-bundle/tailwind-v4-css-source.d.ts +6 -3
- package/dist/bundlers/vite/hot-css-modules.d.ts +1 -0
- package/dist/bundlers/vite/processed-css-assets.d.ts +7 -0
- package/dist/bundlers/vite/source-scan/css-entries.d.ts +1 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/pipeline-helpers.d.ts +2 -1
- package/dist/cli.js +18 -3
- package/dist/cli.mjs +16 -1
- package/dist/{context-Bkpmt3ja.mjs → context-3GGqW9vw.mjs} +20 -5
- package/dist/{context-DCVMkTRj.js → context-BCSk_YnL.js} +23 -8
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/css-macro/index.d.ts +2 -1
- package/dist/{defaults-BhE26nSw.mjs → defaults-9B6aMyZb.mjs} +2 -2
- package/dist/{defaults-DQhgnnn-.js → defaults-nsf4VNMX.js} +2 -2
- package/dist/defaults.d.ts +1 -1
- package/dist/defaults.js +1 -1
- package/dist/defaults.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-0RsqkF_d.mjs → gulp-Bss4wJ8t.mjs} +4 -4
- package/dist/{gulp-Bogfnoki.js → gulp-hXE1U4Cu.js} +4 -4
- package/dist/gulp.js +1 -1
- package/dist/gulp.mjs +1 -1
- package/dist/{hmr-timing-BRNaz8Od.mjs → hmr-timing-Cfu-4Bnf.mjs} +229 -576
- package/dist/{hmr-timing-BV6nFPoT.js → hmr-timing-Df4203aI.js} +253 -630
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/js/js-string-escape.d.ts +1 -0
- 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-CaDT0gkj.js → source-candidate-scan-signature-5Uk6U72B.js} +168 -5
- package/dist/{source-candidate-scan-signature-BB1hvW68.mjs → source-candidate-scan-signature-BbCmW975.mjs} +157 -6
- package/dist/style-injector/internal.d.ts +7 -0
- package/dist/style-injector/options.d.ts +25 -0
- package/dist/tailwindcss/v4/preflight.d.ts +4 -0
- package/dist/{tailwindcss-D0JF0fuZ.mjs → tailwindcss-Bjr3aphG.mjs} +62 -15
- package/dist/{tailwindcss-D2xs4OEu.js → tailwindcss-DYJ3HZD2.js} +67 -14
- package/dist/{transform-BP86eSZp.mjs → transform--155BmeJ.mjs} +1 -1
- package/dist/{transform-CXCQ28Tc.js → transform-B6_y_yCB.js} +1 -1
- package/dist/typedoc.export.d.ts +1 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/user-defined-options/general.d.ts +2 -0
- 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-BYgT1ir9.js → vite-Baw9qNrc.js} +652 -140
- package/dist/{vite-B1SlBmqO.mjs → vite-PdxjaqhO.mjs} +653 -141
- package/dist/vite.js +1 -1
- package/dist/vite.mjs +1 -1
- package/dist/weapp-tw-css-import-rewrite-loader.js +2981 -2752
- package/dist/{webpack-Bg6pefpb.mjs → webpack-BffTDmod.mjs} +69 -26
- package/dist/{webpack-khSwkXP5.js → webpack-C9u7mfGE.js} +74 -31
- package/dist/webpack.js +1 -1
- package/dist/webpack.mjs +1 -1
- package/package.json +16 -5
|
@@ -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));
|
|
@@ -1928,8 +1928,14 @@ function resolveSourceStyleSourceFromOutputFile(outputFile, snapshot, outputRoot
|
|
|
1928
1928
|
//#endregion
|
|
1929
1929
|
//#region src/bundlers/vite/generate-bundle/subpackages.ts
|
|
1930
1930
|
function readBundleAssetSource(output) {
|
|
1931
|
-
if (output.type !== "asset") return;
|
|
1932
|
-
|
|
1931
|
+
if ("type" in output && output.type !== "asset") return;
|
|
1932
|
+
const source = output.source;
|
|
1933
|
+
if (typeof source === "string") return source;
|
|
1934
|
+
if (typeof source === "function") {
|
|
1935
|
+
const value = source.call(output);
|
|
1936
|
+
return typeof value === "string" ? value : value?.toString();
|
|
1937
|
+
}
|
|
1938
|
+
if (source != null && typeof source.toString === "function") return source.toString();
|
|
1933
1939
|
}
|
|
1934
1940
|
function normalizePackageRoot(root) {
|
|
1935
1941
|
return require_source_candidate_scan_signature.normalizeOutputPathKey(root).replace(/\/+$/, "");
|
|
@@ -2014,6 +2020,21 @@ function appendCss$1(baseCss, css) {
|
|
|
2014
2020
|
if (css.length === 0) return baseCss;
|
|
2015
2021
|
return `${baseCss}\n${css}`;
|
|
2016
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
|
+
}
|
|
2017
2038
|
function removeTailwindSourceMediaWrappers(css) {
|
|
2018
2039
|
if (!css.includes("@media source(")) return css;
|
|
2019
2040
|
try {
|
|
@@ -2090,6 +2111,183 @@ function collectRootStyleBundleCssSources(bundle, excludedFile) {
|
|
|
2090
2111
|
}
|
|
2091
2112
|
return sources;
|
|
2092
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
|
+
}
|
|
2093
2291
|
function collectSingleViteGeneratedCssMarkerFile(rawSource) {
|
|
2094
2292
|
const blocks = require_source_candidate_scan_signature.parseBundlerGeneratedCssMarkerBlocks(rawSource).filter((block) => block.bundler === "vite");
|
|
2095
2293
|
if (blocks.length !== 1) return;
|
|
@@ -2102,7 +2300,9 @@ function shouldFilterRootGeneratedCssMarkerForScopedAsset(targetFile, markerFile
|
|
|
2102
2300
|
return !isMatchingGeneratedCssMarkerFile(targetFile, markerFile, resolveViteProcessedCssOutputFile);
|
|
2103
2301
|
}
|
|
2104
2302
|
function removeCssCoveredByRootStyleBundleSources(bundle, file, css) {
|
|
2105
|
-
|
|
2303
|
+
const rootSources = collectRootStyleBundleCssSources(bundle, file);
|
|
2304
|
+
const nextCss = removeScopedCssCoveredByRootStyleSources(removeDanglingCssSourceTraceComments(removeCssCoveredByImportedViteResults(css, rootSources)), rootSources);
|
|
2305
|
+
return hasNonCommentCss(nextCss) ? nextCss : "";
|
|
2106
2306
|
}
|
|
2107
2307
|
function removeDanglingCssSourceTraceComments(css) {
|
|
2108
2308
|
if (!css.includes("/* tokens:")) return css;
|
|
@@ -2126,8 +2326,11 @@ function removeCssCoveredByRootStyleAssets(bundle, options) {
|
|
|
2126
2326
|
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2127
2327
|
if (output.type !== "asset") continue;
|
|
2128
2328
|
const file = getAssetFile$1(bundleFile, output);
|
|
2129
|
-
if (!options.cssMatcher(file) || isRootStyleOutputFile(file) || options.isViteProcessedCssAsset?.(output, file) === true || options.subpackageRoots != null && isSubpackageOutputFile(file, options.subpackageRoots)) continue;
|
|
2130
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;
|
|
2131
2334
|
const nextCss = removeCssCoveredByRootStyleBundleSources(bundle, file, rawSource);
|
|
2132
2335
|
if (nextCss === rawSource) continue;
|
|
2133
2336
|
output.source = nextCss;
|
|
@@ -2180,6 +2383,12 @@ function shouldUseCssAssetAsMainInjectionTarget(opts, file, records) {
|
|
|
2180
2383
|
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2181
2384
|
if (!isRootStyleOutputFile(file) && records.some((record) => typeof record.outputFile === "string" && require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) === fileKey)) return true;
|
|
2182
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);
|
|
2183
2392
|
if (records.some((record) => {
|
|
2184
2393
|
if (record.injectIntoMain !== true) return false;
|
|
2185
2394
|
return isRootStyleOutputFile(file) || typeof record.outputFile === "string" && require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) === fileKey;
|
|
@@ -2200,6 +2409,33 @@ function isViteProcessedCssResultCoveredByImportedBundleAsset(record, importedSt
|
|
|
2200
2409
|
}
|
|
2201
2410
|
return false;
|
|
2202
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
|
+
}
|
|
2203
2439
|
function removeCssCoveredByImportedViteResults(css, importedCssSources) {
|
|
2204
2440
|
if (importedCssSources.length === 0) return css;
|
|
2205
2441
|
const importedCss = importedCssSources.map((source) => require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(source).trim()).filter(Boolean).join("\n");
|
|
@@ -2226,6 +2462,38 @@ function collectBundleAssetFiles(bundle) {
|
|
|
2226
2462
|
}
|
|
2227
2463
|
return files;
|
|
2228
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
|
+
}
|
|
2229
2497
|
function findBundleAssetByOutputFile(bundle, file) {
|
|
2230
2498
|
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2231
2499
|
return Object.entries(bundle).find(([bundleFile, output]) => {
|
|
@@ -2279,6 +2547,8 @@ function collectViteProcessedCssAssetResults(bundle, options) {
|
|
|
2279
2547
|
options.markCssAssetProcessed?.(output, file);
|
|
2280
2548
|
options.recordCssAssetResult?.(file, nextCss);
|
|
2281
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;
|
|
2282
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))) {
|
|
2283
2553
|
const targetAsset = findBundleAssetByOutputFile(bundle, resolvedOutputFile);
|
|
2284
2554
|
if (targetAsset) {
|
|
@@ -2298,24 +2568,24 @@ function collectViteProcessedCssAssetResults(bundle, options) {
|
|
|
2298
2568
|
continue;
|
|
2299
2569
|
}
|
|
2300
2570
|
}
|
|
2301
|
-
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));
|
|
2302
2572
|
options.recordViteProcessedCssAssetResult?.(file, nextCss, {
|
|
2303
2573
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2304
|
-
outputFile:
|
|
2574
|
+
outputFile: recordOutputFile
|
|
2305
2575
|
});
|
|
2306
|
-
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, {
|
|
2307
2577
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2308
|
-
outputFile:
|
|
2578
|
+
outputFile: recordOutputFile
|
|
2309
2579
|
});
|
|
2310
2580
|
for (const markerFile of collectMatchingGeneratedCssMarkerFiles(file, rawSource, options.resolveViteProcessedCssOutputFile)) {
|
|
2311
2581
|
if (require_source_candidate_scan_signature.normalizeOutputPathKey(markerFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(file)) continue;
|
|
2312
2582
|
options.recordViteProcessedCssAssetResult?.(markerFile, nextCss, {
|
|
2313
2583
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2314
|
-
outputFile:
|
|
2584
|
+
outputFile: recordOutputFile
|
|
2315
2585
|
});
|
|
2316
|
-
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, {
|
|
2317
2587
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2318
|
-
outputFile:
|
|
2588
|
+
outputFile: recordOutputFile
|
|
2319
2589
|
});
|
|
2320
2590
|
}
|
|
2321
2591
|
if (isCoveredViteGeneratedSourceAsset(file, existingAssetFiles, options.resolveViteProcessedCssOutputFile)) {
|
|
@@ -2330,7 +2600,8 @@ function collectViteProcessedCssAssetResults(bundle, options) {
|
|
|
2330
2600
|
return collected;
|
|
2331
2601
|
}
|
|
2332
2602
|
function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
2333
|
-
const
|
|
2603
|
+
const transformCss = (css, file) => options.transformCss?.(css, file) ?? css;
|
|
2604
|
+
const viteCssResults = dedupeViteCssResults([...options.getViteProcessedCssAssetResults?.() ?? []].map(([file, record]) => {
|
|
2334
2605
|
return typeof record === "string" ? {
|
|
2335
2606
|
file,
|
|
2336
2607
|
css: record,
|
|
@@ -2341,10 +2612,14 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2341
2612
|
injectIntoMain: record.injectIntoMain,
|
|
2342
2613
|
outputFile: record.outputFile
|
|
2343
2614
|
};
|
|
2344
|
-
}).
|
|
2615
|
+
})).map((record) => ({
|
|
2616
|
+
...record,
|
|
2617
|
+
css: transformCss(record.css, record.outputFile ?? record.file)
|
|
2618
|
+
})).filter((record) => record.css.length > 0);
|
|
2345
2619
|
let injected = 0;
|
|
2346
2620
|
for (const [bundleFile, bundleOutput] of Object.entries(bundle)) {
|
|
2347
2621
|
let output = bundleOutput;
|
|
2622
|
+
if (bundle[bundleFile] !== bundleOutput) continue;
|
|
2348
2623
|
if (output.type !== "asset") continue;
|
|
2349
2624
|
let file = getAssetFile$1(bundleFile, output);
|
|
2350
2625
|
if (!options.opts.cssMatcher(file) || !shouldUseCssAssetAsMainInjectionTarget(options.opts, file, viteCssResults)) continue;
|
|
@@ -2366,7 +2641,7 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2366
2641
|
}
|
|
2367
2642
|
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2368
2643
|
const mainFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2369
|
-
let nextCss = removeTailwindEntryDirectivesFromCss(originalSource);
|
|
2644
|
+
let nextCss = transformCss(removeTailwindEntryDirectivesFromCss(originalSource), file);
|
|
2370
2645
|
const importedStyleFiles = collectImportedStyleFiles(nextCss, file);
|
|
2371
2646
|
const importedBundleCssSources = collectImportedBundleCssSources(bundle, importedStyleFiles);
|
|
2372
2647
|
nextCss = removeCssCoveredByImportedViteResults(nextCss, importedBundleCssSources);
|
|
@@ -2375,12 +2650,14 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2375
2650
|
const uncoveredImportedViteCssResults = importedViteCssResults.filter((record) => !isViteProcessedCssResultCoveredByImportedBundleAsset(record, importedStyleFiles, bundleAssetFiles));
|
|
2376
2651
|
const importedCssSources = [...importedBundleCssSources, ...uncoveredImportedViteCssResults.map((record) => record.css)];
|
|
2377
2652
|
nextCss = removeCssCoveredByImportedViteResults(nextCss, uncoveredImportedViteCssResults.map((record) => record.css));
|
|
2653
|
+
const targetViteCssResults = [];
|
|
2378
2654
|
for (const record of viteCssResults) {
|
|
2379
2655
|
if (!isRootStyleOutputFile(file)) {
|
|
2380
2656
|
if (typeof record.outputFile !== "string" || require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) !== fileKey) continue;
|
|
2381
2657
|
}
|
|
2382
2658
|
if (!shouldInjectViteProcessedCssResult(options.opts, mainFileKey, record.file, record)) continue;
|
|
2383
2659
|
if (isViteProcessedCssResultImported(record, importedStyleFiles)) continue;
|
|
2660
|
+
targetViteCssResults.push(record);
|
|
2384
2661
|
let css = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(record.css).trim();
|
|
2385
2662
|
css = removeCssCoveredByImportedViteResults(css, importedCssSources).trim();
|
|
2386
2663
|
if (css.length === 0) continue;
|
|
@@ -2411,29 +2688,19 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2411
2688
|
if (css.length === 0) continue;
|
|
2412
2689
|
}
|
|
2413
2690
|
const missingCss = (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(nextCss, css);
|
|
2414
|
-
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;
|
|
2415
2692
|
nextCss = appendCss$1(nextCss, missingCss);
|
|
2416
2693
|
}
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
if (!options.shouldRemoveInjectedSourceAsset?.(file, record)) continue;
|
|
2425
|
-
const recordFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(record.file);
|
|
2426
|
-
for (const [candidateFile, candidateOutput] of Object.entries(bundle)) {
|
|
2427
|
-
if (candidateOutput.type !== "asset") continue;
|
|
2428
|
-
const candidateKey = require_source_candidate_scan_signature.normalizeOutputPathKey(getAssetFile$1(candidateFile, candidateOutput));
|
|
2429
|
-
const isRecordFile = candidateKey === recordFileKey;
|
|
2430
|
-
const candidateSource = readAssetSource$2(candidateOutput).trim();
|
|
2431
|
-
const isProcessedSource = candidateSource === record.css.trim() || candidateSource.length > 0 && (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(nextCss, candidateSource);
|
|
2432
|
-
if (!isRecordFile && !isProcessedSource || candidateKey === require_source_candidate_scan_signature.normalizeOutputPathKey(file)) continue;
|
|
2433
|
-
clearAssetSource(candidateOutput);
|
|
2434
|
-
options.debug?.("remove injected vite-processed source css asset: %s -> %s", candidateKey, file);
|
|
2435
|
-
}
|
|
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);
|
|
2436
2701
|
}
|
|
2702
|
+
const removedSources = removeCoveredInjectedSourceAssets(bundle, file, nextCss, targetViteCssResults, options);
|
|
2703
|
+
if (nextCss === originalSource && removedSources === 0) continue;
|
|
2437
2704
|
injected++;
|
|
2438
2705
|
}
|
|
2439
2706
|
return injected;
|
|
@@ -2705,9 +2972,34 @@ function pruneLastCssResults(resultByFile, sourceHashByFile, activeFiles) {
|
|
|
2705
2972
|
function readAssetSource(asset) {
|
|
2706
2973
|
return typeof asset.source === "string" ? asset.source : asset.source.toString();
|
|
2707
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
|
+
}
|
|
2708
2982
|
function getAssetFile(bundleFile, asset) {
|
|
2709
2983
|
return asset.fileName || bundleFile;
|
|
2710
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
|
+
}
|
|
2711
3003
|
function isRootMiniProgramStyleOutputFile(file) {
|
|
2712
3004
|
const normalized = require_source_candidate_scan_signature.normalizeOutputPathKey(file.replace(/[?#].*$/, ""));
|
|
2713
3005
|
return !normalized.includes("/") && /\.(?:wxss|acss|ttss|qss|jxss|tyss)$/i.test(normalized);
|
|
@@ -2776,7 +3068,7 @@ function normalizeTaroRootImportShellAssets(bundle, options) {
|
|
|
2776
3068
|
return updated;
|
|
2777
3069
|
}
|
|
2778
3070
|
async function finalizeGenerateBundle(options) {
|
|
2779
|
-
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;
|
|
2780
3072
|
const tasksStart = performance.now();
|
|
2781
3073
|
if (cssTaskFactories.length > 0) {
|
|
2782
3074
|
const cssTask = require_hmr_timing.runWithConcurrency(cssTaskFactories, resolveViteCssTaskConcurrency(useIncrementalMode, runtimeState.tailwindRuntime.majorVersion)).then(() => void 0);
|
|
@@ -2811,6 +3103,7 @@ async function finalizeGenerateBundle(options) {
|
|
|
2811
3103
|
recordViteProcessedCssAssetResult,
|
|
2812
3104
|
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles),
|
|
2813
3105
|
subpackageRoots: collectMiniProgramSubpackageRoots(bundle),
|
|
3106
|
+
transformCss: transformWebTargetCss,
|
|
2814
3107
|
debug
|
|
2815
3108
|
});
|
|
2816
3109
|
return injectViteProcessedCssIntoMainCssAssets(bundle, {
|
|
@@ -2818,6 +3111,7 @@ async function finalizeGenerateBundle(options) {
|
|
|
2818
3111
|
getViteProcessedCssAssetResults,
|
|
2819
3112
|
markCssAssetProcessed,
|
|
2820
3113
|
recordCssAssetResult,
|
|
3114
|
+
transformCss: transformWebTargetCss,
|
|
2821
3115
|
shouldRemoveInjectedSourceAsset: (targetFile, record) => {
|
|
2822
3116
|
if (record.injectIntoMain === false) return false;
|
|
2823
3117
|
const targetFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(targetFile);
|
|
@@ -2843,11 +3137,13 @@ async function finalizeGenerateBundle(options) {
|
|
|
2843
3137
|
removeCssCoveredByRootStyleAssets(bundle, {
|
|
2844
3138
|
cssMatcher: opts.cssMatcher,
|
|
2845
3139
|
debug,
|
|
3140
|
+
includeTailwindGeneratedCssAssets: opts.appType === "uni-app-vite" && isWebGeneratorTarget && isUniAppViteWebviewAppBundle(bundleFiles),
|
|
2846
3141
|
isViteProcessedCssAsset,
|
|
2847
3142
|
onUpdate,
|
|
2848
3143
|
recordCssAssetResult,
|
|
2849
3144
|
subpackageRoots: collectMiniProgramSubpackageRoots(bundle)
|
|
2850
3145
|
});
|
|
3146
|
+
if (opts.appType === "uni-app-vite" && isWebGeneratorTarget && isUniAppViteWebviewAppBundle(Object.keys(bundle))) removeDuplicateUnlinkedRootCssAssetsReferencedByHtml(bundle, { debug });
|
|
2851
3147
|
await finalizeMiniProgramCssAssets(bundle, {
|
|
2852
3148
|
cssMatcher: opts.cssMatcher,
|
|
2853
3149
|
debug,
|
|
@@ -2858,6 +3154,12 @@ async function finalizeGenerateBundle(options) {
|
|
|
2858
3154
|
recordCssAssetResult,
|
|
2859
3155
|
styleHandler
|
|
2860
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
|
+
});
|
|
2861
3163
|
const stateUpdateStart = performance.now();
|
|
2862
3164
|
require_source_candidate_scan_signature.updateBundleBuildState(state, snapshot, useIncrementalMode ? linkedByEntry ?? /* @__PURE__ */ new Map() : /* @__PURE__ */ new Map(), { incremental: useIncrementalMode });
|
|
2863
3165
|
state.generatorCandidateSignature = generatorCandidateSignature;
|
|
@@ -3214,13 +3516,15 @@ function createRememberedCssRuntimeSignature(cssRuntimeSignature, cssRuntimeAffe
|
|
|
3214
3516
|
function normalizeRememberedSourceIdentity(file) {
|
|
3215
3517
|
return require_source_candidate_scan_signature.normalizeOutputPathKey(file.replace(/[?#].*$/, ""));
|
|
3216
3518
|
}
|
|
3217
|
-
function selectBestRememberedCssSourceMatches(sources, outputFile, outputRoot, sourceRoot) {
|
|
3218
|
-
|
|
3519
|
+
function selectBestRememberedCssSourceMatches(sources, outputFile, outputRoot, sourceRoot, options = {}) {
|
|
3520
|
+
const minimumScore = options.minimumScore ?? (options.requirePositiveScore ? 1 : 0);
|
|
3219
3521
|
const scoredMatches = sources.map((remembered) => ({
|
|
3220
3522
|
remembered,
|
|
3221
3523
|
score: Math.max(scoreMatchingStyleFileBase(outputFile, remembered.sourceFile, outputRoot, sourceRoot), scoreMatchingStyleFileBase(outputFile, remembered.outputFile, outputRoot, sourceRoot))
|
|
3222
|
-
})).filter((match) => match.score > 0).sort((a, b) => b.score - a.score);
|
|
3524
|
+
})).filter((match) => match.score >= minimumScore && match.score > 0).sort((a, b) => b.score - a.score);
|
|
3223
3525
|
const bestScore = scoredMatches[0]?.score;
|
|
3526
|
+
if (!bestScore && minimumScore > 0) return [];
|
|
3527
|
+
if (sources.length <= 1) return sources;
|
|
3224
3528
|
return bestScore ? scoredMatches.filter((match) => match.score === bestScore).map((match) => match.remembered) : sources;
|
|
3225
3529
|
}
|
|
3226
3530
|
function findRememberedCssSources(sources, outputFile, file, originalSource, outputRoot, sourceRoot) {
|
|
@@ -3238,11 +3542,16 @@ function findRememberedCssSources(sources, outputFile, file, originalSource, out
|
|
|
3238
3542
|
...originalSource.originalFileNames ?? []
|
|
3239
3543
|
].filter((item) => typeof item === "string" && item.length > 0);
|
|
3240
3544
|
const sourceMatched = rememberedSources.filter((remembered) => originalFiles.some((originalFile) => normalizeRememberedSourceIdentity(remembered.sourceFile) === normalizeRememberedSourceIdentity(originalFile)));
|
|
3241
|
-
if (sourceMatched.length > 0)
|
|
3545
|
+
if (sourceMatched.length > 0) {
|
|
3546
|
+
const scoredSourceMatched = selectBestRememberedCssSourceMatches(sourceMatched, outputFile, outputRoot, sourceRoot, { requirePositiveScore: true });
|
|
3547
|
+
if (scoredSourceMatched.length > 0) return scoredSourceMatched;
|
|
3548
|
+
}
|
|
3242
3549
|
const outputMatched = rememberedSources.filter((remembered) => require_source_candidate_scan_signature.normalizeOutputPathKey(remembered.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile));
|
|
3243
3550
|
if (outputMatched.length > 0) return outputMatched;
|
|
3244
3551
|
if (!require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(source) && !hasTailwindGenerationSource(source)) return [];
|
|
3245
3552
|
const scoredMatches = selectBestRememberedCssSourceMatches(rememberedSources, outputFile, outputRoot, sourceRoot);
|
|
3553
|
+
const strongScoredMatches = selectBestRememberedCssSourceMatches(rememberedSources, outputFile, outputRoot, sourceRoot, { minimumScore: 1e5 });
|
|
3554
|
+
if (strongScoredMatches.length > 0 && strongScoredMatches.length < rememberedSources.length) return strongScoredMatches;
|
|
3246
3555
|
return scoredMatches.length === rememberedSources.length ? [] : scoredMatches;
|
|
3247
3556
|
}
|
|
3248
3557
|
function mergeRememberedCssSources(sources, outputFile) {
|
|
@@ -3265,7 +3574,9 @@ function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGenerator
|
|
|
3265
3574
|
const groups = /* @__PURE__ */ new Map();
|
|
3266
3575
|
for (const [key, remembered] of sources ?? []) {
|
|
3267
3576
|
const cleanSourceFile = remembered.sourceFile.replace(/[?#].*$/, "");
|
|
3268
|
-
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);
|
|
3269
3580
|
const group = groups.get(outputKey) ?? [];
|
|
3270
3581
|
group.push({
|
|
3271
3582
|
key,
|
|
@@ -3278,7 +3589,7 @@ function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGenerator
|
|
|
3278
3589
|
//#endregion
|
|
3279
3590
|
//#region src/bundlers/vite/generate-bundle/remembered-css-replay.ts
|
|
3280
3591
|
async function processRememberedCssReplay(options) {
|
|
3281
|
-
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;
|
|
3282
3593
|
const rememberedReplayGroups = collectRememberedCssReplayGroups(getRememberedCssSources?.(), opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
3283
3594
|
for (const [outputFile, rememberedGroup] of rememberedReplayGroups) {
|
|
3284
3595
|
if (require_source_candidate_scan_signature.isHTMLRequest(outputFile) || options.opts.htmlMatcher(outputFile)) continue;
|
|
@@ -3329,6 +3640,7 @@ async function processRememberedCssReplay(options) {
|
|
|
3329
3640
|
cssHandlerOptions,
|
|
3330
3641
|
cssUserHandlerOptions: getCssUserHandlerOptions(sourceFile),
|
|
3331
3642
|
getSourceCandidatesForEntries: scopedSourceCandidateGetter,
|
|
3643
|
+
generatorPlatform,
|
|
3332
3644
|
styleHandler,
|
|
3333
3645
|
debug,
|
|
3334
3646
|
previousCss
|
|
@@ -3644,16 +3956,24 @@ function scoreConfiguredTailwindV4SourceForRawSource(rawSource, entrySource) {
|
|
|
3644
3956
|
for (const token of entryTokens) if (rawTokens.has(token)) score += token.startsWith("config:") ? 100 : 1;
|
|
3645
3957
|
return score;
|
|
3646
3958
|
}
|
|
3647
|
-
function
|
|
3648
|
-
if (!file || !subpackageRoots) return;
|
|
3649
|
-
return [...subpackageRoots].find((root) => isSubpackageOutputFile(file, /* @__PURE__ */ new Set([root])));
|
|
3650
|
-
}
|
|
3651
|
-
function isSameSubpackageScope(outputFile, sourceFile, subpackageRoots) {
|
|
3652
|
-
return resolveSubpackageRootForFile(outputFile, subpackageRoots) === resolveSubpackageRootForFile(sourceFile, subpackageRoots);
|
|
3653
|
-
}
|
|
3654
|
-
function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSource, subpackageRoots) {
|
|
3959
|
+
function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSource, options = {}) {
|
|
3655
3960
|
const generationSources = entries.filter((entry) => hasTailwindGenerationSource(entry.source));
|
|
3656
3961
|
if (generationSources.length <= 1) return generationSources[0];
|
|
3962
|
+
const canMatchByOutputPath = Boolean(options.cwd || options.outputRoot || options.projectRoot);
|
|
3963
|
+
const selectByOutputPath = (candidates) => {
|
|
3964
|
+
if (!canMatchByOutputPath) return;
|
|
3965
|
+
const scoredSources = candidates.map((entry) => ({
|
|
3966
|
+
entry,
|
|
3967
|
+
score: require_hmr_timing.scoreTailwindV4CssSourceFileMatch(outputFile, entry.file, {
|
|
3968
|
+
cwd: options.cwd,
|
|
3969
|
+
outputRoot: options.outputRoot,
|
|
3970
|
+
projectRoot: options.projectRoot
|
|
3971
|
+
})
|
|
3972
|
+
})).filter((item) => item.score > 0).sort((a, b) => b.score - a.score);
|
|
3973
|
+
const bestScore = scoredSources[0]?.score;
|
|
3974
|
+
const bestSources = bestScore ? scoredSources.filter((item) => item.score === bestScore) : [];
|
|
3975
|
+
return bestSources.length === 1 ? bestSources[0]?.entry : void 0;
|
|
3976
|
+
};
|
|
3657
3977
|
const selectByRawSourceFingerprint = (candidates) => {
|
|
3658
3978
|
const scoredSources = candidates.map((entry) => ({
|
|
3659
3979
|
entry,
|
|
@@ -3665,14 +3985,10 @@ function selectTailwindV4GenerationCssSourceForOutput(outputFile, entries, rawSo
|
|
|
3665
3985
|
};
|
|
3666
3986
|
const rawSourceMatched = selectByRawSourceFingerprint(generationSources);
|
|
3667
3987
|
if (rawSourceMatched) return rawSourceMatched;
|
|
3668
|
-
const
|
|
3669
|
-
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
return sourceMatchesSubpackage && [...subpackageRoots].some((root) => isSubpackageOutputFile(outputFile, /* @__PURE__ */ new Set([root])) && isSubpackageOutputFile(entry.file, /* @__PURE__ */ new Set([root])));
|
|
3673
|
-
}) : generationSources;
|
|
3674
|
-
const explicitSources = scopedSources.filter((entry) => /@(?:config|source|plugin|custom-variant|theme|utility|variant|apply)\b/.test(entry.source));
|
|
3675
|
-
const candidates = explicitSources.length === 1 ? explicitSources : scopedSources;
|
|
3988
|
+
const explicitSources = generationSources.filter((entry) => /@(?:config|source|plugin|custom-variant|theme|utility|variant|apply)\b/.test(entry.source));
|
|
3989
|
+
const candidates = explicitSources.length === 1 ? explicitSources : generationSources;
|
|
3990
|
+
const outputPathMatched = selectByOutputPath(candidates);
|
|
3991
|
+
if (outputPathMatched) return outputPathMatched;
|
|
3676
3992
|
if (candidates.length === 1) return candidates[0];
|
|
3677
3993
|
return selectByRawSourceFingerprint(candidates);
|
|
3678
3994
|
}
|
|
@@ -3906,6 +4222,16 @@ function resolveSourceRootFromBundleGraph(config, bundle) {
|
|
|
3906
4222
|
}
|
|
3907
4223
|
//#endregion
|
|
3908
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
|
+
}
|
|
3909
4235
|
function createGenerateBundleHook(context) {
|
|
3910
4236
|
const state = require_source_candidate_scan_signature.createBundleBuildState();
|
|
3911
4237
|
const lastCssResultByFile = /* @__PURE__ */ new Map();
|
|
@@ -3935,23 +4261,32 @@ function createGenerateBundleHook(context) {
|
|
|
3935
4261
|
const { cache, onEnd, onStart, onUpdate, styleHandler, templateHandler, jsHandler, uniAppX } = opts;
|
|
3936
4262
|
const resolvedConfig = getResolvedConfig();
|
|
3937
4263
|
const uniUtsPlatform = require_utils.resolveUniUtsPlatform();
|
|
3938
|
-
const
|
|
4264
|
+
const generatorPlatform = opts.cssOptions?.platform ?? opts.platform ?? inferPlatformFromViteOutDir$1(resolvedConfig?.build?.outDir);
|
|
4265
|
+
const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(opts.generator, {
|
|
3939
4266
|
appType: opts.appType,
|
|
3940
|
-
platform:
|
|
4267
|
+
platform: generatorPlatform,
|
|
3941
4268
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
3942
4269
|
uniAppX,
|
|
3943
4270
|
uniUtsPlatform
|
|
3944
|
-
})
|
|
4271
|
+
});
|
|
4272
|
+
const generatorBranch = require_generator.resolveGeneratorRuntimeBranch(generatorOptions, {
|
|
3945
4273
|
appType: opts.appType,
|
|
3946
|
-
platform:
|
|
4274
|
+
platform: generatorPlatform,
|
|
3947
4275
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
3948
4276
|
uniAppX,
|
|
3949
4277
|
uniUtsPlatform
|
|
3950
4278
|
});
|
|
3951
4279
|
const isWebGeneratorTarget = generatorBranch.isWeb;
|
|
3952
|
-
const
|
|
3953
|
-
const
|
|
3954
|
-
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)));
|
|
3955
4290
|
const shouldPreserveAppCssExtension = isNativeAppStyleTarget || isHarmonyAppStyleTarget;
|
|
3956
4291
|
const shouldGenerateWebCssByGenerator = isWebGeneratorTarget;
|
|
3957
4292
|
const { getCssHandlerOptions, getCssUserHandlerOptions } = cssHandlerOptions;
|
|
@@ -3973,6 +4308,7 @@ function createGenerateBundleHook(context) {
|
|
|
3973
4308
|
recordViteProcessedCssAssetResult,
|
|
3974
4309
|
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, Object.keys(bundle)),
|
|
3975
4310
|
subpackageRoots: currentSubpackageRoots,
|
|
4311
|
+
transformCss: transformWebTargetCss,
|
|
3976
4312
|
debug
|
|
3977
4313
|
});
|
|
3978
4314
|
const hmrTimingStartedAt = performance.now();
|
|
@@ -4016,7 +4352,47 @@ function createGenerateBundleHook(context) {
|
|
|
4016
4352
|
const snapshotStart = performance.now();
|
|
4017
4353
|
const snapshot = require_source_candidate_scan_signature.buildBundleSnapshot(bundle, opts, outDir, state, envFlags.disableDirtyOptimization || !useIncrementalMode, { hasOmittedKnownFiles });
|
|
4018
4354
|
const configuredTailwindV4CssSourceEntriesForScope = getConfiguredTailwindV4CssSourceEntries();
|
|
4019
|
-
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
|
+
};
|
|
4020
4396
|
const { createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, shouldExcludeSubpackageSourceCandidates, shouldInjectCssIntoMainFromOutput } = createSubpackageSourceCandidateScope({
|
|
4021
4397
|
cssSourceFiles: configuredTailwindV4CssSourceEntriesForScope.map((entry) => entry.file),
|
|
4022
4398
|
getSourceCandidateSourcesForEntries,
|
|
@@ -4172,10 +4548,14 @@ function createGenerateBundleHook(context) {
|
|
|
4172
4548
|
onUpdate,
|
|
4173
4549
|
debug
|
|
4174
4550
|
});
|
|
4175
|
-
const
|
|
4551
|
+
const createBaseHandlerOptions = createJsHandlerOptionsFactory({
|
|
4176
4552
|
getMajorVersion: () => runtimeState.tailwindRuntime.majorVersion,
|
|
4177
4553
|
moduleGraph: moduleGraphOptions
|
|
4178
4554
|
});
|
|
4555
|
+
const createHandlerOptions = (absoluteFilename, extra) => createBaseHandlerOptions(absoluteFilename, shouldApplyWebviewSafeSelectors ? {
|
|
4556
|
+
needEscaped: true,
|
|
4557
|
+
...extra
|
|
4558
|
+
} : extra);
|
|
4179
4559
|
const linkedByEntry = useIncrementalMode ? /* @__PURE__ */ new Map() : void 0;
|
|
4180
4560
|
const sharedCssResultCache = /* @__PURE__ */ new Map();
|
|
4181
4561
|
const activeProcessCacheKeys = /* @__PURE__ */ new Set();
|
|
@@ -4289,6 +4669,11 @@ function createGenerateBundleHook(context) {
|
|
|
4289
4669
|
if (rememberedCssSources.length > 0) rememberedCssSources = await Promise.all(rememberedCssSources.map(async (remembered) => {
|
|
4290
4670
|
return await refreshRememberedCssSource?.(remembered) ?? remembered;
|
|
4291
4671
|
}));
|
|
4672
|
+
rememberedCssSources = rememberedCssSources.filter((remembered) => {
|
|
4673
|
+
if (!configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile))) return true;
|
|
4674
|
+
const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(remembered.sourceFile);
|
|
4675
|
+
return !matchedOutputFile || require_source_candidate_scan_signature.normalizeOutputPathKey(matchedOutputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
4676
|
+
});
|
|
4292
4677
|
let hasUsableRememberedTailwindSource = rememberedCssSources.some((remembered) => hasTailwindGenerationSource(remembered.rawSource) && require_source_candidate_scan_signature.normalizeOutputPathKey(remembered.sourceFile.replace(/[?#].*$/, "")) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file));
|
|
4293
4678
|
const inferredSfcStyleSource = await resolveSfcStyleSourceFromOutputFile(outputFile, snapshot, outDir, opts.tailwindcssBasedir, opts.cssMatcher, getSfcSource, debug);
|
|
4294
4679
|
if (inferredSfcStyleSource) {
|
|
@@ -4296,15 +4681,11 @@ function createGenerateBundleHook(context) {
|
|
|
4296
4681
|
const rememberedSourcesBelongToInferredSfc = rememberedCssSources.length > 0 && rememberedCssSources.every((remembered) => normalizeSfcSourceFileForCompare(remembered.sourceFile) === inferredSourceFile);
|
|
4297
4682
|
if (!hasUsableRememberedTailwindSource || rememberedSourcesBelongToInferredSfc) rememberedCssSources = [inferredSfcStyleSource];
|
|
4298
4683
|
}
|
|
4299
|
-
if (isTemporaryCssAssetFile(outputFile) && rememberedCssSources.some((remembered) => configuredTailwindV4CssSourceFileKeysForScope.has(
|
|
4684
|
+
if (isTemporaryCssAssetFile(outputFile) && rememberedCssSources.some((remembered) => configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile)))) {
|
|
4300
4685
|
rememberedCssSources = [];
|
|
4301
4686
|
hasUsableRememberedTailwindSource = false;
|
|
4302
4687
|
}
|
|
4303
4688
|
let outputCssHandlerOptions = getCssHandlerOptions(outputFile);
|
|
4304
|
-
if (currentSubpackageRoots && rememberedCssSources.length > 0 && rememberedCssSources.some((remembered) => configuredTailwindV4CssSourceFileKeysForScope.has(require_source_candidate_scan_signature.normalizeOutputPathKey(remembered.sourceFile.replace(/[?#].*$/, ""))) && !isSameSubpackageScope(outputFile, remembered.sourceFile, currentSubpackageRoots))) {
|
|
4305
|
-
rememberedCssSources = [];
|
|
4306
|
-
hasUsableRememberedTailwindSource = false;
|
|
4307
|
-
}
|
|
4308
4689
|
if (isTemporaryCssAssetFile(outputFile) && hasTailwindGenerationSource(rawSource)) {
|
|
4309
4690
|
const resolvedTemporarySource = temporaryCssAssetSourceResolver.resolve(outputFile, rawSource);
|
|
4310
4691
|
if (resolvedTemporarySource) {
|
|
@@ -4328,7 +4709,14 @@ function createGenerateBundleHook(context) {
|
|
|
4328
4709
|
}
|
|
4329
4710
|
if (!hasUsableRememberedTailwindSource) {
|
|
4330
4711
|
const configuredTailwindV4CssSourceEntries = getConfiguredTailwindV4CssSourceEntries();
|
|
4331
|
-
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;
|
|
4332
4720
|
if (inferredOriginalSourceStyle) {
|
|
4333
4721
|
outputFile = resolveMatchedOutputFileForCurrentAsset(inferredOriginalSourceStyle.sourceFile) ?? outputFile;
|
|
4334
4722
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
@@ -4358,7 +4746,11 @@ function createGenerateBundleHook(context) {
|
|
|
4358
4746
|
}
|
|
4359
4747
|
} else if (hasTailwindGenerationSource(rawSource) && (originalSource.originalFileNames?.length ?? 0) === 0) {
|
|
4360
4748
|
const availableConfiguredTailwindV4CssSourceEntries = configuredTailwindV4CssSourceEntries.filter((entry) => !usedConfiguredTailwindV4CssSourceFiles.has(require_source_candidate_scan_signature.normalizeOutputPathKey(entry.file)));
|
|
4361
|
-
const configuredGenerationSource = selectTailwindV4GenerationCssSourceForOutput(outputFile, availableConfiguredTailwindV4CssSourceEntries, rawSource,
|
|
4749
|
+
const configuredGenerationSource = selectTailwindV4GenerationCssSourceForOutput(outputFile, availableConfiguredTailwindV4CssSourceEntries, rawSource, {
|
|
4750
|
+
cwd: opts.tailwindcssBasedir,
|
|
4751
|
+
outputRoot: outDir,
|
|
4752
|
+
projectRoot: sourceRoot ?? rootDir
|
|
4753
|
+
});
|
|
4362
4754
|
if (configuredGenerationSource && !hasViteProcessedCssResultForSource(configuredGenerationSource.file, getViteProcessedCssAssetResults)) {
|
|
4363
4755
|
outputFile = resolveMatchedOutputFileForCurrentAsset(configuredGenerationSource.file) ?? outputFile;
|
|
4364
4756
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
@@ -4374,7 +4766,7 @@ function createGenerateBundleHook(context) {
|
|
|
4374
4766
|
}
|
|
4375
4767
|
}
|
|
4376
4768
|
let rememberedCssSource = mergeRememberedCssSources(rememberedCssSources, outputFile);
|
|
4377
|
-
if (rememberedCssSource && viteProcessedCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(
|
|
4769
|
+
if (rememberedCssSource && viteProcessedCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(rememberedCssSource.sourceFile))) {
|
|
4378
4770
|
const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(rememberedCssSource.sourceFile);
|
|
4379
4771
|
if (matchedOutputFile && require_source_candidate_scan_signature.normalizeOutputPathKey(matchedOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile)) {
|
|
4380
4772
|
outputFile = matchedOutputFile;
|
|
@@ -4403,11 +4795,12 @@ function createGenerateBundleHook(context) {
|
|
|
4403
4795
|
}
|
|
4404
4796
|
const hasRememberedApplyDirective = rememberedCssSource != null && require_v4_engine.hasTailwindApplyDirective(rememberedCssSource.rawSource);
|
|
4405
4797
|
const hasRememberedTailwindGenerationSource = rememberedCssSource != null && hasTailwindGenerationSource(rememberedCssSource.rawSource);
|
|
4406
|
-
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);
|
|
4407
4798
|
const hasSameOutputRememberedTailwindGenerationSource = hasRememberedTailwindGenerationSource && rememberedCssSource != null && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
4408
4799
|
const hasStaleViteProcessedCssSource = vitePipelineCssAsset && hasDifferentRememberedCssSource && (hasCurrentTailwindGenerationDirective || hasRememberedApplyDirective || hasRememberedTailwindGenerationSource);
|
|
4409
4800
|
const generatorSourceFile = vitePipelineCssAsset ? rememberedCssSource?.sourceFile ?? assetSourceFile : assetSourceFile;
|
|
4410
|
-
|
|
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))) {
|
|
4411
4804
|
usedConfiguredTailwindV4CssSourceFiles.add(require_source_candidate_scan_signature.normalizeOutputPathKey(generatorSourceFile));
|
|
4412
4805
|
temporaryCssAssetSourceResolver.markUsed(generatorSourceFile);
|
|
4413
4806
|
}
|
|
@@ -4415,12 +4808,13 @@ function createGenerateBundleHook(context) {
|
|
|
4415
4808
|
...getCssHandlerOptions(generatorSourceFile),
|
|
4416
4809
|
isMainChunk: resolvedFromTemporaryCssAsset ? false : outputCssHandlerOptions.isMainChunk
|
|
4417
4810
|
} : getCssHandlerOptions(file);
|
|
4811
|
+
const generatorCssEntries = configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(generatorSourceFile)) ? [generatorSourceFile] : opts.cssEntries;
|
|
4418
4812
|
const generatorCssHandlerOptions = {
|
|
4419
4813
|
...cssHandlerOptions,
|
|
4420
4814
|
sourceOptions: {
|
|
4421
4815
|
...cssHandlerOptions.sourceOptions ?? {},
|
|
4422
4816
|
sourceFile: generatorSourceFile,
|
|
4423
|
-
cssEntries:
|
|
4817
|
+
cssEntries: generatorCssEntries
|
|
4424
4818
|
}
|
|
4425
4819
|
};
|
|
4426
4820
|
const scopedSourceCandidateGetter = createScopedSourceCandidateGetter(outputFile, generatorCssHandlerOptions);
|
|
@@ -4432,6 +4826,10 @@ function createGenerateBundleHook(context) {
|
|
|
4432
4826
|
opts,
|
|
4433
4827
|
tokenSources: sourceTraceTokenSources
|
|
4434
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
|
+
};
|
|
4435
4833
|
const shouldRegenerateMainPackageCssWithScopedCandidates = vitePipelineCssAsset && shouldExcludeSubpackageSourceCandidates(outputFile, generatorCssHandlerOptions);
|
|
4436
4834
|
const generatorCssUserHandlerOptions = getCssUserHandlerOptions(generatorSourceFile);
|
|
4437
4835
|
const cssRuntimeAffectingSignature = vitePipelineCssAsset ? require_source_candidate_scan_signature.createRuntimeAffectingSourceSignature(generatorRawSource, "css") : snapshot.runtimeAffectingSignatureByFile.get(file) ?? require_source_candidate_scan_signature.createRuntimeAffectingSourceSignature(generatorRawSource, "css");
|
|
@@ -4439,19 +4837,30 @@ function createGenerateBundleHook(context) {
|
|
|
4439
4837
|
const cssShareScope = createCssTransformShareScopeKey(opts, outputFile, generatorRawSource);
|
|
4440
4838
|
const shouldRegenerateCollectedViteCss = viteProcessedCssAsset && useIncrementalMode && state.generatorCandidateSignature !== void 0 && generatorCandidatesChanged && (hasTailwindGenerationSource(generatorRawSource) || require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource) || rememberedCssSource != null && hasTailwindGenerationSource(rememberedCssSource.rawSource));
|
|
4441
4839
|
const shouldRefreshViteProcessedCssByCandidates = viteProcessedCssAsset && useIncrementalMode && state.generatorCandidateSignature !== void 0 && generatorCandidatesChanged;
|
|
4442
|
-
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));
|
|
4443
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));
|
|
4444
4844
|
const shouldPreserveCollectedViteCssAsset = !shouldRegenerateCollectedViteCss && (state.generatorCandidateSignature === void 0 || !generatorCandidatesChanged) && (collectedBundlerGeneratedCssFiles.has(file) || require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource));
|
|
4445
4845
|
const strippedViteProcessedCss = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(rawSource);
|
|
4446
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);
|
|
4447
4847
|
if (alreadyProcessedCssAsset && !shouldRefreshViteProcessedCssByCandidates && (!hasStaleViteProcessedCssSource || shouldPreserveStaleGeneratedCssAsset) && !hasRememberedApplySource && !shouldRegenerateMainPackageCssWithScopedCandidates && (!shouldTrackGeneratorRuntime || shouldPreserveCollectedViteCssAsset)) {
|
|
4448
|
-
const nextCss = strippedViteProcessedCss;
|
|
4848
|
+
const nextCss = removeRootCoveredCssFromScopedAsset(strippedViteProcessedCss);
|
|
4449
4849
|
applyCssResult(nextCss);
|
|
4450
4850
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
4451
4851
|
recordCssAssetResult?.(outputFile, nextCss);
|
|
4452
|
-
|
|
4852
|
+
if (vitePipelineCssAsset && rememberedCssSource) rememberCssSource?.({
|
|
4853
|
+
outputFile: vitePipelineCssInjectionOutputFile,
|
|
4854
|
+
rawSource: generatorRawSource,
|
|
4855
|
+
sourceFile: generatorSourceFile
|
|
4856
|
+
});
|
|
4857
|
+
if (shouldRecordVitePipelineCssByOutput) recordViteProcessedCssAssetResult?.(vitePipelineCssInjectionOutputFile, nextCss, {
|
|
4453
4858
|
injectIntoMain: outputCssHandlerOptions.isMainChunk ? false : shouldInjectVitePipelineCssIntoMain,
|
|
4454
|
-
outputFile
|
|
4859
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4860
|
+
});
|
|
4861
|
+
if (vitePipelineCssAsset && shouldInjectVitePipelineCssIntoMain) recordViteProcessedCssAssetResult?.(file, nextCss, {
|
|
4862
|
+
injectIntoMain: shouldInjectVitePipelineCssIntoMain,
|
|
4863
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4455
4864
|
});
|
|
4456
4865
|
onUpdate(outputFile, rawSource, nextCss);
|
|
4457
4866
|
debug("css skip vite-processed asset: %s", outputFile);
|
|
@@ -4489,7 +4898,7 @@ function createGenerateBundleHook(context) {
|
|
|
4489
4898
|
rememberLastCssResult(lastCssResultByFile, lastCssSourceHashByFile, outputFile, source, cssRuntimeAffectingHash);
|
|
4490
4899
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
4491
4900
|
if (rememberedCssSources.length <= 1) rememberCssSource?.({
|
|
4492
|
-
outputFile,
|
|
4901
|
+
outputFile: vitePipelineCssInjectionOutputFile,
|
|
4493
4902
|
rawSource: generatorRawSource,
|
|
4494
4903
|
sourceFile: generatorSourceFile
|
|
4495
4904
|
}, rememberedCssRuntimeSignature);
|
|
@@ -4524,6 +4933,7 @@ function createGenerateBundleHook(context) {
|
|
|
4524
4933
|
cssUserHandlerOptions: generatorCssUserHandlerOptions,
|
|
4525
4934
|
getSourceCandidatesForEntries: scopedSourceCandidateGetter,
|
|
4526
4935
|
sourceCandidates: scopedGeneratorRuntime,
|
|
4936
|
+
generatorPlatform,
|
|
4527
4937
|
styleHandler,
|
|
4528
4938
|
debug,
|
|
4529
4939
|
previousCss,
|
|
@@ -4531,19 +4941,19 @@ function createGenerateBundleHook(context) {
|
|
|
4531
4941
|
...usesConfiguredTailwindV4FallbackSource ? { restoreLocalCssImports: false } : {}
|
|
4532
4942
|
}) : void 0;
|
|
4533
4943
|
if (generated) {
|
|
4534
|
-
const tracedCss = annotateCss(generated.css);
|
|
4944
|
+
const tracedCss = removeRootCoveredCssFromScopedAsset(annotateCss(transformWebTargetCss(generated.css)));
|
|
4535
4945
|
registerGeneratorDependencies$1({ addWatchFile }, generated.dependencies);
|
|
4536
4946
|
if (envFlags.debugCssDiff) debug("css diff %s: %s", generatorSourceFile, require_source_candidate_scan_signature.summarizeStringDiff(generatorRawSource, tracedCss));
|
|
4537
4947
|
debug("css generated result: %s bytes=%d", file, tracedCss.length);
|
|
4538
4948
|
for (const candidate of generated.classSet ?? []) transformRuntime.add(candidate);
|
|
4539
4949
|
recordCssAssetResult?.(outputFile, tracedCss);
|
|
4540
|
-
recordViteProcessedCssAssetResult?.(
|
|
4950
|
+
if (shouldRecordVitePipelineCssByOutput) recordViteProcessedCssAssetResult?.(vitePipelineCssInjectionOutputFile, tracedCss, {
|
|
4541
4951
|
injectIntoMain: outputCssHandlerOptions.isMainChunk ? false : shouldInjectVitePipelineCssIntoMain,
|
|
4542
|
-
outputFile
|
|
4952
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4543
4953
|
});
|
|
4544
4954
|
if (vitePipelineCssAsset && shouldInjectVitePipelineCssIntoMain) recordViteProcessedCssAssetResult?.(file, tracedCss, {
|
|
4545
4955
|
injectIntoMain: shouldInjectVitePipelineCssIntoMain,
|
|
4546
|
-
outputFile
|
|
4956
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4547
4957
|
});
|
|
4548
4958
|
metrics.css.elapsed += measureElapsed(start);
|
|
4549
4959
|
metrics.css.transformed++;
|
|
@@ -4551,10 +4961,11 @@ function createGenerateBundleHook(context) {
|
|
|
4551
4961
|
return tracedCss;
|
|
4552
4962
|
}
|
|
4553
4963
|
if (isWebGeneratorTarget) {
|
|
4964
|
+
const outputCss = transformWebTargetCss(rawSource);
|
|
4554
4965
|
metrics.css.elapsed += measureElapsed(start);
|
|
4555
4966
|
metrics.css.transformed++;
|
|
4556
4967
|
debug("css preserve web target: %s", outputFile);
|
|
4557
|
-
return annotateCss(
|
|
4968
|
+
return annotateCss(outputCss);
|
|
4558
4969
|
}
|
|
4559
4970
|
const { css } = await styleHandler(generatorRawSource, cssHandlerOptions);
|
|
4560
4971
|
const tracedCss = annotateCss(css);
|
|
@@ -4574,7 +4985,7 @@ function createGenerateBundleHook(context) {
|
|
|
4574
4985
|
continue;
|
|
4575
4986
|
}
|
|
4576
4987
|
if (type !== "js") continue;
|
|
4577
|
-
if (isWebGeneratorTarget) {
|
|
4988
|
+
if (isWebGeneratorTarget && !shouldApplyWebviewSafeSelectors) {
|
|
4578
4989
|
debug("js skip web target: %s", file);
|
|
4579
4990
|
continue;
|
|
4580
4991
|
}
|
|
@@ -4620,6 +5031,7 @@ function createGenerateBundleHook(context) {
|
|
|
4620
5031
|
debug,
|
|
4621
5032
|
defaultStyleOutputExtension,
|
|
4622
5033
|
emitOrReplayCssAsset,
|
|
5034
|
+
generatorPlatform,
|
|
4623
5035
|
generatorRuntime,
|
|
4624
5036
|
getCssHandlerOptions,
|
|
4625
5037
|
getCssUserHandlerOptions,
|
|
@@ -4699,12 +5111,19 @@ function createGenerateBundleHook(context) {
|
|
|
4699
5111
|
tasks,
|
|
4700
5112
|
timingDetails,
|
|
4701
5113
|
transformRuntime,
|
|
5114
|
+
transformWebTargetCss,
|
|
4702
5115
|
useIncrementalMode
|
|
4703
5116
|
});
|
|
4704
5117
|
};
|
|
4705
5118
|
}
|
|
4706
5119
|
//#endregion
|
|
4707
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
|
+
}
|
|
4708
5127
|
function isAddWatchFileInvalidRollupPhaseError(error) {
|
|
4709
5128
|
const candidate = error;
|
|
4710
5129
|
return candidate?.code === "INVALID_ROLLUP_PHASE" || candidate?.pluginCode === "INVALID_ROLLUP_PHASE" || candidate?.message?.includes("Cannot call \"addWatchFile\" after the build has finished.") === true;
|
|
@@ -4748,8 +5167,13 @@ function shouldFinalizeProcessedCssAsset(opts, file) {
|
|
|
4748
5167
|
function collectViteProcessedCssSources(getViteProcessedCssAssetResults) {
|
|
4749
5168
|
return [...getViteProcessedCssAssetResults?.() ?? []].map(([, record]) => typeof record === "string" ? record : record.css);
|
|
4750
5169
|
}
|
|
4751
|
-
function
|
|
4752
|
-
|
|
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;
|
|
4753
5177
|
}
|
|
4754
5178
|
function createViteCssFinalizerOutputPlugin(context) {
|
|
4755
5179
|
return {
|
|
@@ -4761,24 +5185,27 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4761
5185
|
const { opts, runtimeState, ensureRuntimeClassSet, isCssAssetProcessed, markCssAssetProcessed, debug, getResolvedConfig, recordCssAssetResult, recordViteProcessedCssAssetResult, getViteProcessedCssAssetResults, getRecordedGeneratorCandidates, getSourceCandidates, getSourceCandidatesForEntries, getSourceCandidateSourcesForEntries, waitForSourceCandidateSyncs, rememberMainCssSource, getRememberedMainCssSource, isViteProcessedCssAsset } = context;
|
|
4762
5186
|
const resolvedConfig = getResolvedConfig();
|
|
4763
5187
|
const uniUtsPlatform = require_utils.resolveUniUtsPlatform();
|
|
5188
|
+
const generatorPlatform = opts.cssOptions?.platform ?? opts.platform ?? inferPlatformFromViteOutDir(resolvedConfig?.build?.outDir);
|
|
4764
5189
|
const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(opts.generator, {
|
|
4765
5190
|
appType: opts.appType,
|
|
4766
|
-
platform:
|
|
5191
|
+
platform: generatorPlatform,
|
|
4767
5192
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
4768
5193
|
uniAppX: opts.uniAppX,
|
|
4769
5194
|
uniUtsPlatform
|
|
4770
5195
|
});
|
|
4771
5196
|
const generatorBranch = require_generator.resolveGeneratorRuntimeBranch(generatorOptions, {
|
|
4772
5197
|
appType: opts.appType,
|
|
4773
|
-
platform:
|
|
5198
|
+
platform: generatorPlatform,
|
|
4774
5199
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
4775
5200
|
uniAppX: opts.uniAppX,
|
|
4776
5201
|
uniUtsPlatform
|
|
4777
5202
|
});
|
|
4778
5203
|
const isWebGeneratorTarget = generatorBranch.isWeb;
|
|
4779
|
-
const
|
|
4780
|
-
const
|
|
4781
|
-
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);
|
|
4782
5209
|
if (resolvedConfig?.command !== "build" && !isNativeAppStyleTarget) return;
|
|
4783
5210
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
4784
5211
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType) ?? resolveSourceRootFromBundleGraph(resolvedConfig, bundle);
|
|
@@ -4795,7 +5222,10 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4795
5222
|
recordCssAssetResult,
|
|
4796
5223
|
recordViteProcessedCssAssetResult,
|
|
4797
5224
|
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, isNativeAppStyleTarget, sourceRoot, resolveMiniProgramStyleOutputExtension({ files: Object.keys(bundle) }), Object.keys(bundle)),
|
|
4798
|
-
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
|
+
}),
|
|
4799
5229
|
debug
|
|
4800
5230
|
});
|
|
4801
5231
|
};
|
|
@@ -4805,6 +5235,10 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4805
5235
|
getViteProcessedCssAssetResults,
|
|
4806
5236
|
markCssAssetProcessed,
|
|
4807
5237
|
recordCssAssetResult,
|
|
5238
|
+
transformCss: (css) => finalizeWebCss(css, generatorBranch.isWeb, generatorOptions.webCompat, {
|
|
5239
|
+
escapeMap: opts.escapeMap,
|
|
5240
|
+
safeSelectors: shouldApplyWebviewSafeSelectors
|
|
5241
|
+
}),
|
|
4808
5242
|
debug,
|
|
4809
5243
|
onUpdate: opts.onUpdate
|
|
4810
5244
|
});
|
|
@@ -4830,6 +5264,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4830
5264
|
isMainChunk: false
|
|
4831
5265
|
},
|
|
4832
5266
|
getSourceCandidatesForEntries,
|
|
5267
|
+
generatorPlatform,
|
|
4833
5268
|
styleHandler: opts.styleHandler,
|
|
4834
5269
|
debug
|
|
4835
5270
|
});
|
|
@@ -4868,7 +5303,10 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4868
5303
|
const file = output.fileName || bundleFile;
|
|
4869
5304
|
const rawSource = output.source.toString();
|
|
4870
5305
|
if (isViteProcessedCssAsset?.(output, file)) {
|
|
4871
|
-
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
|
+
}));
|
|
4872
5310
|
output.source = nextCss;
|
|
4873
5311
|
markCssAssetProcessed(output, file);
|
|
4874
5312
|
recordCssAssetResult?.(file, nextCss);
|
|
@@ -4899,10 +5337,14 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4899
5337
|
cssHandlerOptions: generatorCssHandlerOptions,
|
|
4900
5338
|
cssUserHandlerOptions: generatorCssUserHandlerOptions,
|
|
4901
5339
|
getSourceCandidatesForEntries,
|
|
5340
|
+
generatorPlatform,
|
|
4902
5341
|
styleHandler: opts.styleHandler,
|
|
4903
5342
|
debug
|
|
4904
5343
|
}) : void 0;
|
|
4905
|
-
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));
|
|
4906
5348
|
if (generated) {
|
|
4907
5349
|
registerGeneratorDependencies(this, generated.dependencies);
|
|
4908
5350
|
debug("css finalizer generated result: %s bytes=%d", file, nextCss.length);
|
|
@@ -5051,6 +5493,7 @@ function createViteCssMemory(options) {
|
|
|
5051
5493
|
for (const [rememberedKey, remembered] of relatedRememberedEntries) {
|
|
5052
5494
|
touchMapEntry(rememberedCssSources, rememberedKey, {
|
|
5053
5495
|
...remembered,
|
|
5496
|
+
outputFile: entry.outputFile,
|
|
5054
5497
|
rawSource: entry.rawSource,
|
|
5055
5498
|
sourceFile: entry.sourceFile
|
|
5056
5499
|
});
|
|
@@ -5205,6 +5648,22 @@ function resolveHotTailwindCssModules(ctx, tailwindRootCssModuleIds) {
|
|
|
5205
5648
|
}
|
|
5206
5649
|
return modules;
|
|
5207
5650
|
}
|
|
5651
|
+
function resolveHotSourceModules(ctx) {
|
|
5652
|
+
const modules = [];
|
|
5653
|
+
const seenModules = /* @__PURE__ */ new Set();
|
|
5654
|
+
const collectModule = (mod) => {
|
|
5655
|
+
if (mod == null || seenModules.has(mod)) return;
|
|
5656
|
+
if (require_source_candidate_scan_signature.isSourceStyleRequest(mod.id ?? mod.url)) return;
|
|
5657
|
+
seenModules.add(mod);
|
|
5658
|
+
modules.push(mod);
|
|
5659
|
+
};
|
|
5660
|
+
for (const mod of ctx.modules) collectModule(mod);
|
|
5661
|
+
for (const mod of ctx.server.moduleGraph.getModulesByFile(ctx.file) ?? []) collectModule(mod);
|
|
5662
|
+
for (const mod of ctx.server.moduleGraph.getModulesByFile((0, _weapp_tailwindcss_shared.cleanUrl)(ctx.file)) ?? []) collectModule(mod);
|
|
5663
|
+
collectModule(ctx.server.moduleGraph.getModuleById?.(ctx.file));
|
|
5664
|
+
collectModule(ctx.server.moduleGraph.getModuleById?.((0, _weapp_tailwindcss_shared.cleanUrl)(ctx.file)));
|
|
5665
|
+
return modules;
|
|
5666
|
+
}
|
|
5208
5667
|
function resolveModuleHotUrl(mod) {
|
|
5209
5668
|
if (typeof mod.url === "string" && mod.url.length > 0) return mod.url;
|
|
5210
5669
|
if (typeof mod.id === "string" && mod.id.startsWith("/")) return mod.id;
|
|
@@ -5685,6 +6144,15 @@ function sameStringList(first, second) {
|
|
|
5685
6144
|
if (!first || !second || first.length !== second.length) return false;
|
|
5686
6145
|
return first.every((item, index) => item === second[index]);
|
|
5687
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
|
+
}
|
|
5688
6156
|
function normalizeViteStylePlatform(value, appType) {
|
|
5689
6157
|
return require_context.normalizeFrameworkStylePlatform(value, appType);
|
|
5690
6158
|
}
|
|
@@ -5697,6 +6165,13 @@ function inferPlatformFromOutDir(outDir) {
|
|
|
5697
6165
|
function isWebOrNativeAppPlatform(platform) {
|
|
5698
6166
|
return platform === "h5" || platform === "web" || platform?.startsWith("web-") === true || platform === "app" || platform === "app-plus" || platform?.startsWith("app-") === true;
|
|
5699
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
|
+
}
|
|
5700
6175
|
/**
|
|
5701
6176
|
* @name WeappTailwindcss
|
|
5702
6177
|
* @description uni-app vite / uni-app-x 版本插件
|
|
@@ -5705,7 +6180,7 @@ function isWebOrNativeAppPlatform(platform) {
|
|
|
5705
6180
|
function WeappTailwindcss(options = {}) {
|
|
5706
6181
|
const hasExplicitAppType = typeof options.appType === "string" && options.appType.trim().length > 0;
|
|
5707
6182
|
const hasExplicitTailwindcssBasedir = typeof options.tailwindcssBasedir === "string" && options.tailwindcssBasedir.trim().length > 0;
|
|
5708
|
-
const rawCssEntries =
|
|
6183
|
+
const rawCssEntries = collectConfiguredCssEntries(options);
|
|
5709
6184
|
const opts = require_context.getCompilerContext({
|
|
5710
6185
|
...options,
|
|
5711
6186
|
__internalDeferMissingCssEntriesWarning: true
|
|
@@ -5724,7 +6199,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
5724
6199
|
return changed;
|
|
5725
6200
|
};
|
|
5726
6201
|
syncCssEntriesFromAnchor(opts.tailwindcssBasedir);
|
|
5727
|
-
const { disabled, customAttributes, onLoad, mainCssChunkMatcher, styleHandler, jsHandler, tailwindRuntime, refreshTailwindcssRuntime, uniAppX, disabledDefaultTemplateHandler } = opts;
|
|
6202
|
+
const { disabled, customAttributes, onLoad, mainCssChunkMatcher, styleHandler, jsHandler, tailwindRuntime, refreshTailwindcssRuntime, uniAppX, disabledDefaultTemplateHandler, styleInjector } = opts;
|
|
5728
6203
|
const initialTailwindRuntime = tailwindRuntime;
|
|
5729
6204
|
const refreshTailwindRuntime = refreshTailwindcssRuntime;
|
|
5730
6205
|
const uniAppXEnabled = require_tailwindcss.isUniAppXEnabled(uniAppX);
|
|
@@ -5733,18 +6208,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
5733
6208
|
if (!disabledOptions.plugin && tailwindcssMajorVersion !== 4) throw new Error("weapp-tailwindcss/vite 新生成管线仅支持 Tailwind CSS v4,请升级 tailwindcss 或停留在旧版 weapp-tailwindcss。");
|
|
5734
6209
|
const shouldOwnTailwindGeneration = !disabledOptions.plugin;
|
|
5735
6210
|
const shouldRewriteCssImports = opts.rewriteCssImports === true;
|
|
5736
|
-
|
|
5737
|
-
appType: opts.appType,
|
|
5738
|
-
platform: opts.cssOptions?.platform ?? opts.platform,
|
|
5739
|
-
tailwindcssMajorVersion,
|
|
5740
|
-
uniAppX
|
|
5741
|
-
});
|
|
5742
|
-
const generatorBranch = require_generator.resolveGeneratorRuntimeBranch(generatorOptions, {
|
|
5743
|
-
appType: opts.appType,
|
|
5744
|
-
platform: opts.cssOptions?.platform ?? opts.platform,
|
|
5745
|
-
tailwindcssMajorVersion,
|
|
5746
|
-
uniAppX
|
|
5747
|
-
});
|
|
6211
|
+
let resolvedConfig;
|
|
5748
6212
|
const resolveViteStylePlatform = () => {
|
|
5749
6213
|
const explicit = normalizeViteStylePlatform(opts.cssOptions?.platform ?? opts.platform, opts.appType);
|
|
5750
6214
|
if (explicit) return explicit;
|
|
@@ -5754,9 +6218,23 @@ function WeappTailwindcss(options = {}) {
|
|
|
5754
6218
|
}
|
|
5755
6219
|
return inferPlatformFromOutDir(resolvedConfig?.build?.outDir);
|
|
5756
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();
|
|
5757
6235
|
const transformEarlyMiniProgramCss = (code) => {
|
|
5758
6236
|
const platform = resolveViteStylePlatform();
|
|
5759
|
-
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) :
|
|
6237
|
+
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) : resolveCurrentGeneratorBranch().isWeb)) return code;
|
|
5760
6238
|
let transformedCode = code;
|
|
5761
6239
|
if (transformedCode.includes("#if")) transformedCode = (0, _weapp_tailwindcss_postcss.compileCssMacroConditionalComments)(transformedCode, { platform: resolveViteStylePlatform() });
|
|
5762
6240
|
if (transformedCode.includes("@layer")) transformedCode = (0, _weapp_tailwindcss_postcss.unwrapUnsupportedCascadeLayers)(transformedCode);
|
|
@@ -5764,10 +6242,10 @@ function WeappTailwindcss(options = {}) {
|
|
|
5764
6242
|
};
|
|
5765
6243
|
const finalizeViteMiniProgramCss = (css) => {
|
|
5766
6244
|
const platform = resolveViteStylePlatform();
|
|
5767
|
-
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) :
|
|
6245
|
+
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) : resolveCurrentGeneratorBranch().isWeb)) return css;
|
|
5768
6246
|
return (0, _weapp_tailwindcss_postcss.unwrapUnsupportedCascadeLayers)(css);
|
|
5769
6247
|
};
|
|
5770
|
-
const shouldInferAppType = !hasExplicitAppType && !
|
|
6248
|
+
const shouldInferAppType = !hasExplicitAppType && !initialGeneratorBranch.isWeb;
|
|
5771
6249
|
const hasInitialTailwindCssRoots = require_v4_engine.hasConfiguredTailwindV4CssRoots({
|
|
5772
6250
|
...options,
|
|
5773
6251
|
cssEntries: opts.cssEntries ?? options.cssEntries
|
|
@@ -5847,7 +6325,6 @@ function WeappTailwindcss(options = {}) {
|
|
|
5847
6325
|
await refreshRuntimeStateForAutoCssSources?.(true);
|
|
5848
6326
|
};
|
|
5849
6327
|
const customAttributesEntities = require_context.toCustomAttributesEntities(customAttributes);
|
|
5850
|
-
let resolvedConfig;
|
|
5851
6328
|
let recordedGeneratorCandidates;
|
|
5852
6329
|
const sourceCandidateCollector = require_hmr_timing.createSourceCandidateCollector({ bareArbitraryValues: opts.arbitraryValues?.bareArbitraryValues });
|
|
5853
6330
|
const sourceCandidateScanCache = new lru_cache.LRUCache({ max: SOURCE_CANDIDATE_SCAN_CACHE_MAX });
|
|
@@ -5903,6 +6380,15 @@ function WeappTailwindcss(options = {}) {
|
|
|
5903
6380
|
const getSourceCandidateSourcesForEntries = (entries, options) => sourceCandidateCollector.sourcesForEntries(entries, options);
|
|
5904
6381
|
const isWatchBuild = () => resolvedConfig?.command === "build" && resolvedConfig.build.watch != null;
|
|
5905
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";
|
|
6383
|
+
const isCurrentWebLikeStylePlatform = () => {
|
|
6384
|
+
const platform = resolveViteStylePlatform();
|
|
6385
|
+
return platform ? isWebOrNativeAppPlatform(platform) : resolveCurrentGeneratorBranch().isWeb;
|
|
6386
|
+
};
|
|
6387
|
+
const isNuxtPageMacroHotModule = (id) => {
|
|
6388
|
+
if (typeof id !== "string" || !/[?&]macro=true(?:&|$)/.test(id)) return false;
|
|
6389
|
+
const cleanId = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6390
|
+
return cleanId.includes("/pages/") && /\.(?:vue|tsx?|jsx?)$/.test(cleanId);
|
|
6391
|
+
};
|
|
5906
6392
|
const hasSourceCandidateScanState = () => sourceCandidateScanSignature !== void 0;
|
|
5907
6393
|
const normalizeSourceScanDependency = (file) => node_path.default.normalize(node_path.default.resolve((0, _weapp_tailwindcss_shared.cleanUrl)(file)));
|
|
5908
6394
|
const isSourceScanDependency = (file) => sourceScanDependencies.has(normalizeSourceScanDependency(file));
|
|
@@ -6116,47 +6602,58 @@ function WeappTailwindcss(options = {}) {
|
|
|
6116
6602
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6117
6603
|
const requestFile = require_source_candidate_scan_signature.isCSSRequest(id) ? id : file;
|
|
6118
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);
|
|
6119
6606
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
6120
6607
|
const isHarmonyAppStyleTarget = isHarmonyAppBuildTarget();
|
|
6121
|
-
const isNativeAppStyleTarget = require_utils.resolveUniUtsPlatform().isApp || isHarmonyAppStyleTarget;
|
|
6608
|
+
const isNativeAppStyleTarget = opts.appType === "uni-app-x" && (require_utils.resolveUniUtsPlatform().isApp || isHarmonyAppStyleTarget);
|
|
6122
6609
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType);
|
|
6123
|
-
const
|
|
6610
|
+
const currentGeneratorOptions = resolveCurrentGeneratorOptions();
|
|
6611
|
+
const currentGeneratorBranch = resolveCurrentGeneratorBranch();
|
|
6612
|
+
const outputFile = resolveViteCssPipelineOutputFile(requestFile, opts, rootDir, currentGeneratorBranch.isWeb, isNativeAppStyleTarget, sourceRoot);
|
|
6124
6613
|
const runtime = getRecordedGeneratorCandidates() ?? getSourceCandidates() ?? await ensureRuntimeClassSet();
|
|
6125
6614
|
const outputCssHandlerOptions = transformCssHandlerOptions.getCssHandlerOptions(outputFile);
|
|
6126
6615
|
const cssHandlerOptions = {
|
|
6127
6616
|
...transformCssHandlerOptions.getCssHandlerOptions(file),
|
|
6128
6617
|
isMainChunk: outputCssHandlerOptions.isMainChunk
|
|
6129
6618
|
};
|
|
6130
|
-
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) ? {
|
|
6131
6620
|
base: node_path.default.dirname(node_path.default.resolve(file)),
|
|
6132
|
-
css:
|
|
6621
|
+
css: generatorCode,
|
|
6133
6622
|
file: node_path.default.resolve(file)
|
|
6134
6623
|
} : void 0);
|
|
6135
|
-
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));
|
|
6136
6625
|
const generated = await require_source_candidate_scan_signature.generateTailwindV4Css({
|
|
6137
6626
|
opts,
|
|
6138
6627
|
runtimeState,
|
|
6139
6628
|
runtime,
|
|
6140
|
-
rawSource:
|
|
6629
|
+
rawSource: generatorCode,
|
|
6141
6630
|
file,
|
|
6142
6631
|
outputFile,
|
|
6143
6632
|
cssHandlerOptions,
|
|
6144
6633
|
cssUserHandlerOptions: transformCssHandlerOptions.getCssUserHandlerOptions(file),
|
|
6145
6634
|
cssSources: transientCssSource ? [transientCssSource] : void 0,
|
|
6146
6635
|
getSourceCandidatesForEntries,
|
|
6636
|
+
generatorPlatform: resolveGeneratorPlatform(),
|
|
6147
6637
|
styleHandler,
|
|
6148
6638
|
debug,
|
|
6149
6639
|
previousCss: viteGeneratedCssByFile.get(file),
|
|
6150
|
-
deferEmptyScopedCssSource: shouldDeferEmptyScopedCssSource
|
|
6640
|
+
deferEmptyScopedCssSource: shouldDeferEmptyScopedCssSource,
|
|
6641
|
+
restoreLocalCssImports: !currentGeneratorBranch.isWeb
|
|
6151
6642
|
});
|
|
6152
6643
|
if (!generated) return;
|
|
6153
|
-
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), {
|
|
6154
6651
|
opts,
|
|
6155
6652
|
tokenSources: require_hmr_timing.createCssTokenSourceMap(getSourceCandidateSourcesForEntries(void 0), opts)
|
|
6156
6653
|
});
|
|
6157
6654
|
for (const dependency of generated.dependencies) hookContext?.addWatchFile?.(dependency);
|
|
6158
6655
|
viteGeneratedCssByFile.set(file, tracedCss);
|
|
6159
|
-
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("/");
|
|
6160
6657
|
recordViteProcessedCssAssetResult(file, tracedCss, {
|
|
6161
6658
|
injectIntoMain: shouldInjectGeneratedCssIntoMain,
|
|
6162
6659
|
outputFile
|
|
@@ -6188,7 +6685,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
6188
6685
|
onTailwindRootCss: (id, code) => registerAutoCssSource(id, code),
|
|
6189
6686
|
onCssSourceTransform: (id, code) => cssMemory.refreshRememberedCssSourceBySourceFile(id, code),
|
|
6190
6687
|
shouldGenerateCss: (_id, code) => hasVitePipelineTailwindGenerationDirective(code),
|
|
6191
|
-
shouldDeferGeneration: (_id, code) => !shouldRewriteCssImports && require_v4_engine.hasTailwindRootDirectives(code, { importFallback:
|
|
6688
|
+
shouldDeferGeneration: (_id, code) => !shouldRewriteCssImports && require_v4_engine.hasTailwindRootDirectives(code, { importFallback: resolveCurrentGeneratorOptions().importFallback }),
|
|
6192
6689
|
shouldOwnTailwindGeneration,
|
|
6193
6690
|
shouldRewrite: shouldRewriteCssImports,
|
|
6194
6691
|
weappTailwindcssDirPosix
|
|
@@ -6287,7 +6784,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
6287
6784
|
order: "pre",
|
|
6288
6785
|
async handler(code, id) {
|
|
6289
6786
|
let transformedCode = code;
|
|
6290
|
-
if (shouldOwnTailwindGeneration && !
|
|
6787
|
+
if (shouldOwnTailwindGeneration && !resolveCurrentGeneratorBranch().isWeb && require_source_candidate_scan_signature.isCSSRequest(id)) transformedCode = transformEarlyMiniProgramCss(code);
|
|
6291
6788
|
const shouldReturnTransformedCode = transformedCode !== code;
|
|
6292
6789
|
if (shouldOwnTailwindGeneration) cssMemory.rememberKnownSfcSource(id, transformedCode);
|
|
6293
6790
|
if (!shouldOwnTailwindGeneration || !require_hmr_timing.isSourceCandidateRequest(id) || !shouldCollectTransformedSourceCandidates(id)) {
|
|
@@ -6330,13 +6827,27 @@ function WeappTailwindcss(options = {}) {
|
|
|
6330
6827
|
return hmrTimingRecorder.measure("sourceCandidates.handleHotUpdate", async () => {
|
|
6331
6828
|
const isSourceCandidateHotUpdate = shouldOwnTailwindGeneration && require_hmr_timing.isSourceCandidateRequest(ctx.file);
|
|
6332
6829
|
await syncChangedSourceCandidateFile(ctx.file);
|
|
6333
|
-
|
|
6830
|
+
const isWebLikeHotUpdate = isCurrentWebLikeStylePlatform();
|
|
6831
|
+
if (isSourceCandidateHotUpdate) {
|
|
6832
|
+
invalidateRecordedGeneratorCandidates();
|
|
6833
|
+
if (isWebLikeHotUpdate) {
|
|
6834
|
+
await refreshRuntimeStateForAutoCssSources?.(true);
|
|
6835
|
+
await syncSourceCandidateScan({ force: true });
|
|
6836
|
+
}
|
|
6837
|
+
}
|
|
6334
6838
|
const cssModules = resolveHotTailwindCssModules(ctx, tailwindRootCssModuleIds);
|
|
6335
|
-
|
|
6839
|
+
const sourceModules = isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) ? resolveHotSourceModules(ctx) : ctx.modules;
|
|
6840
|
+
if (isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && !isWebLikeHotUpdate && (!hasSelfAcceptingNonStyleHotModule(sourceModules) && cssModules.length === 0 || cssModules.length > 0 && isUniViteProject())) {
|
|
6841
|
+
sendFullReloadForUnresolvedHotUpdate(ctx);
|
|
6842
|
+
return [];
|
|
6843
|
+
}
|
|
6844
|
+
if (isWebLikeHotUpdate && isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && ctx.modules.some((mod) => isNuxtPageMacroHotModule(mod.id ?? mod.url))) {
|
|
6336
6845
|
sendFullReloadForUnresolvedHotUpdate(ctx);
|
|
6337
6846
|
return [];
|
|
6338
6847
|
}
|
|
6339
6848
|
sendSupplementalCssHotUpdates(ctx, cssModules);
|
|
6849
|
+
if (isWebLikeHotUpdate && isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file)) return;
|
|
6850
|
+
if (isSourceCandidateHotUpdate && !require_source_candidate_scan_signature.isSourceStyleRequest(ctx.file) && cssModules.length > 0) return [...sourceModules, ...cssModules];
|
|
6340
6851
|
return cssModules.length > 0 ? [...ctx.modules, ...cssModules] : void 0;
|
|
6341
6852
|
}, { emit: false });
|
|
6342
6853
|
},
|
|
@@ -6353,10 +6864,10 @@ function WeappTailwindcss(options = {}) {
|
|
|
6353
6864
|
shouldGenerate: () => shouldOwnTailwindGeneration
|
|
6354
6865
|
}),
|
|
6355
6866
|
createViteServeJsTransformPlugin({
|
|
6356
|
-
createHandlerOptions: serveJsHandlerOptions,
|
|
6867
|
+
createHandlerOptions: (file) => serveJsHandlerOptions(file, opts.appType === "uni-app-vite" && isUniAppViteWebviewStylePlatform(resolveViteStylePlatform()) ? { needEscaped: true } : void 0),
|
|
6357
6868
|
getCommand: () => resolvedConfig?.command,
|
|
6358
6869
|
jsHandler,
|
|
6359
|
-
shouldTransform: () => shouldOwnTailwindGeneration && !
|
|
6870
|
+
shouldTransform: () => shouldOwnTailwindGeneration && (!resolveCurrentGeneratorBranch().isWeb || opts.appType === "uni-app-vite" && isUniAppViteWebviewStylePlatform(resolveViteStylePlatform())),
|
|
6360
6871
|
transformRuntime: ensureRuntimeClassSet
|
|
6361
6872
|
}),
|
|
6362
6873
|
{
|
|
@@ -6433,6 +6944,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
6433
6944
|
];
|
|
6434
6945
|
if (uniAppXPlugins) plugins.push(...uniAppXPlugins);
|
|
6435
6946
|
plugins.push(cssFinalizerOutputPlugin);
|
|
6947
|
+
plugins.push(...require_source_candidate_scan_signature.createBuiltinViteStyleInjectorPlugins(styleInjector, () => opts.appType));
|
|
6436
6948
|
return plugins;
|
|
6437
6949
|
}
|
|
6438
6950
|
//#endregion
|