weapp-tailwindcss 5.1.5 → 5.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/bundlers/shared/generator-css/types.d.ts +1 -0
- package/dist/bundlers/shared/generator-css/user-css.d.ts +4 -1
- package/dist/bundlers/vite/generate-bundle/finalize.d.ts +1 -0
- package/dist/bundlers/vite/generate-bundle/remembered-css-replay.d.ts +1 -0
- package/dist/bundlers/vite/processed-css-assets.d.ts +7 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/pipeline-helpers.d.ts +10 -0
- package/dist/{context-rrYZuUBU.mjs → context-BqeDu1Ha.mjs} +5 -4
- package/dist/{context-BziwyWy1.js → context-C7KTDlrG.js} +5 -4
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/{generator-24-HgU9F.mjs → generator-BOt2Tvx3.mjs} +2 -2
- package/dist/{generator-CilgHtxb.js → generator-DASZwC6t.js} +2 -2
- package/dist/generator.js +2 -2
- package/dist/generator.mjs +2 -2
- package/dist/{gulp-CuVsZdO9.js → gulp-D6hsaTLM.js} +4 -4
- package/dist/{gulp-ygWfmOqh.mjs → gulp-alDZryyB.mjs} +4 -4
- package/dist/gulp.js +1 -1
- package/dist/gulp.mjs +1 -1
- package/dist/{hmr-timing-BKdCeIrn.js → hmr-timing-BIr_CiPW.js} +55 -566
- package/dist/{hmr-timing-Dh_nn3w5.mjs → hmr-timing-CYwVMRol.mjs} +32 -513
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/postcss.js +2 -2
- package/dist/postcss.mjs +2 -2
- package/dist/presets.js +6 -3
- package/dist/presets.mjs +6 -3
- package/dist/rspack.js +1 -1
- package/dist/rspack.mjs +1 -1
- package/dist/runtime-branch/generator-target-env.d.ts +1 -0
- package/dist/{source-candidate-scan-signature-DATRnS1X.mjs → source-candidate-scan-signature-D97ZEXcj.mjs} +3 -3
- package/dist/{source-candidate-scan-signature-DIj9m4wB.js → source-candidate-scan-signature-Djr2Hw8y.js} +3 -3
- package/dist/{tailwindcss-C-uM4rB8.mjs → tailwindcss-DDGD90w7.mjs} +15 -2
- package/dist/{tailwindcss-BwoNQ3t8.js → tailwindcss-DPxJpRVP.js} +15 -2
- package/dist/{transform-KLD1tJdb.js → transform-CvqqZBuq.js} +1 -1
- package/dist/{transform-DHLemtaX.mjs → transform-DPPr79r2.mjs} +1 -1
- package/dist/uni-app-x/web-preflight-reset.d.ts +3 -0
- package/dist/{v4-engine-CKtsdKxK.js → v4-engine-3UmJkAY7.js} +641 -3
- package/dist/{v4-engine-BuuYDXt1.mjs → v4-engine-CYSrDVNp.mjs} +560 -6
- package/dist/{vite-Yp14HNyS.js → vite-BJRlG835.js} +636 -114
- package/dist/{vite-cH0tTMHc.mjs → vite-XxJh7Xtu.mjs} +637 -115
- package/dist/vite.js +1 -1
- package/dist/vite.mjs +1 -1
- package/dist/weapp-tw-css-import-rewrite-loader.js +3078 -2907
- package/dist/{webpack-DN3tgLbF.js → webpack-BxBOMUtY.js} +286 -47
- package/dist/{webpack-DBhmJ-_P.mjs → webpack-eN8WzIT-.mjs} +280 -41
- package/dist/webpack.js +1 -1
- package/dist/webpack.mjs +1 -1
- package/package.json +3 -3
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
const require_rolldown_runtime = require("./rolldown-runtime-emK7D4bc.js");
|
|
2
2
|
const require_framework = require("./framework.js");
|
|
3
|
-
const require_v4_engine = require("./v4-engine-
|
|
4
|
-
const require_generator = require("./generator-
|
|
3
|
+
const require_v4_engine = require("./v4-engine-3UmJkAY7.js");
|
|
4
|
+
const require_generator = require("./generator-DASZwC6t.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-C7KTDlrG.js");
|
|
7
|
+
const require_tailwindcss = require("./tailwindcss-DPxJpRVP.js");
|
|
8
|
+
const require_hmr_timing = require("./hmr-timing-BIr_CiPW.js");
|
|
9
|
+
const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-Djr2Hw8y.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-CvqqZBuq.js")).then((mod) => mod.transformUVue));
|
|
519
519
|
return transformUVuePromise;
|
|
520
520
|
}
|
|
521
521
|
const preprocessorLangs = /* @__PURE__ */ new Set([
|
|
@@ -749,6 +749,68 @@ function createUniAppXAssetTask(file, originalSource, outDir, options) {
|
|
|
749
749
|
});
|
|
750
750
|
};
|
|
751
751
|
}
|
|
752
|
+
const UNI_APP_X_WEB_PREFLIGHT_RESET_CSS = [`/* weapp-tailwindcss uni-app-x web preflight reset */`, `${[
|
|
753
|
+
"uni-ad-draw",
|
|
754
|
+
"uni-ad-fullscreen-video",
|
|
755
|
+
"uni-ad-interactive",
|
|
756
|
+
"uni-ad-interstitial",
|
|
757
|
+
"uni-ad-rewarded-video",
|
|
758
|
+
"uni-ad",
|
|
759
|
+
"uni-animation-view",
|
|
760
|
+
"uni-audio",
|
|
761
|
+
"uni-block",
|
|
762
|
+
"uni-button",
|
|
763
|
+
"uni-camera",
|
|
764
|
+
"uni-canvas",
|
|
765
|
+
"uni-checkbox-group",
|
|
766
|
+
"uni-checkbox",
|
|
767
|
+
"uni-cover-image",
|
|
768
|
+
"uni-cover-view",
|
|
769
|
+
"uni-custom-tab-bar",
|
|
770
|
+
"uni-editor",
|
|
771
|
+
"uni-form",
|
|
772
|
+
"uni-icon",
|
|
773
|
+
"uni-image",
|
|
774
|
+
"uni-input",
|
|
775
|
+
"uni-label",
|
|
776
|
+
"uni-list-item",
|
|
777
|
+
"uni-list-view",
|
|
778
|
+
"uni-live-player",
|
|
779
|
+
"uni-live-pusher",
|
|
780
|
+
"uni-map",
|
|
781
|
+
"uni-match-media",
|
|
782
|
+
"uni-movable-area",
|
|
783
|
+
"uni-movable-view",
|
|
784
|
+
"uni-navigation-bar",
|
|
785
|
+
"uni-navigator",
|
|
786
|
+
"uni-open-data",
|
|
787
|
+
"uni-page-meta",
|
|
788
|
+
"uni-picker-view",
|
|
789
|
+
"uni-picker",
|
|
790
|
+
"uni-progress",
|
|
791
|
+
"uni-radio-group",
|
|
792
|
+
"uni-radio",
|
|
793
|
+
"uni-rich-text",
|
|
794
|
+
"uni-scroll-view",
|
|
795
|
+
"uni-slider",
|
|
796
|
+
"uni-sticky-header",
|
|
797
|
+
"uni-sticky-section",
|
|
798
|
+
"uni-swiper-item",
|
|
799
|
+
"uni-swiper",
|
|
800
|
+
"uni-switch",
|
|
801
|
+
"uni-template",
|
|
802
|
+
"uni-text",
|
|
803
|
+
"uni-textarea",
|
|
804
|
+
"uni-unicloud-db",
|
|
805
|
+
"uni-video",
|
|
806
|
+
"uni-view",
|
|
807
|
+
"uni-web-view"
|
|
808
|
+
].map((tag) => `uni-app ${tag}`).join(", ")}{border-width:0;}`].join("\n");
|
|
809
|
+
const TAILWIND_PREFLIGHT_BORDER_RE = /\bborder\s*:\s*0(?:px)?\s+solid\b/;
|
|
810
|
+
function withUniAppXWebPreflightReset(css, enabled) {
|
|
811
|
+
if (!enabled || css.includes("weapp-tailwindcss uni-app-x web preflight reset") || !TAILWIND_PREFLIGHT_BORDER_RE.test(css)) return css;
|
|
812
|
+
return css.length > 0 ? `${UNI_APP_X_WEB_PREFLIGHT_RESET_CSS}\n${css}` : UNI_APP_X_WEB_PREFLIGHT_RESET_CSS;
|
|
813
|
+
}
|
|
752
814
|
//#endregion
|
|
753
815
|
//#region src/bundlers/vite/generate-bundle/configured-css-sources.ts
|
|
754
816
|
function collectConfiguredTailwindV4CssSources(opts) {
|
|
@@ -1061,7 +1123,7 @@ function normalizeMatchedCssSourcePath(file) {
|
|
|
1061
1123
|
if (!file || !node_path.default.isAbsolute(file)) return;
|
|
1062
1124
|
return node_path.default.resolve(file.replace(/[?#].*$/, ""));
|
|
1063
1125
|
}
|
|
1064
|
-
function collectConfiguredCssEntries(opts) {
|
|
1126
|
+
function collectConfiguredCssEntries$1(opts) {
|
|
1065
1127
|
const runtimeCssEntries = opts.tailwindcssRuntimeOptions?.tailwindcss?.v4?.cssEntries ?? [];
|
|
1066
1128
|
return [
|
|
1067
1129
|
...opts.cssEntries ?? [],
|
|
@@ -1084,7 +1146,7 @@ function collectCssConfigBaseCandidates(source, file, outputRoot, opts) {
|
|
|
1084
1146
|
const runtimeProjectRoot = typeof opts.tailwindcssRuntimeOptions?.projectRoot === "string" ? opts.tailwindcssRuntimeOptions.projectRoot : void 0;
|
|
1085
1147
|
const sourceBaseFallback = opts.tailwindcss?.v4?.base ?? runtimeProjectRoot ?? opts.tailwindcssBasedir ?? outputRoot;
|
|
1086
1148
|
const sourceRoot = opts.tailwindcssBasedir ?? runtimeProjectRoot;
|
|
1087
|
-
const configuredCssEntries = collectConfiguredCssEntries(opts);
|
|
1149
|
+
const configuredCssEntries = collectConfiguredCssEntries$1(opts);
|
|
1088
1150
|
for (const cssEntry of configuredCssEntries) {
|
|
1089
1151
|
const resolvedCssEntry = node_path.default.resolve(cssEntry);
|
|
1090
1152
|
if (configuredCssEntries.length === 1 || isMatchingCssSourceFile(file, resolvedCssEntry, outputRoot) || hasMatchingStyleFileBase(file, resolvedCssEntry, outputRoot, sourceRoot)) addCandidate(node_path.default.dirname(resolvedCssEntry));
|
|
@@ -2020,6 +2082,21 @@ function appendCss$1(baseCss, css) {
|
|
|
2020
2082
|
if (css.length === 0) return baseCss;
|
|
2021
2083
|
return `${baseCss}\n${css}`;
|
|
2022
2084
|
}
|
|
2085
|
+
function normalizeCssRecordIdentity(css) {
|
|
2086
|
+
return css.trim();
|
|
2087
|
+
}
|
|
2088
|
+
function hasNonCommentCss(css) {
|
|
2089
|
+
return css.replace(/\/\*[\s\S]*?\*\//g, "").trim().length > 0;
|
|
2090
|
+
}
|
|
2091
|
+
function dedupeViteCssResults(records) {
|
|
2092
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2093
|
+
return records.filter((record) => {
|
|
2094
|
+
const key = `${require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile ?? "")}\0${normalizeCssRecordIdentity(record.css)}`;
|
|
2095
|
+
if (seen.has(key)) return false;
|
|
2096
|
+
seen.add(key);
|
|
2097
|
+
return true;
|
|
2098
|
+
});
|
|
2099
|
+
}
|
|
2023
2100
|
function removeTailwindSourceMediaWrappers(css) {
|
|
2024
2101
|
if (!css.includes("@media source(")) return css;
|
|
2025
2102
|
try {
|
|
@@ -2096,6 +2173,183 @@ function collectRootStyleBundleCssSources(bundle, excludedFile) {
|
|
|
2096
2173
|
}
|
|
2097
2174
|
return sources;
|
|
2098
2175
|
}
|
|
2176
|
+
function isHtmlOutputFile(file) {
|
|
2177
|
+
return /\.html(?:$|[?#])/i.test(file);
|
|
2178
|
+
}
|
|
2179
|
+
function stripQueryAndHash(file) {
|
|
2180
|
+
return file.replace(/[?#].*$/, "");
|
|
2181
|
+
}
|
|
2182
|
+
function resolveHtmlLinkedStyleFile(htmlFile, request) {
|
|
2183
|
+
if (!isStyleImportRequest(request)) return;
|
|
2184
|
+
const cleanRequest = stripQueryAndHash(request);
|
|
2185
|
+
if (cleanRequest.startsWith("/")) return require_source_candidate_scan_signature.normalizeOutputPathKey(cleanRequest.slice(1));
|
|
2186
|
+
const htmlDir = posix.posix.dirname(require_source_candidate_scan_signature.normalizeOutputPathKey(stripQueryAndHash(htmlFile)));
|
|
2187
|
+
return require_source_candidate_scan_signature.normalizeOutputPathKey(posix.posix.join(htmlDir === "." ? "" : htmlDir, cleanRequest));
|
|
2188
|
+
}
|
|
2189
|
+
function collectHtmlLinkedStyleFiles(bundle) {
|
|
2190
|
+
const linkedFiles = /* @__PURE__ */ new Set();
|
|
2191
|
+
const linkedBasenames = /* @__PURE__ */ new Set();
|
|
2192
|
+
const linkHrefRE = /<link\s[^>]*href\s*=\s*(["'])([^"']+)\1[^>]*>/gi;
|
|
2193
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2194
|
+
if (output.type !== "asset") continue;
|
|
2195
|
+
const htmlFile = getAssetFile$1(bundleFile, output);
|
|
2196
|
+
if (!isHtmlOutputFile(htmlFile)) continue;
|
|
2197
|
+
const html = readAssetSource$2(output);
|
|
2198
|
+
for (const match of html.matchAll(linkHrefRE)) {
|
|
2199
|
+
const href = match[2];
|
|
2200
|
+
if (!href) continue;
|
|
2201
|
+
const linkedFile = resolveHtmlLinkedStyleFile(htmlFile, href);
|
|
2202
|
+
if (!linkedFile || !isRootStyleOutputFile(linkedFile)) continue;
|
|
2203
|
+
linkedFiles.add(linkedFile);
|
|
2204
|
+
linkedBasenames.add(posix.posix.basename(linkedFile));
|
|
2205
|
+
}
|
|
2206
|
+
}
|
|
2207
|
+
return {
|
|
2208
|
+
linkedBasenames,
|
|
2209
|
+
linkedFiles
|
|
2210
|
+
};
|
|
2211
|
+
}
|
|
2212
|
+
function isLinkedStyleFile(file, linked) {
|
|
2213
|
+
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(stripQueryAndHash(file));
|
|
2214
|
+
return linked.linkedFiles.has(fileKey) || isRootStyleOutputFile(fileKey) && linked.linkedBasenames.has(posix.posix.basename(fileKey));
|
|
2215
|
+
}
|
|
2216
|
+
function removeDuplicateUnlinkedRootCssAssetsReferencedByHtml(bundle, options = {}) {
|
|
2217
|
+
const linked = collectHtmlLinkedStyleFiles(bundle);
|
|
2218
|
+
if (linked.linkedFiles.size === 0 && linked.linkedBasenames.size === 0) return 0;
|
|
2219
|
+
const linkedSources = /* @__PURE__ */ new Set();
|
|
2220
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2221
|
+
if (output.type !== "asset") continue;
|
|
2222
|
+
const file = getAssetFile$1(bundleFile, output);
|
|
2223
|
+
if (!isCssOutputFile(file) || isMiniProgramStyleOutputFile(file) || !isLinkedStyleFile(file, linked)) continue;
|
|
2224
|
+
const source = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(readAssetSource$2(output)).trim();
|
|
2225
|
+
if (source.length > 0) linkedSources.add(source);
|
|
2226
|
+
}
|
|
2227
|
+
if (linkedSources.size === 0) return 0;
|
|
2228
|
+
let removed = 0;
|
|
2229
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2230
|
+
if (output.type !== "asset") continue;
|
|
2231
|
+
const file = getAssetFile$1(bundleFile, output);
|
|
2232
|
+
if (!isRootStyleOutputFile(file) || isMiniProgramStyleOutputFile(file) || isLinkedStyleFile(file, linked)) continue;
|
|
2233
|
+
const source = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(readAssetSource$2(output)).trim();
|
|
2234
|
+
if (!linkedSources.has(source)) continue;
|
|
2235
|
+
delete bundle[bundleFile];
|
|
2236
|
+
options.debug?.("remove duplicate unlinked root css asset referenced by html: %s", file);
|
|
2237
|
+
removed++;
|
|
2238
|
+
}
|
|
2239
|
+
return removed;
|
|
2240
|
+
}
|
|
2241
|
+
const VUE_SCOPED_ATTR_RE = /\[data-v-[^\]]+\]/gi;
|
|
2242
|
+
function hasVueScopedAttr(value) {
|
|
2243
|
+
VUE_SCOPED_ATTR_RE.lastIndex = 0;
|
|
2244
|
+
const matched = VUE_SCOPED_ATTR_RE.test(value);
|
|
2245
|
+
VUE_SCOPED_ATTR_RE.lastIndex = 0;
|
|
2246
|
+
return matched;
|
|
2247
|
+
}
|
|
2248
|
+
function normalizeCssSignatureValue(value) {
|
|
2249
|
+
return value.replace(VUE_SCOPED_ATTR_RE, "").replace(/\s+/g, " ").replace(/\s*([>+~])\s*/g, "$1").replace(/\(\s+/g, "(").replace(/\s+\)/g, ")").trim();
|
|
2250
|
+
}
|
|
2251
|
+
function createDeclarationSignature(rule) {
|
|
2252
|
+
return createDeclarationKeys(rule).sort().join(";");
|
|
2253
|
+
}
|
|
2254
|
+
function createRuleCoverageKey(selector, declarations) {
|
|
2255
|
+
return `${normalizeCssSignatureValue(selector)}\0${declarations}`;
|
|
2256
|
+
}
|
|
2257
|
+
function createDeclarationKeys(rule) {
|
|
2258
|
+
return (rule.nodes ?? []).filter((node) => node.type === "decl").map((node) => `${node.prop}:${normalizeCssSignatureValue(node.value)}${node.important ? "!important" : ""}`);
|
|
2259
|
+
}
|
|
2260
|
+
function createAtRuleCoverageKey(atRule) {
|
|
2261
|
+
return `${atRule.name}\0${normalizeCssSignatureValue(atRule.params)}\0${normalizeCssSignatureValue(atRule.toString())}`;
|
|
2262
|
+
}
|
|
2263
|
+
function hasClassSelector(selector) {
|
|
2264
|
+
return /(?:^|[^\\])\.[_a-z\u00A0-\uFFFF-]/i.test(normalizeCssSignatureValue(selector));
|
|
2265
|
+
}
|
|
2266
|
+
function isLikelyTailwindGlobalSelector(selector) {
|
|
2267
|
+
const normalized = normalizeCssSignatureValue(selector);
|
|
2268
|
+
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);
|
|
2269
|
+
}
|
|
2270
|
+
function isLikelyTailwindGlobalRule(rule) {
|
|
2271
|
+
return (rule.selectors ?? [rule.selector]).every((selector) => !hasClassSelector(selector) && isLikelyTailwindGlobalSelector(selector));
|
|
2272
|
+
}
|
|
2273
|
+
function isLikelyTailwindPropertyAtRule(atRule) {
|
|
2274
|
+
return atRule.name.toLowerCase() === "property" && normalizeCssSignatureValue(atRule.params).startsWith("--tw-");
|
|
2275
|
+
}
|
|
2276
|
+
function collectRootScopedComparableCssCoverage(cssSources) {
|
|
2277
|
+
const rules = /* @__PURE__ */ new Set();
|
|
2278
|
+
const atRules = /* @__PURE__ */ new Set();
|
|
2279
|
+
const declarationsBySelector = /* @__PURE__ */ new Map();
|
|
2280
|
+
for (const source of cssSources) try {
|
|
2281
|
+
const root = _weapp_tailwindcss_postcss.postcss.parse(source);
|
|
2282
|
+
root.walkRules((rule) => {
|
|
2283
|
+
const declarations = createDeclarationSignature(rule);
|
|
2284
|
+
if (declarations.length === 0) return;
|
|
2285
|
+
for (const selector of rule.selectors ?? [rule.selector]) {
|
|
2286
|
+
const normalizedSelector = normalizeCssSignatureValue(selector);
|
|
2287
|
+
rules.add(`${normalizedSelector}\0${declarations}`);
|
|
2288
|
+
const selectorDeclarations = declarationsBySelector.get(normalizedSelector) ?? /* @__PURE__ */ new Set();
|
|
2289
|
+
for (const declaration of createDeclarationKeys(rule)) selectorDeclarations.add(declaration);
|
|
2290
|
+
declarationsBySelector.set(normalizedSelector, selectorDeclarations);
|
|
2291
|
+
}
|
|
2292
|
+
});
|
|
2293
|
+
root.walkAtRules((atRule) => {
|
|
2294
|
+
atRules.add(createAtRuleCoverageKey(atRule));
|
|
2295
|
+
});
|
|
2296
|
+
} catch {}
|
|
2297
|
+
return {
|
|
2298
|
+
rules,
|
|
2299
|
+
atRules,
|
|
2300
|
+
declarationsBySelector
|
|
2301
|
+
};
|
|
2302
|
+
}
|
|
2303
|
+
function isRuleCoveredByRootCss(rule, coverage) {
|
|
2304
|
+
const declarations = createDeclarationSignature(rule);
|
|
2305
|
+
if (declarations.length === 0) return false;
|
|
2306
|
+
const selectors = rule.selectors ?? [rule.selector];
|
|
2307
|
+
if (selectors.every((selector) => coverage.rules.has(createRuleCoverageKey(selector, declarations)))) return true;
|
|
2308
|
+
const declarationKeys = createDeclarationKeys(rule);
|
|
2309
|
+
return declarationKeys.length > 0 && selectors.every((selector) => {
|
|
2310
|
+
const rootDeclarations = coverage.declarationsBySelector.get(normalizeCssSignatureValue(selector));
|
|
2311
|
+
return rootDeclarations != null && declarationKeys.every((declaration) => rootDeclarations.has(declaration));
|
|
2312
|
+
}) || selectors.every((selector) => coverage.declarationsBySelector.has(normalizeCssSignatureValue(selector)));
|
|
2313
|
+
}
|
|
2314
|
+
function removeScopedCssCoveredByRootStyleSources(css, rootSources) {
|
|
2315
|
+
if (!hasVueScopedAttr(css)) return css;
|
|
2316
|
+
const hasScopedTailwindGeneratedCss = /tailwindcss v\d/i.test(css);
|
|
2317
|
+
const coverage = collectRootScopedComparableCssCoverage(rootSources);
|
|
2318
|
+
if (coverage.rules.size === 0 && coverage.atRules.size === 0 && !hasScopedTailwindGeneratedCss) return css;
|
|
2319
|
+
try {
|
|
2320
|
+
const root = _weapp_tailwindcss_postcss.postcss.parse(css);
|
|
2321
|
+
let changed = false;
|
|
2322
|
+
root.walkComments((comment) => {
|
|
2323
|
+
if (/tailwindcss v\d/i.test(comment.text)) {
|
|
2324
|
+
comment.remove();
|
|
2325
|
+
changed = true;
|
|
2326
|
+
}
|
|
2327
|
+
});
|
|
2328
|
+
root.walkRules((rule) => {
|
|
2329
|
+
if (isRuleCoveredByRootCss(rule, coverage) || hasScopedTailwindGeneratedCss && isLikelyTailwindGlobalRule(rule)) {
|
|
2330
|
+
rule.remove();
|
|
2331
|
+
changed = true;
|
|
2332
|
+
}
|
|
2333
|
+
});
|
|
2334
|
+
root.walkAtRules((atRule) => {
|
|
2335
|
+
if (coverage.atRules.has(createAtRuleCoverageKey(atRule)) || hasScopedTailwindGeneratedCss && isLikelyTailwindPropertyAtRule(atRule)) {
|
|
2336
|
+
atRule.remove();
|
|
2337
|
+
changed = true;
|
|
2338
|
+
return;
|
|
2339
|
+
}
|
|
2340
|
+
if (atRule.nodes !== void 0 && atRule.nodes.length === 0) {
|
|
2341
|
+
atRule.remove();
|
|
2342
|
+
changed = true;
|
|
2343
|
+
}
|
|
2344
|
+
});
|
|
2345
|
+
return changed ? removeDanglingCssSourceTraceComments(root.toString()).trim() : css;
|
|
2346
|
+
} catch {
|
|
2347
|
+
return css;
|
|
2348
|
+
}
|
|
2349
|
+
}
|
|
2350
|
+
function removeScopedTailwindPreflightCss(css) {
|
|
2351
|
+
return removeScopedCssCoveredByRootStyleSources(css, []);
|
|
2352
|
+
}
|
|
2099
2353
|
function collectSingleViteGeneratedCssMarkerFile(rawSource) {
|
|
2100
2354
|
const blocks = require_source_candidate_scan_signature.parseBundlerGeneratedCssMarkerBlocks(rawSource).filter((block) => block.bundler === "vite");
|
|
2101
2355
|
if (blocks.length !== 1) return;
|
|
@@ -2108,7 +2362,9 @@ function shouldFilterRootGeneratedCssMarkerForScopedAsset(targetFile, markerFile
|
|
|
2108
2362
|
return !isMatchingGeneratedCssMarkerFile(targetFile, markerFile, resolveViteProcessedCssOutputFile);
|
|
2109
2363
|
}
|
|
2110
2364
|
function removeCssCoveredByRootStyleBundleSources(bundle, file, css) {
|
|
2111
|
-
|
|
2365
|
+
const rootSources = collectRootStyleBundleCssSources(bundle, file);
|
|
2366
|
+
const nextCss = removeScopedCssCoveredByRootStyleSources(removeDanglingCssSourceTraceComments(removeCssCoveredByImportedViteResults(css, rootSources)), rootSources);
|
|
2367
|
+
return hasNonCommentCss(nextCss) ? nextCss : "";
|
|
2112
2368
|
}
|
|
2113
2369
|
function removeDanglingCssSourceTraceComments(css) {
|
|
2114
2370
|
if (!css.includes("/* tokens:")) return css;
|
|
@@ -2132,8 +2388,11 @@ function removeCssCoveredByRootStyleAssets(bundle, options) {
|
|
|
2132
2388
|
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2133
2389
|
if (output.type !== "asset") continue;
|
|
2134
2390
|
const file = getAssetFile$1(bundleFile, output);
|
|
2135
|
-
if (!options.cssMatcher(file) || isRootStyleOutputFile(file) || options.isViteProcessedCssAsset?.(output, file) === true || options.subpackageRoots != null && isSubpackageOutputFile(file, options.subpackageRoots)) continue;
|
|
2136
2391
|
const rawSource = readAssetSource$2(output);
|
|
2392
|
+
const hasScopedCss = hasVueScopedAttr(rawSource);
|
|
2393
|
+
const hasTailwindGeneratedCss = /tailwindcss v\d/i.test(rawSource);
|
|
2394
|
+
const shouldIncludeTailwindGeneratedCssAsset = options.includeTailwindGeneratedCssAssets === true && hasTailwindGeneratedCss && isCssOutputFile(file) && !isMiniProgramStyleOutputFile(file);
|
|
2395
|
+
if (!(options.cssMatcher(file) || hasScopedCss && isCssOutputFile(file) || shouldIncludeTailwindGeneratedCssAsset) || isRootStyleOutputFile(file) || options.isViteProcessedCssAsset?.(output, file) === true && !hasScopedCss && !shouldIncludeTailwindGeneratedCssAsset || options.subpackageRoots != null && isSubpackageOutputFile(file, options.subpackageRoots)) continue;
|
|
2137
2396
|
const nextCss = removeCssCoveredByRootStyleBundleSources(bundle, file, rawSource);
|
|
2138
2397
|
if (nextCss === rawSource) continue;
|
|
2139
2398
|
output.source = nextCss;
|
|
@@ -2186,6 +2445,12 @@ function shouldUseCssAssetAsMainInjectionTarget(opts, file, records) {
|
|
|
2186
2445
|
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2187
2446
|
if (!isRootStyleOutputFile(file) && records.some((record) => typeof record.outputFile === "string" && require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) === fileKey)) return true;
|
|
2188
2447
|
if (!isRootStyleOutputFile(file)) return records.some((record) => record.injectIntoMain === true && typeof record.outputFile === "string" && require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) === fileKey);
|
|
2448
|
+
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));
|
|
2449
|
+
if (opts.appType === "uni-app-vite" && !isMiniProgramStyleOutputFile(file) && matchedRootWebOutputTargets.length > 0) return matchedRootWebOutputTargets.includes(fileKey);
|
|
2450
|
+
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));
|
|
2451
|
+
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));
|
|
2452
|
+
if (opts.appType === "uni-app-vite" && !isMiniProgramStyleOutputFile(file) && explicitWebCssTargets.length > 0) return explicitRootTargets.includes(fileKey);
|
|
2453
|
+
if (explicitRootTargets.length > 0) return explicitRootTargets.includes(fileKey);
|
|
2189
2454
|
if (records.some((record) => {
|
|
2190
2455
|
if (record.injectIntoMain !== true) return false;
|
|
2191
2456
|
return isRootStyleOutputFile(file) || typeof record.outputFile === "string" && require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) === fileKey;
|
|
@@ -2206,6 +2471,33 @@ function isViteProcessedCssResultCoveredByImportedBundleAsset(record, importedSt
|
|
|
2206
2471
|
}
|
|
2207
2472
|
return false;
|
|
2208
2473
|
}
|
|
2474
|
+
function removeCoveredInjectedSourceAssets(bundle, targetFile, targetCss, records, options) {
|
|
2475
|
+
let removed = 0;
|
|
2476
|
+
const targetFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(targetFile);
|
|
2477
|
+
const targetIsRootWebStyle = isRootStyleOutputFile(targetFileKey) && !isMiniProgramStyleOutputFile(targetFileKey);
|
|
2478
|
+
for (const record of records) {
|
|
2479
|
+
if (!options.shouldRemoveInjectedSourceAsset?.(targetFile, record)) continue;
|
|
2480
|
+
const recordFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(record.file);
|
|
2481
|
+
for (const [candidateFile, candidateOutput] of Object.entries(bundle)) {
|
|
2482
|
+
if (candidateOutput.type !== "asset") continue;
|
|
2483
|
+
const candidateKey = require_source_candidate_scan_signature.normalizeOutputPathKey(getAssetFile$1(candidateFile, candidateOutput));
|
|
2484
|
+
if (candidateKey === targetFileKey) continue;
|
|
2485
|
+
const isRecordFile = candidateKey === recordFileKey;
|
|
2486
|
+
const candidateIsRootWebStyle = isRootStyleOutputFile(candidateKey) && !isMiniProgramStyleOutputFile(candidateKey);
|
|
2487
|
+
const candidateSource = readAssetSource$2(candidateOutput).trim();
|
|
2488
|
+
const uncoveredCandidateSource = candidateSource.length > 0 ? (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(targetCss, candidateSource).trim() : candidateSource;
|
|
2489
|
+
const isProcessedSource = candidateSource === record.css.trim() || candidateSource.length > 0 && (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(targetCss, candidateSource) || targetIsRootWebStyle && candidateIsRootWebStyle && candidateSource.length > 0 && !hasNonCommentCss(uncoveredCandidateSource);
|
|
2490
|
+
if (!isRecordFile && !isProcessedSource) continue;
|
|
2491
|
+
if (candidateIsRootWebStyle && !targetIsRootWebStyle) continue;
|
|
2492
|
+
if (candidateIsRootWebStyle && !isRecordFile) continue;
|
|
2493
|
+
if (candidateIsRootWebStyle) delete bundle[candidateFile];
|
|
2494
|
+
else clearAssetSource(candidateOutput);
|
|
2495
|
+
options.debug?.("remove injected vite-processed source css asset: %s -> %s", candidateKey, targetFile);
|
|
2496
|
+
removed++;
|
|
2497
|
+
}
|
|
2498
|
+
}
|
|
2499
|
+
return removed;
|
|
2500
|
+
}
|
|
2209
2501
|
function removeCssCoveredByImportedViteResults(css, importedCssSources) {
|
|
2210
2502
|
if (importedCssSources.length === 0) return css;
|
|
2211
2503
|
const importedCss = importedCssSources.map((source) => require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(source).trim()).filter(Boolean).join("\n");
|
|
@@ -2232,6 +2524,38 @@ function collectBundleAssetFiles(bundle) {
|
|
|
2232
2524
|
}
|
|
2233
2525
|
return files;
|
|
2234
2526
|
}
|
|
2527
|
+
function normalizeComparableStyleFile(file) {
|
|
2528
|
+
return require_source_candidate_scan_signature.normalizeOutputPathKey(posix.normalize(file.replace(/[?#].*$/, "")));
|
|
2529
|
+
}
|
|
2530
|
+
function collectConfiguredTailwindV4CssEntryFiles(opts) {
|
|
2531
|
+
const runtimeCssEntries = opts.tailwindRuntime?.options?.tailwindcss?.v4?.cssEntries;
|
|
2532
|
+
return [
|
|
2533
|
+
...Array.isArray(opts.cssEntries) ? opts.cssEntries : [],
|
|
2534
|
+
...Array.isArray(opts.tailwindcss?.v4?.cssEntries) ? opts.tailwindcss.v4.cssEntries : [],
|
|
2535
|
+
...Array.isArray(opts.tailwindcssRuntimeOptions?.tailwindcss?.v4?.cssEntries) ? opts.tailwindcssRuntimeOptions.tailwindcss.v4.cssEntries : [],
|
|
2536
|
+
...Array.isArray(runtimeCssEntries) ? runtimeCssEntries : []
|
|
2537
|
+
].filter((file) => typeof file === "string" && file.length > 0);
|
|
2538
|
+
}
|
|
2539
|
+
function isConfiguredTailwindV4CssEntryFile(opts, file) {
|
|
2540
|
+
if (typeof file !== "string" || file.length === 0) return false;
|
|
2541
|
+
const fileKey = normalizeComparableStyleFile(file);
|
|
2542
|
+
return collectConfiguredTailwindV4CssEntryFiles(opts).some((entry) => normalizeComparableStyleFile(entry) === fileKey);
|
|
2543
|
+
}
|
|
2544
|
+
function resolveUniAppViteWebviewRootCssInjectionTarget(bundle, opts, sourceFile, outputFile) {
|
|
2545
|
+
if (opts.appType !== "uni-app-vite" || isMiniProgramStyleOutputFile(outputFile) || !isConfiguredTailwindV4CssEntryFile(opts, sourceFile)) return;
|
|
2546
|
+
const rootCssFiles = [];
|
|
2547
|
+
const matchedRootCssFiles = [];
|
|
2548
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
2549
|
+
if (output.type !== "asset") continue;
|
|
2550
|
+
const file = getAssetFile$1(bundleFile, output);
|
|
2551
|
+
if (!opts.cssMatcher(file) || !isRootStyleOutputFile(file) || isMiniProgramStyleOutputFile(file)) continue;
|
|
2552
|
+
rootCssFiles.push(file);
|
|
2553
|
+
if (opts.mainCssChunkMatcher(file, opts.appType)) matchedRootCssFiles.push(file);
|
|
2554
|
+
}
|
|
2555
|
+
if (matchedRootCssFiles.length === 1) return matchedRootCssFiles[0];
|
|
2556
|
+
if (matchedRootCssFiles.length > 1) return;
|
|
2557
|
+
return rootCssFiles.length === 1 ? rootCssFiles[0] : void 0;
|
|
2558
|
+
}
|
|
2235
2559
|
function findBundleAssetByOutputFile(bundle, file) {
|
|
2236
2560
|
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2237
2561
|
return Object.entries(bundle).find(([bundleFile, output]) => {
|
|
@@ -2285,6 +2609,8 @@ function collectViteProcessedCssAssetResults(bundle, options) {
|
|
|
2285
2609
|
options.markCssAssetProcessed?.(output, file);
|
|
2286
2610
|
options.recordCssAssetResult?.(file, nextCss);
|
|
2287
2611
|
const resolvedOutputFile = resolveViteGeneratedCssMarkerOutputFile(file, singleMarkerFile, existingAssetFiles, options.resolveViteProcessedCssOutputFile);
|
|
2612
|
+
const webviewRootCssInjectionTarget = options.opts ? resolveUniAppViteWebviewRootCssInjectionTarget(bundle, options.opts, singleMarkerFile ?? file, resolvedOutputFile) : void 0;
|
|
2613
|
+
const recordOutputFile = webviewRootCssInjectionTarget ?? resolvedOutputFile;
|
|
2288
2614
|
if (singleMarkerFile && require_source_candidate_scan_signature.normalizeOutputPathKey(resolvedOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file) && !isRootStyleOutputFile(resolvedOutputFile) && existingAssetFiles.has(require_source_candidate_scan_signature.normalizeOutputPathKey(resolvedOutputFile))) {
|
|
2289
2615
|
const targetAsset = findBundleAssetByOutputFile(bundle, resolvedOutputFile);
|
|
2290
2616
|
if (targetAsset) {
|
|
@@ -2304,24 +2630,24 @@ function collectViteProcessedCssAssetResults(bundle, options) {
|
|
|
2304
2630
|
continue;
|
|
2305
2631
|
}
|
|
2306
2632
|
}
|
|
2307
|
-
const shouldReplayIntoMainCss = options.opts != null && shouldReplayViteProcessedCssIntoMainCss(options.opts, file, singleMarkerFile, resolvedOutputFile, options.subpackageRoots);
|
|
2633
|
+
const shouldReplayIntoMainCss = options.opts != null && (webviewRootCssInjectionTarget != null || shouldReplayViteProcessedCssIntoMainCss(options.opts, file, singleMarkerFile, resolvedOutputFile, options.subpackageRoots));
|
|
2308
2634
|
options.recordViteProcessedCssAssetResult?.(file, nextCss, {
|
|
2309
2635
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2310
|
-
outputFile:
|
|
2636
|
+
outputFile: recordOutputFile
|
|
2311
2637
|
});
|
|
2312
|
-
if (require_source_candidate_scan_signature.normalizeOutputPathKey(
|
|
2638
|
+
if (require_source_candidate_scan_signature.normalizeOutputPathKey(recordOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file)) options.recordViteProcessedCssAssetResult?.(recordOutputFile, nextCss, {
|
|
2313
2639
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2314
|
-
outputFile:
|
|
2640
|
+
outputFile: recordOutputFile
|
|
2315
2641
|
});
|
|
2316
2642
|
for (const markerFile of collectMatchingGeneratedCssMarkerFiles(file, rawSource, options.resolveViteProcessedCssOutputFile)) {
|
|
2317
2643
|
if (require_source_candidate_scan_signature.normalizeOutputPathKey(markerFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(file)) continue;
|
|
2318
2644
|
options.recordViteProcessedCssAssetResult?.(markerFile, nextCss, {
|
|
2319
2645
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2320
|
-
outputFile:
|
|
2646
|
+
outputFile: recordOutputFile
|
|
2321
2647
|
});
|
|
2322
|
-
if (require_source_candidate_scan_signature.normalizeOutputPathKey(
|
|
2648
|
+
if (require_source_candidate_scan_signature.normalizeOutputPathKey(recordOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(markerFile) && require_source_candidate_scan_signature.normalizeOutputPathKey(recordOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file)) options.recordViteProcessedCssAssetResult?.(recordOutputFile, nextCss, {
|
|
2323
2649
|
injectIntoMain: shouldReplayIntoMainCss || void 0,
|
|
2324
|
-
outputFile:
|
|
2650
|
+
outputFile: recordOutputFile
|
|
2325
2651
|
});
|
|
2326
2652
|
}
|
|
2327
2653
|
if (isCoveredViteGeneratedSourceAsset(file, existingAssetFiles, options.resolveViteProcessedCssOutputFile)) {
|
|
@@ -2336,7 +2662,8 @@ function collectViteProcessedCssAssetResults(bundle, options) {
|
|
|
2336
2662
|
return collected;
|
|
2337
2663
|
}
|
|
2338
2664
|
function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
2339
|
-
const
|
|
2665
|
+
const transformCss = (css, file) => options.transformCss?.(css, file) ?? css;
|
|
2666
|
+
const viteCssResults = dedupeViteCssResults([...options.getViteProcessedCssAssetResults?.() ?? []].map(([file, record]) => {
|
|
2340
2667
|
return typeof record === "string" ? {
|
|
2341
2668
|
file,
|
|
2342
2669
|
css: record,
|
|
@@ -2347,10 +2674,14 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2347
2674
|
injectIntoMain: record.injectIntoMain,
|
|
2348
2675
|
outputFile: record.outputFile
|
|
2349
2676
|
};
|
|
2350
|
-
}).
|
|
2677
|
+
})).map((record) => ({
|
|
2678
|
+
...record,
|
|
2679
|
+
css: transformCss(record.css, record.outputFile ?? record.file)
|
|
2680
|
+
})).filter((record) => record.css.length > 0);
|
|
2351
2681
|
let injected = 0;
|
|
2352
2682
|
for (const [bundleFile, bundleOutput] of Object.entries(bundle)) {
|
|
2353
2683
|
let output = bundleOutput;
|
|
2684
|
+
if (bundle[bundleFile] !== bundleOutput) continue;
|
|
2354
2685
|
if (output.type !== "asset") continue;
|
|
2355
2686
|
let file = getAssetFile$1(bundleFile, output);
|
|
2356
2687
|
if (!options.opts.cssMatcher(file) || !shouldUseCssAssetAsMainInjectionTarget(options.opts, file, viteCssResults)) continue;
|
|
@@ -2372,7 +2703,7 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2372
2703
|
}
|
|
2373
2704
|
const fileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2374
2705
|
const mainFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
2375
|
-
let nextCss = removeTailwindEntryDirectivesFromCss(originalSource);
|
|
2706
|
+
let nextCss = transformCss(removeTailwindEntryDirectivesFromCss(originalSource), file);
|
|
2376
2707
|
const importedStyleFiles = collectImportedStyleFiles(nextCss, file);
|
|
2377
2708
|
const importedBundleCssSources = collectImportedBundleCssSources(bundle, importedStyleFiles);
|
|
2378
2709
|
nextCss = removeCssCoveredByImportedViteResults(nextCss, importedBundleCssSources);
|
|
@@ -2381,12 +2712,14 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2381
2712
|
const uncoveredImportedViteCssResults = importedViteCssResults.filter((record) => !isViteProcessedCssResultCoveredByImportedBundleAsset(record, importedStyleFiles, bundleAssetFiles));
|
|
2382
2713
|
const importedCssSources = [...importedBundleCssSources, ...uncoveredImportedViteCssResults.map((record) => record.css)];
|
|
2383
2714
|
nextCss = removeCssCoveredByImportedViteResults(nextCss, uncoveredImportedViteCssResults.map((record) => record.css));
|
|
2715
|
+
const targetViteCssResults = [];
|
|
2384
2716
|
for (const record of viteCssResults) {
|
|
2385
2717
|
if (!isRootStyleOutputFile(file)) {
|
|
2386
2718
|
if (typeof record.outputFile !== "string" || require_source_candidate_scan_signature.normalizeOutputPathKey(record.outputFile) !== fileKey) continue;
|
|
2387
2719
|
}
|
|
2388
2720
|
if (!shouldInjectViteProcessedCssResult(options.opts, mainFileKey, record.file, record)) continue;
|
|
2389
2721
|
if (isViteProcessedCssResultImported(record, importedStyleFiles)) continue;
|
|
2722
|
+
targetViteCssResults.push(record);
|
|
2390
2723
|
let css = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(record.css).trim();
|
|
2391
2724
|
css = removeCssCoveredByImportedViteResults(css, importedCssSources).trim();
|
|
2392
2725
|
if (css.length === 0) continue;
|
|
@@ -2417,29 +2750,19 @@ function injectViteProcessedCssIntoMainCssAssets(bundle, options) {
|
|
|
2417
2750
|
if (css.length === 0) continue;
|
|
2418
2751
|
}
|
|
2419
2752
|
const missingCss = (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(nextCss, css);
|
|
2420
|
-
if (missingCss.length === 0 || (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(nextCss, missingCss)) continue;
|
|
2753
|
+
if (missingCss.length === 0 || !hasNonCommentCss(missingCss) || (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(nextCss, missingCss)) continue;
|
|
2421
2754
|
nextCss = appendCss$1(nextCss, missingCss);
|
|
2422
2755
|
}
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
if (!options.shouldRemoveInjectedSourceAsset?.(file, record)) continue;
|
|
2431
|
-
const recordFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(record.file);
|
|
2432
|
-
for (const [candidateFile, candidateOutput] of Object.entries(bundle)) {
|
|
2433
|
-
if (candidateOutput.type !== "asset") continue;
|
|
2434
|
-
const candidateKey = require_source_candidate_scan_signature.normalizeOutputPathKey(getAssetFile$1(candidateFile, candidateOutput));
|
|
2435
|
-
const isRecordFile = candidateKey === recordFileKey;
|
|
2436
|
-
const candidateSource = readAssetSource$2(candidateOutput).trim();
|
|
2437
|
-
const isProcessedSource = candidateSource === record.css.trim() || candidateSource.length > 0 && (0, _weapp_tailwindcss_postcss.containsCssAfterMinify)(nextCss, candidateSource);
|
|
2438
|
-
if (!isRecordFile && !isProcessedSource || candidateKey === require_source_candidate_scan_signature.normalizeOutputPathKey(file)) continue;
|
|
2439
|
-
clearAssetSource(candidateOutput);
|
|
2440
|
-
options.debug?.("remove injected vite-processed source css asset: %s -> %s", candidateKey, file);
|
|
2441
|
-
}
|
|
2756
|
+
nextCss = transformCss(nextCss, file);
|
|
2757
|
+
if (nextCss !== originalSource) {
|
|
2758
|
+
output.source = nextCss;
|
|
2759
|
+
options.markCssAssetProcessed?.(output, file);
|
|
2760
|
+
options.recordCssAssetResult?.(file, nextCss);
|
|
2761
|
+
options.onUpdate?.(file, originalSource, nextCss);
|
|
2762
|
+
options.debug?.("inject vite-processed css into main css asset: %s bytes=%d", file, nextCss.length);
|
|
2442
2763
|
}
|
|
2764
|
+
const removedSources = removeCoveredInjectedSourceAssets(bundle, file, nextCss, targetViteCssResults, options);
|
|
2765
|
+
if (nextCss === originalSource && removedSources === 0) continue;
|
|
2443
2766
|
injected++;
|
|
2444
2767
|
}
|
|
2445
2768
|
return injected;
|
|
@@ -2711,9 +3034,34 @@ function pruneLastCssResults(resultByFile, sourceHashByFile, activeFiles) {
|
|
|
2711
3034
|
function readAssetSource(asset) {
|
|
2712
3035
|
return typeof asset.source === "string" ? asset.source : asset.source.toString();
|
|
2713
3036
|
}
|
|
3037
|
+
function isUniAppViteWebviewAppBundle(bundleFiles) {
|
|
3038
|
+
return bundleFiles.some((file) => node_path.default.basename(file.replace(/[?#].*$/, "")) === "app-service.js");
|
|
3039
|
+
}
|
|
3040
|
+
function isUniAppViteWebviewOutDir$2(outDir) {
|
|
3041
|
+
const normalized = outDir ? node_path.default.basename(node_path.default.normalize(outDir)).trim().toLowerCase() : void 0;
|
|
3042
|
+
return normalized === "app" || normalized === "app-plus";
|
|
3043
|
+
}
|
|
2714
3044
|
function getAssetFile(bundleFile, asset) {
|
|
2715
3045
|
return asset.fileName || bundleFile;
|
|
2716
3046
|
}
|
|
3047
|
+
function finalizeUniAppViteWebviewCssCompat(bundle, options) {
|
|
3048
|
+
if (options.opts.generator?.webCompat === false) return 0;
|
|
3049
|
+
let transformed = 0;
|
|
3050
|
+
for (const [bundleFile, output] of Object.entries(bundle)) {
|
|
3051
|
+
if (output.type !== "asset") continue;
|
|
3052
|
+
const file = getAssetFile(bundleFile, output);
|
|
3053
|
+
if (!options.opts.cssMatcher(file) || !/\.css(?:$|[?#])/i.test(file)) continue;
|
|
3054
|
+
const rawSource = readAssetSource(output);
|
|
3055
|
+
const nextCss = (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)((0, _weapp_tailwindcss_postcss.transformWebCssCompat)(rawSource, options.opts.generator?.webCompat ?? true), { escapeMap: options.opts.escapeMap });
|
|
3056
|
+
if (nextCss === rawSource) continue;
|
|
3057
|
+
output.source = nextCss;
|
|
3058
|
+
options.recordCssAssetResult?.(file, nextCss);
|
|
3059
|
+
options.onUpdate(file, rawSource, nextCss);
|
|
3060
|
+
options.debug("finalize uni-app vite webview css compat: %s bytes=%d", file, nextCss.length);
|
|
3061
|
+
transformed++;
|
|
3062
|
+
}
|
|
3063
|
+
return transformed;
|
|
3064
|
+
}
|
|
2717
3065
|
function isRootMiniProgramStyleOutputFile(file) {
|
|
2718
3066
|
const normalized = require_source_candidate_scan_signature.normalizeOutputPathKey(file.replace(/[?#].*$/, ""));
|
|
2719
3067
|
return !normalized.includes("/") && /\.(?:wxss|acss|ttss|qss|jxss|tyss)$/i.test(normalized);
|
|
@@ -2782,7 +3130,7 @@ function normalizeTaroRootImportShellAssets(bundle, options) {
|
|
|
2782
3130
|
return updated;
|
|
2783
3131
|
}
|
|
2784
3132
|
async function finalizeGenerateBundle(options) {
|
|
2785
|
-
const { activeProcessCacheKeys, activeProcessHashKeys, activeViteCssCacheFiles, bundle, bundleFiles, cache, cssTaskFactories, debug, defaultStyleOutputExtension, formatIteration, generatorCandidateSignature, generatorRuntime, getCssHandlerOptions, getSourceCandidateSourcesForEntries, getSourceCandidatesForEntries, getViteCssCacheStats, getViteProcessedCssAssetResults, hmrTimingRecorder, hmrTimingStartedAt, isHarmonyAppStyleTarget, isNativeAppStyleTarget, isViteProcessedCssAsset, isWebGeneratorTarget, jsAfterCss, jsTaskFactories, lastCssResultByFile, lastCssSourceHashByFile, linkedByEntry, markCssAssetProcessed, metrics, onEnd, onUpdate, opts, pendingLinkedUpdates, pruneViteCssCaches, recordCssAssetResult, recordTimingDetail, recordViteProcessedCssAssetResult, rootDir, runtime, runtimeState, shouldPreserveAppCssExtension, snapshot, sourceCandidates, sourceRoot, state, styleHandler, tasks, timingDetails, transformRuntime, useIncrementalMode } = options;
|
|
3133
|
+
const { activeProcessCacheKeys, activeProcessHashKeys, activeViteCssCacheFiles, bundle, bundleFiles, cache, cssTaskFactories, debug, defaultStyleOutputExtension, formatIteration, generatorCandidateSignature, generatorRuntime, getCssHandlerOptions, getSourceCandidateSourcesForEntries, getSourceCandidatesForEntries, getViteCssCacheStats, getViteProcessedCssAssetResults, hmrTimingRecorder, hmrTimingStartedAt, isHarmonyAppStyleTarget, isNativeAppStyleTarget, isViteProcessedCssAsset, isWebGeneratorTarget, jsAfterCss, jsTaskFactories, lastCssResultByFile, lastCssSourceHashByFile, linkedByEntry, markCssAssetProcessed, metrics, onEnd, onUpdate, opts, outDir, pendingLinkedUpdates, pruneViteCssCaches, recordCssAssetResult, recordTimingDetail, recordViteProcessedCssAssetResult, rootDir, runtime, runtimeState, shouldPreserveAppCssExtension, snapshot, sourceCandidates, sourceRoot, state, styleHandler, tasks, timingDetails, transformRuntime, transformWebTargetCss, useIncrementalMode } = options;
|
|
2786
3134
|
const tasksStart = performance.now();
|
|
2787
3135
|
if (cssTaskFactories.length > 0) {
|
|
2788
3136
|
const cssTask = require_hmr_timing.runWithConcurrency(cssTaskFactories, resolveViteCssTaskConcurrency(useIncrementalMode, runtimeState.tailwindRuntime.majorVersion)).then(() => void 0);
|
|
@@ -2817,6 +3165,7 @@ async function finalizeGenerateBundle(options) {
|
|
|
2817
3165
|
recordViteProcessedCssAssetResult,
|
|
2818
3166
|
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles),
|
|
2819
3167
|
subpackageRoots: collectMiniProgramSubpackageRoots(bundle),
|
|
3168
|
+
transformCss: transformWebTargetCss,
|
|
2820
3169
|
debug
|
|
2821
3170
|
});
|
|
2822
3171
|
return injectViteProcessedCssIntoMainCssAssets(bundle, {
|
|
@@ -2824,6 +3173,7 @@ async function finalizeGenerateBundle(options) {
|
|
|
2824
3173
|
getViteProcessedCssAssetResults,
|
|
2825
3174
|
markCssAssetProcessed,
|
|
2826
3175
|
recordCssAssetResult,
|
|
3176
|
+
transformCss: transformWebTargetCss,
|
|
2827
3177
|
shouldRemoveInjectedSourceAsset: (targetFile, record) => {
|
|
2828
3178
|
if (record.injectIntoMain === false) return false;
|
|
2829
3179
|
const targetFileKey = require_source_candidate_scan_signature.normalizeOutputPathKey(targetFile);
|
|
@@ -2849,11 +3199,13 @@ async function finalizeGenerateBundle(options) {
|
|
|
2849
3199
|
removeCssCoveredByRootStyleAssets(bundle, {
|
|
2850
3200
|
cssMatcher: opts.cssMatcher,
|
|
2851
3201
|
debug,
|
|
3202
|
+
includeTailwindGeneratedCssAssets: opts.appType === "uni-app-vite" && isWebGeneratorTarget && isUniAppViteWebviewAppBundle(bundleFiles),
|
|
2852
3203
|
isViteProcessedCssAsset,
|
|
2853
3204
|
onUpdate,
|
|
2854
3205
|
recordCssAssetResult,
|
|
2855
3206
|
subpackageRoots: collectMiniProgramSubpackageRoots(bundle)
|
|
2856
3207
|
});
|
|
3208
|
+
if (opts.appType === "uni-app-vite" && isWebGeneratorTarget && isUniAppViteWebviewAppBundle(Object.keys(bundle))) removeDuplicateUnlinkedRootCssAssetsReferencedByHtml(bundle, { debug });
|
|
2857
3209
|
await finalizeMiniProgramCssAssets(bundle, {
|
|
2858
3210
|
cssMatcher: opts.cssMatcher,
|
|
2859
3211
|
debug,
|
|
@@ -2864,6 +3216,12 @@ async function finalizeGenerateBundle(options) {
|
|
|
2864
3216
|
recordCssAssetResult,
|
|
2865
3217
|
styleHandler
|
|
2866
3218
|
});
|
|
3219
|
+
if (opts.appType === "uni-app-vite" && (isWebGeneratorTarget || isUniAppViteWebviewAppBundle(Object.keys(bundle)) || isUniAppViteWebviewOutDir$2(outDir))) finalizeUniAppViteWebviewCssCompat(bundle, {
|
|
3220
|
+
debug,
|
|
3221
|
+
onUpdate,
|
|
3222
|
+
opts,
|
|
3223
|
+
recordCssAssetResult
|
|
3224
|
+
});
|
|
2867
3225
|
const stateUpdateStart = performance.now();
|
|
2868
3226
|
require_source_candidate_scan_signature.updateBundleBuildState(state, snapshot, useIncrementalMode ? linkedByEntry ?? /* @__PURE__ */ new Map() : /* @__PURE__ */ new Map(), { incremental: useIncrementalMode });
|
|
2869
3227
|
state.generatorCandidateSignature = generatorCandidateSignature;
|
|
@@ -3278,7 +3636,9 @@ function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGenerator
|
|
|
3278
3636
|
const groups = /* @__PURE__ */ new Map();
|
|
3279
3637
|
for (const [key, remembered] of sources ?? []) {
|
|
3280
3638
|
const cleanSourceFile = remembered.sourceFile.replace(/[?#].*$/, "");
|
|
3281
|
-
const
|
|
3639
|
+
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);
|
|
3640
|
+
const rememberedOutputFile = remembered.outputFile.replace(/[?#].*$/, "");
|
|
3641
|
+
const outputKey = require_source_candidate_scan_signature.normalizeOutputPathKey(opts.cssMatcher(rememberedOutputFile) && !require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedOutputFile).includes("/") && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(resolvedOutputFile.replace(/[?#].*$/, "")) ? remembered.outputFile : resolvedOutputFile);
|
|
3282
3642
|
const group = groups.get(outputKey) ?? [];
|
|
3283
3643
|
group.push({
|
|
3284
3644
|
key,
|
|
@@ -3291,7 +3651,7 @@ function collectRememberedCssReplayGroups(sources, opts, rootDir, isWebGenerator
|
|
|
3291
3651
|
//#endregion
|
|
3292
3652
|
//#region src/bundlers/vite/generate-bundle/remembered-css-replay.ts
|
|
3293
3653
|
async function processRememberedCssReplay(options) {
|
|
3294
|
-
const { addWatchFile, activeViteCssCacheFiles, bundleFiles, cache, createScopedGeneratorRuntime, createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, cssTaskFactories, debug, defaultStyleOutputExtension, emitOrReplayCssAsset, generatorRuntime, getCssHandlerOptions, getCssUserHandlerOptions, getRememberedCssSignature, getRememberedCssSources, isNativeAppStyleTarget, isWebGeneratorTarget, lastCssResultByFile, lastCssSourceHashByFile, markCssAssetProcessed, metrics, normalizeViteCssCacheKey, onUpdate, opts, recordCssAssetResult, recordViteProcessedCssAssetResult, refreshRememberedCssSource, rootDir, runtimeState, setRememberedCssSignature, shouldInjectCssIntoMainFromOutput, shouldPreserveAppCssExtension, sourceRoot, styleHandler, timeTask, useIncrementalMode } = options;
|
|
3654
|
+
const { addWatchFile, activeViteCssCacheFiles, bundleFiles, cache, createScopedGeneratorRuntime, createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, cssTaskFactories, debug, defaultStyleOutputExtension, emitOrReplayCssAsset, generatorRuntime, generatorPlatform, getCssHandlerOptions, getCssUserHandlerOptions, getRememberedCssSignature, getRememberedCssSources, isNativeAppStyleTarget, isWebGeneratorTarget, lastCssResultByFile, lastCssSourceHashByFile, markCssAssetProcessed, metrics, normalizeViteCssCacheKey, onUpdate, opts, recordCssAssetResult, recordViteProcessedCssAssetResult, refreshRememberedCssSource, rootDir, runtimeState, setRememberedCssSignature, shouldInjectCssIntoMainFromOutput, shouldPreserveAppCssExtension, sourceRoot, styleHandler, timeTask, useIncrementalMode } = options;
|
|
3295
3655
|
const rememberedReplayGroups = collectRememberedCssReplayGroups(getRememberedCssSources?.(), opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
3296
3656
|
for (const [outputFile, rememberedGroup] of rememberedReplayGroups) {
|
|
3297
3657
|
if (require_source_candidate_scan_signature.isHTMLRequest(outputFile) || options.opts.htmlMatcher(outputFile)) continue;
|
|
@@ -3342,6 +3702,7 @@ async function processRememberedCssReplay(options) {
|
|
|
3342
3702
|
cssHandlerOptions,
|
|
3343
3703
|
cssUserHandlerOptions: getCssUserHandlerOptions(sourceFile),
|
|
3344
3704
|
getSourceCandidatesForEntries: scopedSourceCandidateGetter,
|
|
3705
|
+
generatorPlatform,
|
|
3345
3706
|
styleHandler,
|
|
3346
3707
|
debug,
|
|
3347
3708
|
previousCss
|
|
@@ -3923,6 +4284,16 @@ function resolveSourceRootFromBundleGraph(config, bundle) {
|
|
|
3923
4284
|
}
|
|
3924
4285
|
//#endregion
|
|
3925
4286
|
//#region src/bundlers/vite/generate-bundle.ts
|
|
4287
|
+
function inferPlatformFromViteOutDir$1(outDir) {
|
|
4288
|
+
const segment = outDir ? node_path.default.basename(node_path.default.normalize(outDir)) : void 0;
|
|
4289
|
+
if (!segment) return;
|
|
4290
|
+
const normalized = segment.trim().toLowerCase();
|
|
4291
|
+
if (normalized === "h5" || normalized === "web" || normalized === "app" || normalized === "app-plus" || normalized.startsWith("app-") || normalized.startsWith("mp-") || normalized.startsWith("quickapp-webview")) return normalized;
|
|
4292
|
+
}
|
|
4293
|
+
function isUniAppViteWebviewOutDir$1(outDir) {
|
|
4294
|
+
const normalized = outDir ? node_path.default.basename(node_path.default.normalize(outDir)).trim().toLowerCase() : void 0;
|
|
4295
|
+
return normalized === "app" || normalized === "app-plus";
|
|
4296
|
+
}
|
|
3926
4297
|
function createGenerateBundleHook(context) {
|
|
3927
4298
|
const state = require_source_candidate_scan_signature.createBundleBuildState();
|
|
3928
4299
|
const lastCssResultByFile = /* @__PURE__ */ new Map();
|
|
@@ -3952,23 +4323,32 @@ function createGenerateBundleHook(context) {
|
|
|
3952
4323
|
const { cache, onEnd, onStart, onUpdate, styleHandler, templateHandler, jsHandler, uniAppX } = opts;
|
|
3953
4324
|
const resolvedConfig = getResolvedConfig();
|
|
3954
4325
|
const uniUtsPlatform = require_utils.resolveUniUtsPlatform();
|
|
3955
|
-
const
|
|
4326
|
+
const generatorPlatform = opts.cssOptions?.platform ?? opts.platform ?? inferPlatformFromViteOutDir$1(resolvedConfig?.build?.outDir);
|
|
4327
|
+
const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(opts.generator, {
|
|
3956
4328
|
appType: opts.appType,
|
|
3957
|
-
platform:
|
|
4329
|
+
platform: generatorPlatform,
|
|
3958
4330
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
3959
4331
|
uniAppX,
|
|
3960
4332
|
uniUtsPlatform
|
|
3961
|
-
})
|
|
4333
|
+
});
|
|
4334
|
+
const generatorBranch = require_generator.resolveGeneratorRuntimeBranch(generatorOptions, {
|
|
3962
4335
|
appType: opts.appType,
|
|
3963
|
-
platform:
|
|
4336
|
+
platform: generatorPlatform,
|
|
3964
4337
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
3965
4338
|
uniAppX,
|
|
3966
4339
|
uniUtsPlatform
|
|
3967
4340
|
});
|
|
3968
4341
|
const isWebGeneratorTarget = generatorBranch.isWeb;
|
|
3969
|
-
const
|
|
3970
|
-
const
|
|
3971
|
-
const
|
|
4342
|
+
const shouldApplyWebviewSafeSelectors = opts.appType === "uni-app-vite" && isUniAppViteWebviewOutDir$1(resolvedConfig?.build?.outDir);
|
|
4343
|
+
const shouldApplyWebviewCssCompat = isWebGeneratorTarget || shouldApplyWebviewSafeSelectors;
|
|
4344
|
+
const transformWebTargetCss = (css) => {
|
|
4345
|
+
const compatCss = isWebGeneratorTarget ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, generatorOptions.webCompat) : shouldApplyWebviewCssCompat ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, generatorOptions.webCompat ?? true) : css;
|
|
4346
|
+
return withUniAppXWebPreflightReset(shouldApplyWebviewSafeSelectors ? (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)(compatCss, { escapeMap: opts.escapeMap }) : compatCss, opts.appType === "uni-app-x" && isWebGeneratorTarget);
|
|
4347
|
+
};
|
|
4348
|
+
const isUniAppXStyleTarget = opts.appType === "uni-app-x";
|
|
4349
|
+
const isNativeAppStyleTarget = isUniAppXStyleTarget && uniUtsPlatform.isApp;
|
|
4350
|
+
const canInferHarmonyAppStyleTarget = isUniAppXStyleTarget && (!uniUtsPlatform.normalized || uniUtsPlatform.isApp);
|
|
4351
|
+
const isHarmonyAppStyleTarget = isUniAppXStyleTarget && (uniUtsPlatform.isAppHarmony || canInferHarmonyAppStyleTarget && (isUniAppXHarmonyBundle(bundle) || isUniAppXHarmonyOutDir(resolvedConfig?.build?.outDir)));
|
|
3972
4352
|
const shouldPreserveAppCssExtension = isNativeAppStyleTarget || isHarmonyAppStyleTarget;
|
|
3973
4353
|
const shouldGenerateWebCssByGenerator = isWebGeneratorTarget;
|
|
3974
4354
|
const { getCssHandlerOptions, getCssUserHandlerOptions } = cssHandlerOptions;
|
|
@@ -3990,6 +4370,7 @@ function createGenerateBundleHook(context) {
|
|
|
3990
4370
|
recordViteProcessedCssAssetResult,
|
|
3991
4371
|
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, Object.keys(bundle)),
|
|
3992
4372
|
subpackageRoots: currentSubpackageRoots,
|
|
4373
|
+
transformCss: transformWebTargetCss,
|
|
3993
4374
|
debug
|
|
3994
4375
|
});
|
|
3995
4376
|
const hmrTimingStartedAt = performance.now();
|
|
@@ -4033,7 +4414,47 @@ function createGenerateBundleHook(context) {
|
|
|
4033
4414
|
const snapshotStart = performance.now();
|
|
4034
4415
|
const snapshot = require_source_candidate_scan_signature.buildBundleSnapshot(bundle, opts, outDir, state, envFlags.disableDirtyOptimization || !useIncrementalMode, { hasOmittedKnownFiles });
|
|
4035
4416
|
const configuredTailwindV4CssSourceEntriesForScope = getConfiguredTailwindV4CssSourceEntries();
|
|
4036
|
-
const
|
|
4417
|
+
const normalizeSystemAliasPathKey = (file) => file.startsWith("/private/var/") ? file.slice(8) : file;
|
|
4418
|
+
const normalizeConfiguredTailwindV4CssEntryFileKey = (file) => {
|
|
4419
|
+
const cleanFile = file.replace(/[?#].*$/, "");
|
|
4420
|
+
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)));
|
|
4421
|
+
};
|
|
4422
|
+
const runtimeTailwindcssOptions = require_v4_engine.resolveTailwindcssOptions(opts.tailwindcssRuntimeOptions);
|
|
4423
|
+
const tailwindRuntimeOptions = require_v4_engine.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
|
|
4424
|
+
const configuredTailwindV4CssSourceFileKeysForScope = new Set(configuredTailwindV4CssSourceEntriesForScope.map((entry) => normalizeConfiguredTailwindV4CssEntryFileKey(entry.file)));
|
|
4425
|
+
const configuredTailwindV4ExplicitCssEntryFileKeysForScope = new Set([
|
|
4426
|
+
...Array.isArray(opts.cssEntries) ? opts.cssEntries : [],
|
|
4427
|
+
...Array.isArray(opts.tailwindcss?.v4?.cssEntries) ? opts.tailwindcss.v4.cssEntries : [],
|
|
4428
|
+
...Array.isArray(runtimeTailwindcssOptions?.v4?.cssEntries) ? runtimeTailwindcssOptions.v4.cssEntries : [],
|
|
4429
|
+
...Array.isArray(tailwindRuntimeOptions?.v4?.cssEntries) ? tailwindRuntimeOptions.v4.cssEntries : []
|
|
4430
|
+
].filter((file) => typeof file === "string" && file.length > 0).map(normalizeConfiguredTailwindV4CssEntryFileKey));
|
|
4431
|
+
const resolveUniAppViteWebviewRootCssInjectionTarget = (sourceFile, outputFile) => {
|
|
4432
|
+
if (opts.appType !== "uni-app-vite" || !outputFile.replace(/[?#].*$/, "").endsWith(".css") || typeof sourceFile !== "string" || !configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(sourceFile))) return;
|
|
4433
|
+
const rootCssFiles = bundleFiles.filter((file) => {
|
|
4434
|
+
const normalized = require_source_candidate_scan_signature.normalizeOutputPathKey(file.replace(/[?#].*$/, ""));
|
|
4435
|
+
return opts.cssMatcher(file) && normalized.endsWith(".css") && !normalized.includes("/");
|
|
4436
|
+
});
|
|
4437
|
+
const matchedRootCssFiles = rootCssFiles.filter((file) => getCssHandlerOptions(file).isMainChunk);
|
|
4438
|
+
if (matchedRootCssFiles.length === 1) return matchedRootCssFiles[0];
|
|
4439
|
+
if (matchedRootCssFiles.length > 1) return;
|
|
4440
|
+
return rootCssFiles.length === 1 ? rootCssFiles[0] : void 0;
|
|
4441
|
+
};
|
|
4442
|
+
const resolveConfiguredTailwindV4CssEntryOutputFile = (sourceFile) => resolveViteCssPipelineOutputFile(sourceFile, opts, rootDir, isWebGeneratorTarget, shouldPreserveAppCssExtension, sourceRoot, defaultStyleOutputExtension, bundleFiles);
|
|
4443
|
+
const selectUniAppViteWebviewRootCssSourceEntry = (outputFile, entries) => {
|
|
4444
|
+
if (opts.appType !== "uni-app-vite" || !isWebGeneratorTarget || !opts.cssMatcher(outputFile) || require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile.replace(/[?#].*$/, "")).includes("/")) return;
|
|
4445
|
+
const generationEntries = entries.filter((entry) => hasTailwindGenerationSource(entry.source));
|
|
4446
|
+
if (generationEntries.length <= 1) return generationEntries[0];
|
|
4447
|
+
const rootOutputEntries = generationEntries.filter((entry) => {
|
|
4448
|
+
return !require_source_candidate_scan_signature.normalizeOutputPathKey(resolveConfiguredTailwindV4CssEntryOutputFile(entry.file).replace(/[?#].*$/, "")).includes("/");
|
|
4449
|
+
});
|
|
4450
|
+
if (rootOutputEntries.length === 1) return rootOutputEntries[0];
|
|
4451
|
+
if (currentSubpackageRoots) {
|
|
4452
|
+
const mainPackageEntries = generationEntries.filter((entry) => {
|
|
4453
|
+
return !isSubpackageOutputFile(resolveConfiguredTailwindV4CssEntryOutputFile(entry.file), currentSubpackageRoots);
|
|
4454
|
+
});
|
|
4455
|
+
if (mainPackageEntries.length === 1) return mainPackageEntries[0];
|
|
4456
|
+
}
|
|
4457
|
+
};
|
|
4037
4458
|
const { createScopedSourceCandidateGetter, createScopedSourceCandidateSourceGetter, shouldExcludeSubpackageSourceCandidates, shouldInjectCssIntoMainFromOutput } = createSubpackageSourceCandidateScope({
|
|
4038
4459
|
cssSourceFiles: configuredTailwindV4CssSourceEntriesForScope.map((entry) => entry.file),
|
|
4039
4460
|
getSourceCandidateSourcesForEntries,
|
|
@@ -4189,10 +4610,14 @@ function createGenerateBundleHook(context) {
|
|
|
4189
4610
|
onUpdate,
|
|
4190
4611
|
debug
|
|
4191
4612
|
});
|
|
4192
|
-
const
|
|
4613
|
+
const createBaseHandlerOptions = createJsHandlerOptionsFactory({
|
|
4193
4614
|
getMajorVersion: () => runtimeState.tailwindRuntime.majorVersion,
|
|
4194
4615
|
moduleGraph: moduleGraphOptions
|
|
4195
4616
|
});
|
|
4617
|
+
const createHandlerOptions = (absoluteFilename, extra) => createBaseHandlerOptions(absoluteFilename, shouldApplyWebviewSafeSelectors ? {
|
|
4618
|
+
needEscaped: true,
|
|
4619
|
+
...extra
|
|
4620
|
+
} : extra);
|
|
4196
4621
|
const linkedByEntry = useIncrementalMode ? /* @__PURE__ */ new Map() : void 0;
|
|
4197
4622
|
const sharedCssResultCache = /* @__PURE__ */ new Map();
|
|
4198
4623
|
const activeProcessCacheKeys = /* @__PURE__ */ new Set();
|
|
@@ -4307,7 +4732,7 @@ function createGenerateBundleHook(context) {
|
|
|
4307
4732
|
return await refreshRememberedCssSource?.(remembered) ?? remembered;
|
|
4308
4733
|
}));
|
|
4309
4734
|
rememberedCssSources = rememberedCssSources.filter((remembered) => {
|
|
4310
|
-
if (!configuredTailwindV4CssSourceFileKeysForScope.has(
|
|
4735
|
+
if (!configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile))) return true;
|
|
4311
4736
|
const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(remembered.sourceFile);
|
|
4312
4737
|
return !matchedOutputFile || require_source_candidate_scan_signature.normalizeOutputPathKey(matchedOutputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
4313
4738
|
});
|
|
@@ -4318,7 +4743,7 @@ function createGenerateBundleHook(context) {
|
|
|
4318
4743
|
const rememberedSourcesBelongToInferredSfc = rememberedCssSources.length > 0 && rememberedCssSources.every((remembered) => normalizeSfcSourceFileForCompare(remembered.sourceFile) === inferredSourceFile);
|
|
4319
4744
|
if (!hasUsableRememberedTailwindSource || rememberedSourcesBelongToInferredSfc) rememberedCssSources = [inferredSfcStyleSource];
|
|
4320
4745
|
}
|
|
4321
|
-
if (isTemporaryCssAssetFile(outputFile) && rememberedCssSources.some((remembered) => configuredTailwindV4CssSourceFileKeysForScope.has(
|
|
4746
|
+
if (isTemporaryCssAssetFile(outputFile) && rememberedCssSources.some((remembered) => configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(remembered.sourceFile)))) {
|
|
4322
4747
|
rememberedCssSources = [];
|
|
4323
4748
|
hasUsableRememberedTailwindSource = false;
|
|
4324
4749
|
}
|
|
@@ -4346,7 +4771,14 @@ function createGenerateBundleHook(context) {
|
|
|
4346
4771
|
}
|
|
4347
4772
|
if (!hasUsableRememberedTailwindSource) {
|
|
4348
4773
|
const configuredTailwindV4CssSourceEntries = getConfiguredTailwindV4CssSourceEntries();
|
|
4349
|
-
const
|
|
4774
|
+
const inferredSourceStyle = resolveSourceStyleSourceFromOutputFile(outputFile, snapshot, outDir, sourceRoot, getCssSource, getSourceCandidateSources, configuredTailwindV4CssSourceEntries.map((entry) => [entry.file, entry.source]), debug);
|
|
4775
|
+
const inferredWebviewRootSourceEntry = inferredSourceStyle ? void 0 : selectUniAppViteWebviewRootCssSourceEntry(outputFile, configuredTailwindV4CssSourceEntries);
|
|
4776
|
+
const inferredWebviewRootSourceStyle = inferredWebviewRootSourceEntry ? {
|
|
4777
|
+
outputFile,
|
|
4778
|
+
rawSource: inferredWebviewRootSourceEntry.source,
|
|
4779
|
+
sourceFile: inferredWebviewRootSourceEntry.file
|
|
4780
|
+
} : void 0;
|
|
4781
|
+
const inferredOriginalSourceStyle = inferredSourceStyle ?? (outputFile === file ? void 0 : resolveSourceStyleSourceFromOutputFile(file, snapshot, outDir, sourceRoot, getCssSource, getSourceCandidateSources, configuredTailwindV4CssSourceEntries.map((entry) => [entry.file, entry.source]), debug)) ?? inferredWebviewRootSourceStyle;
|
|
4350
4782
|
if (inferredOriginalSourceStyle) {
|
|
4351
4783
|
outputFile = resolveMatchedOutputFileForCurrentAsset(inferredOriginalSourceStyle.sourceFile) ?? outputFile;
|
|
4352
4784
|
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile));
|
|
@@ -4396,7 +4828,7 @@ function createGenerateBundleHook(context) {
|
|
|
4396
4828
|
}
|
|
4397
4829
|
}
|
|
4398
4830
|
let rememberedCssSource = mergeRememberedCssSources(rememberedCssSources, outputFile);
|
|
4399
|
-
if (rememberedCssSource && viteProcessedCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(
|
|
4831
|
+
if (rememberedCssSource && viteProcessedCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(rememberedCssSource.sourceFile))) {
|
|
4400
4832
|
const matchedOutputFile = resolveMatchedOutputFileForCurrentAsset(rememberedCssSource.sourceFile);
|
|
4401
4833
|
if (matchedOutputFile && require_source_candidate_scan_signature.normalizeOutputPathKey(matchedOutputFile) !== require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile)) {
|
|
4402
4834
|
outputFile = matchedOutputFile;
|
|
@@ -4425,11 +4857,12 @@ function createGenerateBundleHook(context) {
|
|
|
4425
4857
|
}
|
|
4426
4858
|
const hasRememberedApplyDirective = rememberedCssSource != null && require_v4_engine.hasTailwindApplyDirective(rememberedCssSource.rawSource);
|
|
4427
4859
|
const hasRememberedTailwindGenerationSource = rememberedCssSource != null && hasTailwindGenerationSource(rememberedCssSource.rawSource);
|
|
4428
|
-
const usesConfiguredTailwindV4FallbackSource = rememberedCssSource != null && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile) && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.sourceFile.replace(/[?#].*$/, "")) !== require_source_candidate_scan_signature.normalizeOutputPathKey(file);
|
|
4429
4860
|
const hasSameOutputRememberedTailwindGenerationSource = hasRememberedTailwindGenerationSource && rememberedCssSource != null && require_source_candidate_scan_signature.normalizeOutputPathKey(rememberedCssSource.outputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
4430
4861
|
const hasStaleViteProcessedCssSource = vitePipelineCssAsset && hasDifferentRememberedCssSource && (hasCurrentTailwindGenerationDirective || hasRememberedApplyDirective || hasRememberedTailwindGenerationSource);
|
|
4431
4862
|
const generatorSourceFile = vitePipelineCssAsset ? rememberedCssSource?.sourceFile ?? assetSourceFile : assetSourceFile;
|
|
4432
|
-
|
|
4863
|
+
const webviewRootCssInjectionTarget = vitePipelineCssAsset ? resolveUniAppViteWebviewRootCssInjectionTarget(generatorSourceFile, outputFile) : void 0;
|
|
4864
|
+
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);
|
|
4865
|
+
if (vitePipelineCssAsset && outputCssHandlerOptions.isMainChunk !== true && configuredTailwindV4CssSourceFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(generatorSourceFile))) {
|
|
4433
4866
|
usedConfiguredTailwindV4CssSourceFiles.add(require_source_candidate_scan_signature.normalizeOutputPathKey(generatorSourceFile));
|
|
4434
4867
|
temporaryCssAssetSourceResolver.markUsed(generatorSourceFile);
|
|
4435
4868
|
}
|
|
@@ -4437,7 +4870,7 @@ function createGenerateBundleHook(context) {
|
|
|
4437
4870
|
...getCssHandlerOptions(generatorSourceFile),
|
|
4438
4871
|
isMainChunk: resolvedFromTemporaryCssAsset ? false : outputCssHandlerOptions.isMainChunk
|
|
4439
4872
|
} : getCssHandlerOptions(file);
|
|
4440
|
-
const generatorCssEntries =
|
|
4873
|
+
const generatorCssEntries = configuredTailwindV4ExplicitCssEntryFileKeysForScope.has(normalizeConfiguredTailwindV4CssEntryFileKey(generatorSourceFile)) ? [generatorSourceFile] : opts.cssEntries;
|
|
4441
4874
|
const generatorCssHandlerOptions = {
|
|
4442
4875
|
...cssHandlerOptions,
|
|
4443
4876
|
sourceOptions: {
|
|
@@ -4455,6 +4888,10 @@ function createGenerateBundleHook(context) {
|
|
|
4455
4888
|
opts,
|
|
4456
4889
|
tokenSources: sourceTraceTokenSources
|
|
4457
4890
|
});
|
|
4891
|
+
const removeRootCoveredCssFromScopedAsset = (css) => {
|
|
4892
|
+
const normalizedOutputFile = require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile.replace(/[?#].*$/, ""));
|
|
4893
|
+
return !normalizedOutputFile.includes("/") || currentSubpackageRoots != null && isSubpackageOutputFile(normalizedOutputFile, currentSubpackageRoots) ? css : removeCssCoveredByRootStyleBundleSources(bundle, outputFile, css);
|
|
4894
|
+
};
|
|
4458
4895
|
const shouldRegenerateMainPackageCssWithScopedCandidates = vitePipelineCssAsset && shouldExcludeSubpackageSourceCandidates(outputFile, generatorCssHandlerOptions);
|
|
4459
4896
|
const generatorCssUserHandlerOptions = getCssUserHandlerOptions(generatorSourceFile);
|
|
4460
4897
|
const cssRuntimeAffectingSignature = vitePipelineCssAsset ? require_source_candidate_scan_signature.createRuntimeAffectingSourceSignature(generatorRawSource, "css") : snapshot.runtimeAffectingSignatureByFile.get(file) ?? require_source_candidate_scan_signature.createRuntimeAffectingSourceSignature(generatorRawSource, "css");
|
|
@@ -4462,19 +4899,30 @@ function createGenerateBundleHook(context) {
|
|
|
4462
4899
|
const cssShareScope = createCssTransformShareScopeKey(opts, outputFile, generatorRawSource);
|
|
4463
4900
|
const shouldRegenerateCollectedViteCss = viteProcessedCssAsset && useIncrementalMode && state.generatorCandidateSignature !== void 0 && generatorCandidatesChanged && (hasTailwindGenerationSource(generatorRawSource) || require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource) || rememberedCssSource != null && hasTailwindGenerationSource(rememberedCssSource.rawSource));
|
|
4464
4901
|
const shouldRefreshViteProcessedCssByCandidates = viteProcessedCssAsset && useIncrementalMode && state.generatorCandidateSignature !== void 0 && generatorCandidatesChanged;
|
|
4465
|
-
const
|
|
4902
|
+
const vitePipelineCssInjectionOutputFile = webviewRootCssInjectionTarget ?? outputFile;
|
|
4903
|
+
const shouldRecordVitePipelineCssByOutput = require_source_candidate_scan_signature.normalizeOutputPathKey(vitePipelineCssInjectionOutputFile) === require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile);
|
|
4904
|
+
const shouldInjectVitePipelineCssIntoMain = vitePipelineCssAsset && outputCssHandlerOptions.isMainChunk !== true && (webviewRootCssInjectionTarget != null || shouldInjectCssIntoMainFromOutput(outputFile, generatorSourceFile, outputCssHandlerOptions));
|
|
4466
4905
|
const shouldTrackGeneratorRuntime = hasStaleViteProcessedCssSource || shouldRegenerateMainPackageCssWithScopedCandidates || hasCurrentTailwindGenerationDirective || hasSameOutputRememberedTailwindGenerationSource || shouldProcessTailwindGeneration && (!useIncrementalMode || cssHandlerOptions.isMainChunk || processFiles.css.has(file) || runtimeLinkedCssFiles.has(file) || runtimeLinkedCssFiles.has(outputFile) || shouldRegenerateCollectedViteCss || hasRuntimeAffectingChanges && (alreadyProcessedCssAsset || vitePipelineCssAsset));
|
|
4467
4906
|
const shouldPreserveCollectedViteCssAsset = !shouldRegenerateCollectedViteCss && (state.generatorCandidateSignature === void 0 || !generatorCandidatesChanged) && (collectedBundlerGeneratedCssFiles.has(file) || require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(rawSource));
|
|
4468
4907
|
const strippedViteProcessedCss = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(rawSource);
|
|
4469
4908
|
const shouldPreserveStaleGeneratedCssAsset = hasStaleViteProcessedCssSource && shouldPreserveCollectedViteCssAsset && strippedViteProcessedCss.trim().length > 0 && !strippedViteProcessedCss.includes("weapp-tailwindcss generator-placeholder") && !strippedViteProcessedCss.includes("vite-placeholder") && !hasTailwindGenerationSource(strippedViteProcessedCss) && !require_v4_engine.hasTailwindApplyDirective(strippedViteProcessedCss);
|
|
4470
4909
|
if (alreadyProcessedCssAsset && !shouldRefreshViteProcessedCssByCandidates && (!hasStaleViteProcessedCssSource || shouldPreserveStaleGeneratedCssAsset) && !hasRememberedApplySource && !shouldRegenerateMainPackageCssWithScopedCandidates && (!shouldTrackGeneratorRuntime || shouldPreserveCollectedViteCssAsset)) {
|
|
4471
|
-
const nextCss = strippedViteProcessedCss;
|
|
4910
|
+
const nextCss = removeRootCoveredCssFromScopedAsset(strippedViteProcessedCss);
|
|
4472
4911
|
applyCssResult(nextCss);
|
|
4473
4912
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
4474
4913
|
recordCssAssetResult?.(outputFile, nextCss);
|
|
4475
|
-
|
|
4914
|
+
if (vitePipelineCssAsset && rememberedCssSource) rememberCssSource?.({
|
|
4915
|
+
outputFile: vitePipelineCssInjectionOutputFile,
|
|
4916
|
+
rawSource: generatorRawSource,
|
|
4917
|
+
sourceFile: generatorSourceFile
|
|
4918
|
+
});
|
|
4919
|
+
if (shouldRecordVitePipelineCssByOutput) recordViteProcessedCssAssetResult?.(vitePipelineCssInjectionOutputFile, nextCss, {
|
|
4476
4920
|
injectIntoMain: outputCssHandlerOptions.isMainChunk ? false : shouldInjectVitePipelineCssIntoMain,
|
|
4477
|
-
outputFile
|
|
4921
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4922
|
+
});
|
|
4923
|
+
if (vitePipelineCssAsset && shouldInjectVitePipelineCssIntoMain) recordViteProcessedCssAssetResult?.(file, nextCss, {
|
|
4924
|
+
injectIntoMain: shouldInjectVitePipelineCssIntoMain,
|
|
4925
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4478
4926
|
});
|
|
4479
4927
|
onUpdate(outputFile, rawSource, nextCss);
|
|
4480
4928
|
debug("css skip vite-processed asset: %s", outputFile);
|
|
@@ -4512,7 +4960,7 @@ function createGenerateBundleHook(context) {
|
|
|
4512
4960
|
rememberLastCssResult(lastCssResultByFile, lastCssSourceHashByFile, outputFile, source, cssRuntimeAffectingHash);
|
|
4513
4961
|
markCssAssetProcessed?.(originalSource, outputFile);
|
|
4514
4962
|
if (rememberedCssSources.length <= 1) rememberCssSource?.({
|
|
4515
|
-
outputFile,
|
|
4963
|
+
outputFile: vitePipelineCssInjectionOutputFile,
|
|
4516
4964
|
rawSource: generatorRawSource,
|
|
4517
4965
|
sourceFile: generatorSourceFile
|
|
4518
4966
|
}, rememberedCssRuntimeSignature);
|
|
@@ -4547,6 +4995,7 @@ function createGenerateBundleHook(context) {
|
|
|
4547
4995
|
cssUserHandlerOptions: generatorCssUserHandlerOptions,
|
|
4548
4996
|
getSourceCandidatesForEntries: scopedSourceCandidateGetter,
|
|
4549
4997
|
sourceCandidates: scopedGeneratorRuntime,
|
|
4998
|
+
generatorPlatform,
|
|
4550
4999
|
styleHandler,
|
|
4551
5000
|
debug,
|
|
4552
5001
|
previousCss,
|
|
@@ -4554,19 +5003,19 @@ function createGenerateBundleHook(context) {
|
|
|
4554
5003
|
...usesConfiguredTailwindV4FallbackSource ? { restoreLocalCssImports: false } : {}
|
|
4555
5004
|
}) : void 0;
|
|
4556
5005
|
if (generated) {
|
|
4557
|
-
const tracedCss = annotateCss(generated.css);
|
|
5006
|
+
const tracedCss = removeRootCoveredCssFromScopedAsset(annotateCss(transformWebTargetCss(generated.css)));
|
|
4558
5007
|
registerGeneratorDependencies$1({ addWatchFile }, generated.dependencies);
|
|
4559
5008
|
if (envFlags.debugCssDiff) debug("css diff %s: %s", generatorSourceFile, require_source_candidate_scan_signature.summarizeStringDiff(generatorRawSource, tracedCss));
|
|
4560
5009
|
debug("css generated result: %s bytes=%d", file, tracedCss.length);
|
|
4561
5010
|
for (const candidate of generated.classSet ?? []) transformRuntime.add(candidate);
|
|
4562
5011
|
recordCssAssetResult?.(outputFile, tracedCss);
|
|
4563
|
-
recordViteProcessedCssAssetResult?.(
|
|
5012
|
+
if (shouldRecordVitePipelineCssByOutput) recordViteProcessedCssAssetResult?.(vitePipelineCssInjectionOutputFile, tracedCss, {
|
|
4564
5013
|
injectIntoMain: outputCssHandlerOptions.isMainChunk ? false : shouldInjectVitePipelineCssIntoMain,
|
|
4565
|
-
outputFile
|
|
5014
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4566
5015
|
});
|
|
4567
5016
|
if (vitePipelineCssAsset && shouldInjectVitePipelineCssIntoMain) recordViteProcessedCssAssetResult?.(file, tracedCss, {
|
|
4568
5017
|
injectIntoMain: shouldInjectVitePipelineCssIntoMain,
|
|
4569
|
-
outputFile
|
|
5018
|
+
outputFile: vitePipelineCssInjectionOutputFile
|
|
4570
5019
|
});
|
|
4571
5020
|
metrics.css.elapsed += measureElapsed(start);
|
|
4572
5021
|
metrics.css.transformed++;
|
|
@@ -4574,10 +5023,11 @@ function createGenerateBundleHook(context) {
|
|
|
4574
5023
|
return tracedCss;
|
|
4575
5024
|
}
|
|
4576
5025
|
if (isWebGeneratorTarget) {
|
|
5026
|
+
const outputCss = transformWebTargetCss(rawSource);
|
|
4577
5027
|
metrics.css.elapsed += measureElapsed(start);
|
|
4578
5028
|
metrics.css.transformed++;
|
|
4579
5029
|
debug("css preserve web target: %s", outputFile);
|
|
4580
|
-
return annotateCss(
|
|
5030
|
+
return annotateCss(outputCss);
|
|
4581
5031
|
}
|
|
4582
5032
|
const { css } = await styleHandler(generatorRawSource, cssHandlerOptions);
|
|
4583
5033
|
const tracedCss = annotateCss(css);
|
|
@@ -4597,7 +5047,7 @@ function createGenerateBundleHook(context) {
|
|
|
4597
5047
|
continue;
|
|
4598
5048
|
}
|
|
4599
5049
|
if (type !== "js") continue;
|
|
4600
|
-
if (isWebGeneratorTarget) {
|
|
5050
|
+
if (isWebGeneratorTarget && !shouldApplyWebviewSafeSelectors) {
|
|
4601
5051
|
debug("js skip web target: %s", file);
|
|
4602
5052
|
continue;
|
|
4603
5053
|
}
|
|
@@ -4643,6 +5093,7 @@ function createGenerateBundleHook(context) {
|
|
|
4643
5093
|
debug,
|
|
4644
5094
|
defaultStyleOutputExtension,
|
|
4645
5095
|
emitOrReplayCssAsset,
|
|
5096
|
+
generatorPlatform,
|
|
4646
5097
|
generatorRuntime,
|
|
4647
5098
|
getCssHandlerOptions,
|
|
4648
5099
|
getCssUserHandlerOptions,
|
|
@@ -4722,12 +5173,19 @@ function createGenerateBundleHook(context) {
|
|
|
4722
5173
|
tasks,
|
|
4723
5174
|
timingDetails,
|
|
4724
5175
|
transformRuntime,
|
|
5176
|
+
transformWebTargetCss,
|
|
4725
5177
|
useIncrementalMode
|
|
4726
5178
|
});
|
|
4727
5179
|
};
|
|
4728
5180
|
}
|
|
4729
5181
|
//#endregion
|
|
4730
5182
|
//#region src/bundlers/vite/css-finalizer.ts
|
|
5183
|
+
function inferPlatformFromViteOutDir(outDir) {
|
|
5184
|
+
const segment = outDir ? node_path.default.basename(node_path.default.normalize(outDir)) : void 0;
|
|
5185
|
+
if (!segment) return;
|
|
5186
|
+
const normalized = segment.trim().toLowerCase();
|
|
5187
|
+
if (normalized === "h5" || normalized === "web" || normalized === "app" || normalized === "app-plus" || normalized.startsWith("app-") || normalized.startsWith("mp-") || normalized.startsWith("quickapp-webview")) return normalized;
|
|
5188
|
+
}
|
|
4731
5189
|
function isAddWatchFileInvalidRollupPhaseError(error) {
|
|
4732
5190
|
const candidate = error;
|
|
4733
5191
|
return candidate?.code === "INVALID_ROLLUP_PHASE" || candidate?.pluginCode === "INVALID_ROLLUP_PHASE" || candidate?.message?.includes("Cannot call \"addWatchFile\" after the build has finished.") === true;
|
|
@@ -4771,8 +5229,13 @@ function shouldFinalizeProcessedCssAsset(opts, file) {
|
|
|
4771
5229
|
function collectViteProcessedCssSources(getViteProcessedCssAssetResults) {
|
|
4772
5230
|
return [...getViteProcessedCssAssetResults?.() ?? []].map(([, record]) => typeof record === "string" ? record : record.css);
|
|
4773
5231
|
}
|
|
4774
|
-
function
|
|
4775
|
-
|
|
5232
|
+
function isUniAppViteWebviewOutDir(outDir) {
|
|
5233
|
+
const normalized = outDir ? node_path.default.basename(node_path.default.normalize(outDir)).trim().toLowerCase() : void 0;
|
|
5234
|
+
return normalized === "app" || normalized === "app-plus";
|
|
5235
|
+
}
|
|
5236
|
+
function finalizeWebCss(css, enabled, webCompat, options = {}) {
|
|
5237
|
+
const compatCss = enabled ? (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, webCompat) : css;
|
|
5238
|
+
return withUniAppXWebPreflightReset(options.safeSelectors ? (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)(compatCss, { escapeMap: options.escapeMap }) : compatCss, options.uniAppXWebPreflightReset === true);
|
|
4776
5239
|
}
|
|
4777
5240
|
function createViteCssFinalizerOutputPlugin(context) {
|
|
4778
5241
|
return {
|
|
@@ -4784,24 +5247,27 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4784
5247
|
const { opts, runtimeState, ensureRuntimeClassSet, isCssAssetProcessed, markCssAssetProcessed, debug, getResolvedConfig, recordCssAssetResult, recordViteProcessedCssAssetResult, getViteProcessedCssAssetResults, getRecordedGeneratorCandidates, getSourceCandidates, getSourceCandidatesForEntries, getSourceCandidateSourcesForEntries, waitForSourceCandidateSyncs, rememberMainCssSource, getRememberedMainCssSource, isViteProcessedCssAsset } = context;
|
|
4785
5248
|
const resolvedConfig = getResolvedConfig();
|
|
4786
5249
|
const uniUtsPlatform = require_utils.resolveUniUtsPlatform();
|
|
5250
|
+
const generatorPlatform = opts.cssOptions?.platform ?? opts.platform ?? inferPlatformFromViteOutDir(resolvedConfig?.build?.outDir);
|
|
4787
5251
|
const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(opts.generator, {
|
|
4788
5252
|
appType: opts.appType,
|
|
4789
|
-
platform:
|
|
5253
|
+
platform: generatorPlatform,
|
|
4790
5254
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
4791
5255
|
uniAppX: opts.uniAppX,
|
|
4792
5256
|
uniUtsPlatform
|
|
4793
5257
|
});
|
|
4794
5258
|
const generatorBranch = require_generator.resolveGeneratorRuntimeBranch(generatorOptions, {
|
|
4795
5259
|
appType: opts.appType,
|
|
4796
|
-
platform:
|
|
5260
|
+
platform: generatorPlatform,
|
|
4797
5261
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
4798
5262
|
uniAppX: opts.uniAppX,
|
|
4799
5263
|
uniUtsPlatform
|
|
4800
5264
|
});
|
|
4801
5265
|
const isWebGeneratorTarget = generatorBranch.isWeb;
|
|
4802
|
-
const
|
|
4803
|
-
const
|
|
4804
|
-
const
|
|
5266
|
+
const shouldApplyWebviewSafeSelectors = opts.appType === "uni-app-vite" && isUniAppViteWebviewOutDir(resolvedConfig?.build?.outDir);
|
|
5267
|
+
const isUniAppXStyleTarget = opts.appType === "uni-app-x";
|
|
5268
|
+
const canInferHarmonyAppStyleTarget = isUniAppXStyleTarget && (!uniUtsPlatform.normalized || uniUtsPlatform.isApp);
|
|
5269
|
+
const isHarmonyAppStyleTarget = isUniAppXStyleTarget && (uniUtsPlatform.isAppHarmony || canInferHarmonyAppStyleTarget && (isUniAppXHarmonyBundle(bundle) || isUniAppXHarmonyOutDir(resolvedConfig?.build?.outDir)));
|
|
5270
|
+
const isNativeAppStyleTarget = isUniAppXStyleTarget && (uniUtsPlatform.isApp || isHarmonyAppStyleTarget);
|
|
4805
5271
|
if (resolvedConfig?.command !== "build" && !isNativeAppStyleTarget) return;
|
|
4806
5272
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
4807
5273
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType) ?? resolveSourceRootFromBundleGraph(resolvedConfig, bundle);
|
|
@@ -4818,7 +5284,11 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4818
5284
|
recordCssAssetResult,
|
|
4819
5285
|
recordViteProcessedCssAssetResult,
|
|
4820
5286
|
resolveViteProcessedCssOutputFile: (file) => resolveViteCssPipelineOutputFile(file, opts, rootDir, isWebGeneratorTarget, isNativeAppStyleTarget, sourceRoot, resolveMiniProgramStyleOutputExtension({ files: Object.keys(bundle) }), Object.keys(bundle)),
|
|
4821
|
-
transformCss: (css) => finalizeWebCss(css, generatorBranch.isWeb, generatorOptions.webCompat
|
|
5287
|
+
transformCss: (css) => finalizeWebCss(css, generatorBranch.isWeb, generatorOptions.webCompat, {
|
|
5288
|
+
escapeMap: opts.escapeMap,
|
|
5289
|
+
safeSelectors: shouldApplyWebviewSafeSelectors,
|
|
5290
|
+
uniAppXWebPreflightReset: opts.appType === "uni-app-x" && generatorBranch.isWeb
|
|
5291
|
+
}),
|
|
4822
5292
|
debug
|
|
4823
5293
|
});
|
|
4824
5294
|
};
|
|
@@ -4828,6 +5298,11 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4828
5298
|
getViteProcessedCssAssetResults,
|
|
4829
5299
|
markCssAssetProcessed,
|
|
4830
5300
|
recordCssAssetResult,
|
|
5301
|
+
transformCss: (css) => finalizeWebCss(css, generatorBranch.isWeb, generatorOptions.webCompat, {
|
|
5302
|
+
escapeMap: opts.escapeMap,
|
|
5303
|
+
safeSelectors: shouldApplyWebviewSafeSelectors,
|
|
5304
|
+
uniAppXWebPreflightReset: opts.appType === "uni-app-x" && generatorBranch.isWeb
|
|
5305
|
+
}),
|
|
4831
5306
|
debug,
|
|
4832
5307
|
onUpdate: opts.onUpdate
|
|
4833
5308
|
});
|
|
@@ -4853,6 +5328,7 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4853
5328
|
isMainChunk: false
|
|
4854
5329
|
},
|
|
4855
5330
|
getSourceCandidatesForEntries,
|
|
5331
|
+
generatorPlatform,
|
|
4856
5332
|
styleHandler: opts.styleHandler,
|
|
4857
5333
|
debug
|
|
4858
5334
|
});
|
|
@@ -4891,7 +5367,11 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4891
5367
|
const file = output.fileName || bundleFile;
|
|
4892
5368
|
const rawSource = output.source.toString();
|
|
4893
5369
|
if (isViteProcessedCssAsset?.(output, file)) {
|
|
4894
|
-
const nextCss = annotateCss(finalizeWebCss(require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(rawSource), generatorBranch.isWeb, generatorOptions.webCompat
|
|
5370
|
+
const nextCss = annotateCss(finalizeWebCss(require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(rawSource), generatorBranch.isWeb, generatorOptions.webCompat, {
|
|
5371
|
+
escapeMap: opts.escapeMap,
|
|
5372
|
+
safeSelectors: shouldApplyWebviewSafeSelectors,
|
|
5373
|
+
uniAppXWebPreflightReset: opts.appType === "uni-app-x" && generatorBranch.isWeb
|
|
5374
|
+
}));
|
|
4895
5375
|
output.source = nextCss;
|
|
4896
5376
|
markCssAssetProcessed(output, file);
|
|
4897
5377
|
recordCssAssetResult?.(file, nextCss);
|
|
@@ -4922,10 +5402,15 @@ function createViteCssFinalizerOutputPlugin(context) {
|
|
|
4922
5402
|
cssHandlerOptions: generatorCssHandlerOptions,
|
|
4923
5403
|
cssUserHandlerOptions: generatorCssUserHandlerOptions,
|
|
4924
5404
|
getSourceCandidatesForEntries,
|
|
5405
|
+
generatorPlatform,
|
|
4925
5406
|
styleHandler: opts.styleHandler,
|
|
4926
5407
|
debug
|
|
4927
5408
|
}) : void 0;
|
|
4928
|
-
const nextCss = annotateCss(generated?.css ?? (generatorBranch.isWeb ? finalizeWebCss(rawSource, true, generatorOptions.webCompat
|
|
5409
|
+
const nextCss = annotateCss(generated?.css ?? (generatorBranch.isWeb ? finalizeWebCss(rawSource, true, generatorOptions.webCompat, {
|
|
5410
|
+
escapeMap: opts.escapeMap,
|
|
5411
|
+
safeSelectors: shouldApplyWebviewSafeSelectors,
|
|
5412
|
+
uniAppXWebPreflightReset: opts.appType === "uni-app-x" && generatorBranch.isWeb
|
|
5413
|
+
}) : (await opts.styleHandler(rawSource, cssHandlerOptions)).css));
|
|
4929
5414
|
if (generated) {
|
|
4930
5415
|
registerGeneratorDependencies(this, generated.dependencies);
|
|
4931
5416
|
debug("css finalizer generated result: %s bytes=%d", file, nextCss.length);
|
|
@@ -5074,6 +5559,7 @@ function createViteCssMemory(options) {
|
|
|
5074
5559
|
for (const [rememberedKey, remembered] of relatedRememberedEntries) {
|
|
5075
5560
|
touchMapEntry(rememberedCssSources, rememberedKey, {
|
|
5076
5561
|
...remembered,
|
|
5562
|
+
outputFile: entry.outputFile,
|
|
5077
5563
|
rawSource: entry.rawSource,
|
|
5078
5564
|
sourceFile: entry.sourceFile
|
|
5079
5565
|
});
|
|
@@ -5623,6 +6109,12 @@ function isViteServeCssRootRequest(id, command) {
|
|
|
5623
6109
|
function isViteCssHmrModule(code, id, command) {
|
|
5624
6110
|
return isViteServeStyleRequest(id, command) && VITE_CSS_HMR_MODULE_RE.test(code) && /[?&](?:direct|vue)(?:&|$)/.test(id);
|
|
5625
6111
|
}
|
|
6112
|
+
function hasViteServeCssGenerationDirective(code) {
|
|
6113
|
+
return require_v4_engine.hasTailwindRootDirectives(code) || require_v4_engine.hasTailwindSourceDirectives(code, { importFallback: true }) || require_v4_engine.hasTailwindApplyDirective(code);
|
|
6114
|
+
}
|
|
6115
|
+
function hasViteServeCssRootDirective(code) {
|
|
6116
|
+
return require_v4_engine.hasTailwindRootDirectives(code);
|
|
6117
|
+
}
|
|
5626
6118
|
function createViteServeCssGenerationPlugins(options) {
|
|
5627
6119
|
return [{
|
|
5628
6120
|
name: `${require_context.vitePluginName}:generate:serve`,
|
|
@@ -5647,7 +6139,8 @@ function createViteServeCssGenerationPlugins(options) {
|
|
|
5647
6139
|
if (!options.shouldGenerate() || !isViteCssHmrModule(code, id, options.getCommand())) return;
|
|
5648
6140
|
const extracted = extractViteCssHmrModuleCss(code);
|
|
5649
6141
|
if (!extracted) return;
|
|
5650
|
-
|
|
6142
|
+
if (!hasViteServeCssGenerationDirective(extracted.css)) return;
|
|
6143
|
+
if (hasViteServeCssRootDirective(extracted.css)) await options.onTailwindRootCss?.(id, extracted.css);
|
|
5651
6144
|
const generatedCss = await options.generateCss(id, extracted.css, this);
|
|
5652
6145
|
if (generatedCss === void 0 || generatedCss === extracted.css) return;
|
|
5653
6146
|
const nextCode = replaceViteCssHmrModuleCss(code, generatedCss);
|
|
@@ -5724,6 +6217,15 @@ function sameStringList(first, second) {
|
|
|
5724
6217
|
if (!first || !second || first.length !== second.length) return false;
|
|
5725
6218
|
return first.every((item, index) => item === second[index]);
|
|
5726
6219
|
}
|
|
6220
|
+
function collectConfiguredCssEntries(options) {
|
|
6221
|
+
const runtimeCssEntries = options.tailwindcssRuntimeOptions?.tailwindcss?.v4?.cssEntries;
|
|
6222
|
+
const entries = [
|
|
6223
|
+
...Array.isArray(options.cssEntries) ? options.cssEntries : [],
|
|
6224
|
+
...Array.isArray(options.tailwindcss?.v4?.cssEntries) ? options.tailwindcss.v4.cssEntries : [],
|
|
6225
|
+
...Array.isArray(runtimeCssEntries) ? runtimeCssEntries : []
|
|
6226
|
+
].filter((item) => typeof item === "string" && item.length > 0);
|
|
6227
|
+
return entries.length > 0 ? [...new Set(entries)] : void 0;
|
|
6228
|
+
}
|
|
5727
6229
|
function normalizeViteStylePlatform(value, appType) {
|
|
5728
6230
|
return require_context.normalizeFrameworkStylePlatform(value, appType);
|
|
5729
6231
|
}
|
|
@@ -5736,6 +6238,13 @@ function inferPlatformFromOutDir(outDir) {
|
|
|
5736
6238
|
function isWebOrNativeAppPlatform(platform) {
|
|
5737
6239
|
return platform === "h5" || platform === "web" || platform?.startsWith("web-") === true || platform === "app" || platform === "app-plus" || platform?.startsWith("app-") === true;
|
|
5738
6240
|
}
|
|
6241
|
+
function isUniAppViteWebviewStylePlatform(platform) {
|
|
6242
|
+
return platform === "app" || platform === "app-plus";
|
|
6243
|
+
}
|
|
6244
|
+
function applyUniAppViteWebviewCssCompat(css, options) {
|
|
6245
|
+
const compatCss = (0, _weapp_tailwindcss_postcss.transformWebCssCompat)(css, options.compat);
|
|
6246
|
+
return options.safeSelectors ? (0, _weapp_tailwindcss_postcss.transformWebCssSafeSelectors)(compatCss, { escapeMap: options.escapeMap }) : compatCss;
|
|
6247
|
+
}
|
|
5739
6248
|
/**
|
|
5740
6249
|
* @name WeappTailwindcss
|
|
5741
6250
|
* @description uni-app vite / uni-app-x 版本插件
|
|
@@ -5744,7 +6253,7 @@ function isWebOrNativeAppPlatform(platform) {
|
|
|
5744
6253
|
function WeappTailwindcss(options = {}) {
|
|
5745
6254
|
const hasExplicitAppType = typeof options.appType === "string" && options.appType.trim().length > 0;
|
|
5746
6255
|
const hasExplicitTailwindcssBasedir = typeof options.tailwindcssBasedir === "string" && options.tailwindcssBasedir.trim().length > 0;
|
|
5747
|
-
const rawCssEntries =
|
|
6256
|
+
const rawCssEntries = collectConfiguredCssEntries(options);
|
|
5748
6257
|
const opts = require_context.getCompilerContext({
|
|
5749
6258
|
...options,
|
|
5750
6259
|
__internalDeferMissingCssEntriesWarning: true
|
|
@@ -5767,23 +6276,13 @@ function WeappTailwindcss(options = {}) {
|
|
|
5767
6276
|
const initialTailwindRuntime = tailwindRuntime;
|
|
5768
6277
|
const refreshTailwindRuntime = refreshTailwindcssRuntime;
|
|
5769
6278
|
const uniAppXEnabled = require_tailwindcss.isUniAppXEnabled(uniAppX);
|
|
6279
|
+
const shouldEnableUniAppXPlugins = opts.appType === "uni-app-x" || uniAppXEnabled;
|
|
5770
6280
|
const disabledOptions = require_source_candidate_scan_signature.resolvePluginDisabledState(disabled);
|
|
5771
6281
|
const tailwindcssMajorVersion = initialTailwindRuntime.majorVersion ?? 0;
|
|
5772
6282
|
if (!disabledOptions.plugin && tailwindcssMajorVersion !== 4) throw new Error("weapp-tailwindcss/vite 新生成管线仅支持 Tailwind CSS v4,请升级 tailwindcss 或停留在旧版 weapp-tailwindcss。");
|
|
5773
6283
|
const shouldOwnTailwindGeneration = !disabledOptions.plugin;
|
|
5774
6284
|
const shouldRewriteCssImports = opts.rewriteCssImports === true;
|
|
5775
|
-
|
|
5776
|
-
appType: opts.appType,
|
|
5777
|
-
platform: opts.cssOptions?.platform ?? opts.platform,
|
|
5778
|
-
tailwindcssMajorVersion,
|
|
5779
|
-
uniAppX
|
|
5780
|
-
});
|
|
5781
|
-
const generatorBranch = require_generator.resolveGeneratorRuntimeBranch(generatorOptions, {
|
|
5782
|
-
appType: opts.appType,
|
|
5783
|
-
platform: opts.cssOptions?.platform ?? opts.platform,
|
|
5784
|
-
tailwindcssMajorVersion,
|
|
5785
|
-
uniAppX
|
|
5786
|
-
});
|
|
6285
|
+
let resolvedConfig;
|
|
5787
6286
|
const resolveViteStylePlatform = () => {
|
|
5788
6287
|
const explicit = normalizeViteStylePlatform(opts.cssOptions?.platform ?? opts.platform, opts.appType);
|
|
5789
6288
|
if (explicit) return explicit;
|
|
@@ -5793,9 +6292,23 @@ function WeappTailwindcss(options = {}) {
|
|
|
5793
6292
|
}
|
|
5794
6293
|
return inferPlatformFromOutDir(resolvedConfig?.build?.outDir);
|
|
5795
6294
|
};
|
|
6295
|
+
const resolveGeneratorPlatform = () => opts.cssOptions?.platform ?? opts.platform ?? resolveViteStylePlatform();
|
|
6296
|
+
const resolveCurrentGeneratorOptions = () => require_generator.normalizeWeappTailwindcssGeneratorOptions(opts.generator, {
|
|
6297
|
+
appType: opts.appType,
|
|
6298
|
+
platform: resolveGeneratorPlatform(),
|
|
6299
|
+
tailwindcssMajorVersion,
|
|
6300
|
+
uniAppX
|
|
6301
|
+
});
|
|
6302
|
+
const resolveCurrentGeneratorBranch = () => require_generator.resolveGeneratorRuntimeBranch(resolveCurrentGeneratorOptions(), {
|
|
6303
|
+
appType: opts.appType,
|
|
6304
|
+
platform: resolveGeneratorPlatform(),
|
|
6305
|
+
tailwindcssMajorVersion,
|
|
6306
|
+
uniAppX
|
|
6307
|
+
});
|
|
6308
|
+
const initialGeneratorBranch = resolveCurrentGeneratorBranch();
|
|
5796
6309
|
const transformEarlyMiniProgramCss = (code) => {
|
|
5797
6310
|
const platform = resolveViteStylePlatform();
|
|
5798
|
-
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) :
|
|
6311
|
+
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) : resolveCurrentGeneratorBranch().isWeb)) return code;
|
|
5799
6312
|
let transformedCode = code;
|
|
5800
6313
|
if (transformedCode.includes("#if")) transformedCode = (0, _weapp_tailwindcss_postcss.compileCssMacroConditionalComments)(transformedCode, { platform: resolveViteStylePlatform() });
|
|
5801
6314
|
if (transformedCode.includes("@layer")) transformedCode = (0, _weapp_tailwindcss_postcss.unwrapUnsupportedCascadeLayers)(transformedCode);
|
|
@@ -5803,10 +6316,10 @@ function WeappTailwindcss(options = {}) {
|
|
|
5803
6316
|
};
|
|
5804
6317
|
const finalizeViteMiniProgramCss = (css) => {
|
|
5805
6318
|
const platform = resolveViteStylePlatform();
|
|
5806
|
-
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) :
|
|
6319
|
+
if (!shouldOwnTailwindGeneration || (platform ? isWebOrNativeAppPlatform(platform) : resolveCurrentGeneratorBranch().isWeb)) return css;
|
|
5807
6320
|
return (0, _weapp_tailwindcss_postcss.unwrapUnsupportedCascadeLayers)(css);
|
|
5808
6321
|
};
|
|
5809
|
-
const shouldInferAppType = !hasExplicitAppType && !
|
|
6322
|
+
const shouldInferAppType = !hasExplicitAppType && !initialGeneratorBranch.isWeb;
|
|
5810
6323
|
const hasInitialTailwindCssRoots = require_v4_engine.hasConfiguredTailwindV4CssRoots({
|
|
5811
6324
|
...options,
|
|
5812
6325
|
cssEntries: opts.cssEntries ?? options.cssEntries
|
|
@@ -5886,7 +6399,6 @@ function WeappTailwindcss(options = {}) {
|
|
|
5886
6399
|
await refreshRuntimeStateForAutoCssSources?.(true);
|
|
5887
6400
|
};
|
|
5888
6401
|
const customAttributesEntities = require_context.toCustomAttributesEntities(customAttributes);
|
|
5889
|
-
let resolvedConfig;
|
|
5890
6402
|
let recordedGeneratorCandidates;
|
|
5891
6403
|
const sourceCandidateCollector = require_hmr_timing.createSourceCandidateCollector({ bareArbitraryValues: opts.arbitraryValues?.bareArbitraryValues });
|
|
5892
6404
|
const sourceCandidateScanCache = new lru_cache.LRUCache({ max: SOURCE_CANDIDATE_SCAN_CACHE_MAX });
|
|
@@ -5944,7 +6456,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
5944
6456
|
const isWatchLikeBuild = () => isWatchBuild() || resolvedConfig?.command === "serve" || node_process.default.env["WEAPP_TW_WATCH_REGRESSION"] === "1" || node_process.default.env["WEAPP_TW_HMR_TIMING"] === "1";
|
|
5945
6457
|
const isCurrentWebLikeStylePlatform = () => {
|
|
5946
6458
|
const platform = resolveViteStylePlatform();
|
|
5947
|
-
return platform ? isWebOrNativeAppPlatform(platform) :
|
|
6459
|
+
return platform ? isWebOrNativeAppPlatform(platform) : resolveCurrentGeneratorBranch().isWeb;
|
|
5948
6460
|
};
|
|
5949
6461
|
const isNuxtPageMacroHotModule = (id) => {
|
|
5950
6462
|
if (typeof id !== "string" || !/[?&]macro=true(?:&|$)/.test(id)) return false;
|
|
@@ -6164,48 +6676,58 @@ function WeappTailwindcss(options = {}) {
|
|
|
6164
6676
|
const file = (0, _weapp_tailwindcss_shared.cleanUrl)(id);
|
|
6165
6677
|
const requestFile = require_source_candidate_scan_signature.isCSSRequest(id) ? id : file;
|
|
6166
6678
|
if (!require_source_candidate_scan_signature.isCSSRequest(requestFile) || opts.htmlMatcher(file) || require_source_candidate_scan_signature.isHTMLRequest(file)) return;
|
|
6679
|
+
const generatorCode = require_v4_engine.normalizeEmptyTailwindCustomVariants(code);
|
|
6167
6680
|
const rootDir = resolvedConfig?.root ? node_path.default.resolve(resolvedConfig.root) : node_process.default.cwd();
|
|
6168
6681
|
const isHarmonyAppStyleTarget = isHarmonyAppBuildTarget();
|
|
6169
|
-
const isNativeAppStyleTarget = require_utils.resolveUniUtsPlatform().isApp || isHarmonyAppStyleTarget;
|
|
6682
|
+
const isNativeAppStyleTarget = opts.appType === "uni-app-x" && (require_utils.resolveUniUtsPlatform().isApp || isHarmonyAppStyleTarget);
|
|
6170
6683
|
const sourceRoot = resolveWeappViteSourceRoot(resolvedConfig, opts.appType);
|
|
6171
|
-
const
|
|
6684
|
+
const currentGeneratorOptions = resolveCurrentGeneratorOptions();
|
|
6685
|
+
const currentGeneratorBranch = resolveCurrentGeneratorBranch();
|
|
6686
|
+
const outputFile = resolveViteCssPipelineOutputFile(requestFile, opts, rootDir, currentGeneratorBranch.isWeb, isNativeAppStyleTarget, sourceRoot);
|
|
6172
6687
|
const runtime = getRecordedGeneratorCandidates() ?? getSourceCandidates() ?? await ensureRuntimeClassSet();
|
|
6173
6688
|
const outputCssHandlerOptions = transformCssHandlerOptions.getCssHandlerOptions(outputFile);
|
|
6174
6689
|
const cssHandlerOptions = {
|
|
6175
6690
|
...transformCssHandlerOptions.getCssHandlerOptions(file),
|
|
6176
6691
|
isMainChunk: outputCssHandlerOptions.isMainChunk
|
|
6177
6692
|
};
|
|
6178
|
-
const transientCssSource = transientAutoCssSources.get(file) ?? (require_v4_engine.hasTailwindRootDirectives(
|
|
6693
|
+
const transientCssSource = transientAutoCssSources.get(file) ?? (require_v4_engine.hasTailwindRootDirectives(generatorCode, { importFallback: currentGeneratorOptions.importFallback }) || require_v4_engine.hasTailwindSourceDirectives(generatorCode, { importFallback: currentGeneratorOptions.importFallback }) || require_v4_engine.hasTailwindApplyDirective(generatorCode) ? {
|
|
6179
6694
|
base: node_path.default.dirname(node_path.default.resolve(file)),
|
|
6180
|
-
css:
|
|
6695
|
+
css: generatorCode,
|
|
6181
6696
|
file: node_path.default.resolve(file)
|
|
6182
6697
|
} : void 0);
|
|
6183
|
-
const shouldDeferEmptyScopedCssSource = transientCssSource == null && !(opts.appType === "uni-app-x" && !cssHandlerOptions.isMainChunk && require_v4_engine.hasTailwindApplyDirective(
|
|
6698
|
+
const shouldDeferEmptyScopedCssSource = transientCssSource == null && !(opts.appType === "uni-app-x" && !cssHandlerOptions.isMainChunk && require_v4_engine.hasTailwindApplyDirective(generatorCode));
|
|
6184
6699
|
const generated = await require_source_candidate_scan_signature.generateTailwindV4Css({
|
|
6185
6700
|
opts,
|
|
6186
6701
|
runtimeState,
|
|
6187
6702
|
runtime,
|
|
6188
|
-
rawSource:
|
|
6703
|
+
rawSource: generatorCode,
|
|
6189
6704
|
file,
|
|
6190
6705
|
outputFile,
|
|
6191
6706
|
cssHandlerOptions,
|
|
6192
6707
|
cssUserHandlerOptions: transformCssHandlerOptions.getCssUserHandlerOptions(file),
|
|
6193
6708
|
cssSources: transientCssSource ? [transientCssSource] : void 0,
|
|
6194
6709
|
getSourceCandidatesForEntries,
|
|
6710
|
+
generatorPlatform: resolveGeneratorPlatform(),
|
|
6195
6711
|
styleHandler,
|
|
6196
6712
|
debug,
|
|
6197
6713
|
previousCss: viteGeneratedCssByFile.get(file),
|
|
6198
6714
|
deferEmptyScopedCssSource: shouldDeferEmptyScopedCssSource,
|
|
6199
|
-
restoreLocalCssImports: !
|
|
6715
|
+
restoreLocalCssImports: !currentGeneratorBranch.isWeb
|
|
6200
6716
|
});
|
|
6201
6717
|
if (!generated) return;
|
|
6202
|
-
const
|
|
6718
|
+
const finalizedCss = finalizeViteMiniProgramCss(generated.css);
|
|
6719
|
+
const isUniAppViteWebviewPlatform = opts.appType === "uni-app-vite" && isUniAppViteWebviewStylePlatform(resolveViteStylePlatform());
|
|
6720
|
+
const tracedCss = require_hmr_timing.annotateCssSourceTrace(withUniAppXWebPreflightReset(removeScopedTailwindPreflightCss(currentGeneratorBranch.isWeb || isUniAppViteWebviewPlatform ? applyUniAppViteWebviewCssCompat(finalizedCss, {
|
|
6721
|
+
compat: currentGeneratorOptions.webCompat ?? true,
|
|
6722
|
+
escapeMap: opts.escapeMap,
|
|
6723
|
+
safeSelectors: isUniAppViteWebviewPlatform
|
|
6724
|
+
}) : finalizedCss), opts.appType === "uni-app-x" && currentGeneratorBranch.isWeb), {
|
|
6203
6725
|
opts,
|
|
6204
6726
|
tokenSources: require_hmr_timing.createCssTokenSourceMap(getSourceCandidateSourcesForEntries(void 0), opts)
|
|
6205
6727
|
});
|
|
6206
6728
|
for (const dependency of generated.dependencies) hookContext?.addWatchFile?.(dependency);
|
|
6207
6729
|
viteGeneratedCssByFile.set(file, tracedCss);
|
|
6208
|
-
const shouldInjectGeneratedCssIntoMain = mainCssChunkMatcher(outputFile, opts.appType) || require_v4_engine.hasTailwindRootDirectives(
|
|
6730
|
+
const shouldInjectGeneratedCssIntoMain = mainCssChunkMatcher(outputFile, opts.appType) || require_v4_engine.hasTailwindRootDirectives(generatorCode, { importFallback: currentGeneratorOptions.importFallback }) && !require_source_candidate_scan_signature.normalizeOutputPathKey(outputFile).includes("/");
|
|
6209
6731
|
recordViteProcessedCssAssetResult(file, tracedCss, {
|
|
6210
6732
|
injectIntoMain: shouldInjectGeneratedCssIntoMain,
|
|
6211
6733
|
outputFile
|
|
@@ -6237,7 +6759,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
6237
6759
|
onTailwindRootCss: (id, code) => registerAutoCssSource(id, code),
|
|
6238
6760
|
onCssSourceTransform: (id, code) => cssMemory.refreshRememberedCssSourceBySourceFile(id, code),
|
|
6239
6761
|
shouldGenerateCss: (_id, code) => hasVitePipelineTailwindGenerationDirective(code),
|
|
6240
|
-
shouldDeferGeneration: (_id, code) => !shouldRewriteCssImports && require_v4_engine.hasTailwindRootDirectives(code, { importFallback:
|
|
6762
|
+
shouldDeferGeneration: (_id, code) => !shouldRewriteCssImports && require_v4_engine.hasTailwindRootDirectives(code, { importFallback: resolveCurrentGeneratorOptions().importFallback }),
|
|
6241
6763
|
shouldOwnTailwindGeneration,
|
|
6242
6764
|
shouldRewrite: shouldRewriteCssImports,
|
|
6243
6765
|
weappTailwindcssDirPosix
|
|
@@ -6304,7 +6826,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
6304
6826
|
if (shouldDiscoverAutoCssSources()) await discoverAndRegisterAutoCssSources();
|
|
6305
6827
|
await syncSourceCandidateScan();
|
|
6306
6828
|
};
|
|
6307
|
-
const uniAppXPlugins =
|
|
6829
|
+
const uniAppXPlugins = shouldEnableUniAppXPlugins ? createUniAppXPlugins({
|
|
6308
6830
|
appType: opts.appType ?? "uni-app-x",
|
|
6309
6831
|
customAttributesEntities,
|
|
6310
6832
|
disabledDefaultTemplateHandler,
|
|
@@ -6336,7 +6858,7 @@ function WeappTailwindcss(options = {}) {
|
|
|
6336
6858
|
order: "pre",
|
|
6337
6859
|
async handler(code, id) {
|
|
6338
6860
|
let transformedCode = code;
|
|
6339
|
-
if (shouldOwnTailwindGeneration && !
|
|
6861
|
+
if (shouldOwnTailwindGeneration && !resolveCurrentGeneratorBranch().isWeb && require_source_candidate_scan_signature.isCSSRequest(id)) transformedCode = transformEarlyMiniProgramCss(code);
|
|
6340
6862
|
const shouldReturnTransformedCode = transformedCode !== code;
|
|
6341
6863
|
if (shouldOwnTailwindGeneration) cssMemory.rememberKnownSfcSource(id, transformedCode);
|
|
6342
6864
|
if (!shouldOwnTailwindGeneration || !require_hmr_timing.isSourceCandidateRequest(id) || !shouldCollectTransformedSourceCandidates(id)) {
|
|
@@ -6416,10 +6938,10 @@ function WeappTailwindcss(options = {}) {
|
|
|
6416
6938
|
shouldGenerate: () => shouldOwnTailwindGeneration
|
|
6417
6939
|
}),
|
|
6418
6940
|
createViteServeJsTransformPlugin({
|
|
6419
|
-
createHandlerOptions: serveJsHandlerOptions,
|
|
6941
|
+
createHandlerOptions: (file) => serveJsHandlerOptions(file, opts.appType === "uni-app-vite" && isUniAppViteWebviewStylePlatform(resolveViteStylePlatform()) ? { needEscaped: true } : void 0),
|
|
6420
6942
|
getCommand: () => resolvedConfig?.command,
|
|
6421
6943
|
jsHandler,
|
|
6422
|
-
shouldTransform: () => shouldOwnTailwindGeneration && !
|
|
6944
|
+
shouldTransform: () => shouldOwnTailwindGeneration && (!resolveCurrentGeneratorBranch().isWeb || opts.appType === "uni-app-vite" && isUniAppViteWebviewStylePlatform(resolveViteStylePlatform())),
|
|
6423
6945
|
transformRuntime: ensureRuntimeClassSet
|
|
6424
6946
|
}),
|
|
6425
6947
|
{
|