weapp-tailwindcss 5.1.13 → 5.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auto-2dg_uhEJ.mjs +13 -0
- package/dist/bundlers/gulp/frameworks/native/index.d.ts +2 -0
- package/dist/bundlers/gulp/index.d.ts +2 -0
- package/dist/bundlers/gulp/shared/create-native-framework-plugins.d.ts +2 -0
- package/dist/bundlers/shared/generated-css-marker.d.ts +2 -2
- package/dist/bundlers/shared/generator-css/local-imports.d.ts +1 -1
- package/dist/bundlers/shared/generator-css/source-resolver/postcss-source.d.ts +2 -0
- package/dist/bundlers/shared/generator-css/types.d.ts +5 -0
- package/dist/bundlers/shared/style-requests.d.ts +1 -0
- package/dist/bundlers/vite/bundle-state.d.ts +1 -0
- package/dist/bundlers/vite/css-finalizer.d.ts +1 -0
- package/dist/bundlers/vite/frameworks/taro/index.d.ts +2 -0
- package/dist/bundlers/vite/frameworks/uni-app/index.d.ts +2 -0
- package/dist/bundlers/vite/frameworks/uni-app-x/index.d.ts +2 -0
- package/dist/bundlers/vite/generate-bundle/bundle-markup-candidates.d.ts +20 -0
- package/dist/bundlers/vite/generate-bundle/css-handler-options.d.ts +1 -0
- package/dist/bundlers/vite/generate-bundle/remembered-css-replay.d.ts +4 -0
- package/dist/bundlers/vite/generate-bundle/root-style-output.d.ts +18 -0
- package/dist/bundlers/vite/generate-bundle/sfc-style-source.d.ts +2 -1
- package/dist/bundlers/vite/generate-bundle/source-candidate-source.d.ts +1 -0
- package/dist/bundlers/vite/generate-bundle/types.d.ts +7 -0
- package/dist/bundlers/vite/serve-css-generation.d.ts +3 -2
- package/dist/bundlers/vite/serve-root-import-shell.d.ts +8 -0
- package/dist/bundlers/vite/shared/create-framework-plugins.d.ts +1 -0
- package/dist/bundlers/vite/source-candidates.d.ts +3 -0
- package/dist/bundlers/vite/watch-css-post.d.ts +10 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/shared.d.ts +6 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/css-source-resolvers.d.ts +1 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/pipeline-helpers.d.ts +2 -0
- package/dist/bundlers/webpack/loaders/runtime-registry.d.ts +1 -0
- package/dist/bundlers/webpack/loaders/weapp-tw-css-generation-loader.d.ts +4 -0
- package/dist/bundlers/webpack/loaders/weapp-tw-css-import-rewrite-loader.d.ts +3 -0
- package/dist/{context-xSJE588m.mjs → context-BgGWVAmN.mjs} +5 -3
- package/dist/{context-DRRgW7i2.js → context-VeFq_8vW.js} +5 -3
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/css-macro.mjs +1 -1
- package/dist/{generator-CS10c9g1.js → generator-CEnUsjed.js} +17 -3
- package/dist/{generator-BvPcmqxU.mjs → generator-CEo920So.mjs} +18 -4
- package/dist/generator.js +1 -1
- package/dist/generator.mjs +1 -1
- package/dist/{gulp-DNZZvUMq.js → gulp-3m1dAiig.js} +92 -54
- package/dist/{gulp-BEOzXrbp.mjs → gulp-DP71z1jG.mjs} +92 -54
- package/dist/gulp.js +1 -1
- package/dist/gulp.mjs +1 -1
- package/dist/{hmr-timing-hRhRAjYV.mjs → hmr-timing-1aS6--U7.mjs} +272 -56
- package/dist/{hmr-timing-DW1g3zjl.js → hmr-timing-B8p4f0ca.js} +323 -53
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/postcss.js +1 -1
- package/dist/postcss.mjs +1 -1
- package/dist/presets.js +1 -1
- package/dist/presets.mjs +1 -1
- package/dist/rspack.js +1 -1
- package/dist/rspack.mjs +1 -1
- package/dist/shared/mpx.d.ts +4 -1
- package/dist/{source-candidate-scan-signature-CMgu5bJk.js → source-candidate-scan-signature-BAahhiwb.js} +20 -139
- package/dist/{source-candidate-scan-signature-t4XKAQ04.mjs → source-candidate-scan-signature-Cf7259PR.mjs} +21 -104
- package/dist/tailwindcss/candidates.d.ts +4 -0
- package/dist/{tailwindcss-z9JMF-qU.js → tailwindcss-KBYPJ2DW.js} +1 -1
- package/dist/{tailwindcss-DZT_pWrd.mjs → tailwindcss-xs704TRw.mjs} +1 -1
- package/dist/{transform-D5JUgMpE.mjs → transform-B_KM9sLX.mjs} +47 -5
- package/dist/{transform-COFRlmDF.js → transform-CcYptivi.js} +47 -5
- package/dist/uni-app-x/component-local-style.d.ts +1 -0
- package/dist/uni-app-x/style-asset/style-value.d.ts +1 -1
- package/dist/{vite-DnkObu2L.js → vite-DUVjMduj.js} +807 -320
- package/dist/{vite-Tpgi77vE.mjs → vite-nXZEiwG0.mjs} +757 -270
- package/dist/vite.js +1 -1
- package/dist/vite.mjs +1 -1
- package/dist/weapp-tw-css-generation-loader.js +12 -0
- package/dist/weapp-tw-css-import-rewrite-loader-DNk0IxAt.js +10198 -0
- package/dist/weapp-tw-css-import-rewrite-loader.js +6 -8209
- package/dist/{webpack-CTYm19zA.mjs → webpack-C_UUFRgj.mjs} +228 -58
- package/dist/{webpack-CzXjfvYS.js → webpack-nppysF4B.js} +240 -70
- package/dist/webpack.js +1 -1
- package/dist/webpack.mjs +1 -1
- package/package.json +11 -3
- package/dist/auto-CrJJc5rK.mjs +0 -13
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { B as stripUnmatchedTailwindSourceMediaCloseFragments, E as resolveTailwindcssOptions, F as removeTailwindV4GeneratedUserCssArtifacts, H as finalizeMiniProgramCss, I as removeTailwindV4GeneratorAtRules, J as hasTailwindApplyDirective, K as stripMiniProgramCssSpecificityPlaceholders, M as isCommentOnlyCss, P as removeMiniProgramHoverSelectors, Q as normalizeTailwindConfigDirectives, W as pruneMiniProgramGeneratedCss, X as hasTailwindRootDirectives, Z as hasTailwindSourceDirectives, ct as hasTailwindGeneratedCssMarkers, g as upsertTailwindV4CssSource, h as hasConfiguredTailwindV4CssRoots, i as normalizeWeappTailwindcssGeneratorOptions, kt as resolveSourceScanPath, nt as removeTailwindSourceDirectives, o as resolveRuntimeBranch, st as hasTailwindGeneratedCss, tt as parseImportRequest, vt as getTailwindV4IncrementalGenerateCacheStats, z as stripTailwindSourceMediaFragments } from "./generator-
|
|
2
|
-
import { g as resolveTailwindV4EntriesFromCssCached, l as getRuntimeClassSetSignature, p as resolveViteSourceScanEntries } from "./tailwindcss-
|
|
1
|
+
import { B as stripUnmatchedTailwindSourceMediaCloseFragments, E as resolveTailwindcssOptions, F as removeTailwindV4GeneratedUserCssArtifacts, H as finalizeMiniProgramCss, I as removeTailwindV4GeneratorAtRules, J as hasTailwindApplyDirective, K as stripMiniProgramCssSpecificityPlaceholders, M as isCommentOnlyCss, P as removeMiniProgramHoverSelectors, Q as normalizeTailwindConfigDirectives, W as pruneMiniProgramGeneratedCss, X as hasTailwindRootDirectives, Z as hasTailwindSourceDirectives, ct as hasTailwindGeneratedCssMarkers, g as upsertTailwindV4CssSource, h as hasConfiguredTailwindV4CssRoots, i as normalizeWeappTailwindcssGeneratorOptions, kt as resolveSourceScanPath, nt as removeTailwindSourceDirectives, o as resolveRuntimeBranch, st as hasTailwindGeneratedCss, tt as parseImportRequest, vt as getTailwindV4IncrementalGenerateCacheStats, z as stripTailwindSourceMediaFragments } from "./generator-CEo920So.mjs";
|
|
2
|
+
import { g as resolveTailwindV4EntriesFromCssCached, l as getRuntimeClassSetSignature, p as resolveViteSourceScanEntries } from "./tailwindcss-xs704TRw.mjs";
|
|
3
3
|
import { r as getGroupedEntries } from "./utils-MVwpU07P.mjs";
|
|
4
4
|
import { b as md5Hash, c as _defineProperty, y as createDebug } from "./wxml-DdGdeqaH.mjs";
|
|
5
|
-
import { d as refreshTailwindRuntimeState, i as pluginName, l as createTailwindRuntimeReadyPromise, n as normalizeStyleHandlerMajorVersion, o as shouldSkipJsTransform, r as resolveStyleOptionsFromContext, t as getCompilerContext, u as ensureRuntimeClassSet } from "./context-
|
|
5
|
+
import { d as refreshTailwindRuntimeState, i as pluginName, l as createTailwindRuntimeReadyPromise, n as normalizeStyleHandlerMajorVersion, o as shouldSkipJsTransform, r as resolveStyleOptionsFromContext, t as getCompilerContext, u as ensureRuntimeClassSet } from "./context-BgGWVAmN.mjs";
|
|
6
6
|
import { getDefaultCssPreflight } from "./defaults.mjs";
|
|
7
|
-
import { A as
|
|
8
|
-
import {
|
|
7
|
+
import { A as collectRawSourceClassSelectors, C as scoreTailwindV4CssSourceFileMatch, D as hasMiniProgramTailwindV4PreflightReset, F as annotateCssSourceTrace, I as createCssSourceTraceCacheSignature, L as createCssTokenSourceMap, M as hasBundlerGeneratedCssMarker, O as isSourceStyleRequest, P as stripBundlerGeneratedCssMarkers, R as isCssSourceTraceEnabled, T as createCssSourceOrderAppend, a as isSourceCandidateRequest, b as isPureLocalCssImportWrapper, c as createBundleRuntimeClassSetManager, i as createSourceCandidateStore, k as stripRequestQuery, l as collectStrictEscapedRuntimeCandidates, m as resolveTaskConcurrency, n as emitHmrTiming, o as resolveSourceCandidateScanFiles, p as pushConcurrentTaskFactories, u as createEscapeFragments, w as removeGeneratedSelectorCompatCss, z as processCachedTask } from "./hmr-timing-1aS6--U7.mjs";
|
|
8
|
+
import { D as toAbsoluteOutputPath, E as resolveOutputSpecifier, F as resolveWebpackFrameworkProfile, N as webpackStyleInjectorDelegates, O as resolvePackageDir, a as createCandidateSignature, f as classifyBundleEntry, j as createBuiltinWebpackStyleInjectorPlugin, k as resolvePluginDisabledState, m as updateBundleBuildState, p as createBundleBuildState, r as createScopedGeneratorRuntime, t as createSourceCandidateScanSignature, w as generateTailwindV4Css, x as createRuntimeAffectingSourceSignature } from "./source-candidate-scan-signature-Cf7259PR.mjs";
|
|
9
9
|
import Module, { createRequire } from "node:module";
|
|
10
10
|
import fs from "node:fs";
|
|
11
11
|
import path from "node:path";
|
|
12
12
|
import process from "node:process";
|
|
13
|
-
import { filterExistingCssRules, postcss } from "@weapp-tailwindcss/postcss";
|
|
13
|
+
import { dedupeCoveredCssRules, filterExistingCssRules, mergeCoveredCssRuleDeclarations, postcss } from "@weapp-tailwindcss/postcss";
|
|
14
14
|
import { readFile, stat } from "node:fs/promises";
|
|
15
15
|
import micromatch from "micromatch";
|
|
16
16
|
import { MappingChars2String } from "@weapp-core/escape";
|
|
@@ -67,17 +67,27 @@ function resolveSingleActiveWebpackCssResource(assetResources, activeWebpackAsse
|
|
|
67
67
|
const activeAssetResourceMatches = [...assetResources ?? []].map((sourceFile) => path.resolve(sourceFile)).filter((sourceFile) => activeWebpackAssetResourceFiles.has(sourceFile)).sort();
|
|
68
68
|
return activeAssetResourceMatches.length === 1 ? activeAssetResourceMatches[0] : void 0;
|
|
69
69
|
}
|
|
70
|
-
function
|
|
70
|
+
function resolveWebpackCssModuleIdentifierResource(module) {
|
|
71
|
+
if (!module.type?.startsWith("css/") || typeof module.identifier !== "function") return;
|
|
72
|
+
const identifier = module.identifier();
|
|
73
|
+
const request = identifier.startsWith("css|") ? identifier.slice(4) : identifier;
|
|
74
|
+
const resourceWithMetadata = request.slice(request.lastIndexOf("!") + 1);
|
|
75
|
+
const metadataIndex = resourceWithMetadata.indexOf("|");
|
|
76
|
+
return metadataIndex === -1 ? resourceWithMetadata : resourceWithMetadata.slice(0, metadataIndex);
|
|
77
|
+
}
|
|
78
|
+
function createWebpackCssAssetResourceMapInternal(chunks, chunkGraph, cssMatcher, normalizeResource, onlyUnambiguousCssAssets) {
|
|
71
79
|
const resourcesByAsset = /* @__PURE__ */ new Map();
|
|
72
80
|
if (!chunkGraph?.getChunkModulesIterable) return resourcesByAsset;
|
|
73
81
|
const collectModuleResources = (module, resources, seen = /* @__PURE__ */ new Set()) => {
|
|
74
82
|
if (!module || seen.has(module)) return;
|
|
75
83
|
seen.add(module);
|
|
76
|
-
|
|
84
|
+
const candidates = [
|
|
77
85
|
module.resource,
|
|
78
86
|
module.request,
|
|
79
87
|
module.userRequest
|
|
80
|
-
]
|
|
88
|
+
];
|
|
89
|
+
if (onlyUnambiguousCssAssets) candidates.push(resolveWebpackCssModuleIdentifierResource(module));
|
|
90
|
+
for (const candidate of candidates) {
|
|
81
91
|
if (typeof candidate !== "string") continue;
|
|
82
92
|
const normalized = normalizeResource(candidate, module);
|
|
83
93
|
if (normalized) resources.add(normalized);
|
|
@@ -97,7 +107,7 @@ function createWebpackCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normal
|
|
|
97
107
|
};
|
|
98
108
|
for (const chunk of chunks) {
|
|
99
109
|
const cssFiles = toChunkFiles(chunk.files).filter((file) => cssMatcher(file));
|
|
100
|
-
if (cssFiles.length === 0) continue;
|
|
110
|
+
if (cssFiles.length === 0 || onlyUnambiguousCssAssets && cssFiles.length !== 1) continue;
|
|
101
111
|
const modules = chunkGraph.getChunkModulesIterable(chunk);
|
|
102
112
|
if (!modules) continue;
|
|
103
113
|
const cssResources = /* @__PURE__ */ new Set();
|
|
@@ -107,6 +117,12 @@ function createWebpackCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normal
|
|
|
107
117
|
}
|
|
108
118
|
return resourcesByAsset;
|
|
109
119
|
}
|
|
120
|
+
function createWebpackCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normalizeResource) {
|
|
121
|
+
return createWebpackCssAssetResourceMapInternal(chunks, chunkGraph, cssMatcher, normalizeResource, false);
|
|
122
|
+
}
|
|
123
|
+
function createWebpackDirectCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normalizeResource) {
|
|
124
|
+
return createWebpackCssAssetResourceMapInternal(chunks, chunkGraph, cssMatcher, normalizeResource, true);
|
|
125
|
+
}
|
|
110
126
|
function createAssetHashByChunkMap(chunks) {
|
|
111
127
|
const partsByFile = /* @__PURE__ */ new Map();
|
|
112
128
|
for (const chunk of chunks) {
|
|
@@ -309,8 +325,15 @@ function resolveWebpackGeneratorRawSource(rawSource, cssHandlerOptions) {
|
|
|
309
325
|
}
|
|
310
326
|
function shouldConsumeWebpackLoaderGeneratedCss(options) {
|
|
311
327
|
if (!options.shouldRegenerateExplicitTailwindV4CssSource) return true;
|
|
312
|
-
if (options.watchMode === true && options.loaderGeneratedClassSet && options.sourceCandidates &&
|
|
313
|
-
|
|
328
|
+
if (options.watchMode === true && options.loaderGeneratedClassSet && options.sourceCandidates && hasStaleRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates)) return false;
|
|
329
|
+
if (options.hasBundlerGeneratedCssMarker) return true;
|
|
330
|
+
if (options.watchMode === true && options.loaderGeneratedClassSet && options.sourceCandidates && hasMissingRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates)) return false;
|
|
331
|
+
return Boolean(options.allowMarkerlessRegistryMatch && options.loaderGeneratedClassSet && options.sourceCandidates && !hasMissingRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates) && !hasStaleRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates));
|
|
332
|
+
}
|
|
333
|
+
function hasDeferredWebpackGeneratedCss(source, generatedClassSets) {
|
|
334
|
+
const selectors = collectRawSourceClassSelectors(source);
|
|
335
|
+
for (const classSet of generatedClassSets) for (const candidate of classSet) if (selectors.has(candidate)) return true;
|
|
336
|
+
return false;
|
|
314
337
|
}
|
|
315
338
|
function hasUsableWebpackGeneratorCssSources(cssSources) {
|
|
316
339
|
return Array.isArray(cssSources) && cssSources.some((source) => typeof source?.css === "string" && source.css.length > 0);
|
|
@@ -399,7 +422,8 @@ function isWebpackKeyframesRule(rule) {
|
|
|
399
422
|
}
|
|
400
423
|
function collectWebpackBareSelectorUserCss(source) {
|
|
401
424
|
try {
|
|
402
|
-
const
|
|
425
|
+
const normalizedSource = removeTailwindSourceDirectives(stripTailwindSourceMediaFragments(removeTailwindV4GeneratorAtRules(source)), { importFallback: true });
|
|
426
|
+
const root = postcss.parse(normalizedSource);
|
|
403
427
|
let changed = false;
|
|
404
428
|
root.walkAtRules((rule) => {
|
|
405
429
|
if (rule.name === "import" || rule.name === "font-face" || rule.name.endsWith("keyframes")) {
|
|
@@ -419,7 +443,7 @@ function collectWebpackBareSelectorUserCss(source) {
|
|
|
419
443
|
changed = true;
|
|
420
444
|
}
|
|
421
445
|
});
|
|
422
|
-
return changed ? root.toString() :
|
|
446
|
+
return changed ? root.toString() : normalizedSource;
|
|
423
447
|
} catch {
|
|
424
448
|
return "";
|
|
425
449
|
}
|
|
@@ -699,7 +723,9 @@ function createWebpackGeneratorUserCssSourceAppend(...sources) {
|
|
|
699
723
|
let css = "";
|
|
700
724
|
const usedParts = [];
|
|
701
725
|
for (const source of parts) {
|
|
702
|
-
const
|
|
726
|
+
const merged = css.trim().length > 0 ? mergeCoveredCssRuleDeclarations(css, source.css) : void 0;
|
|
727
|
+
if (merged?.changed) css = merged.baseCss;
|
|
728
|
+
const nextCss = css.trim().length > 0 ? filterExistingCssRules(css, merged?.css ?? source.css) : source.css;
|
|
703
729
|
if (!(nextCss.trim().length > 0)) continue;
|
|
704
730
|
css = createCssSourceOrderAppend(css, nextCss);
|
|
705
731
|
usedParts.push(source);
|
|
@@ -877,7 +903,7 @@ function finalizeWebpackCssAssetSource(source, compilerOptions, isWebGeneratorTa
|
|
|
877
903
|
function finalizeWebpackCssAssetOutputSource(source, compilerOptions, isWebGeneratorTarget) {
|
|
878
904
|
if (isWebGeneratorTarget) return source;
|
|
879
905
|
const styleOptions = resolveStyleOptionsFromContext(compilerOptions);
|
|
880
|
-
return stripMiniProgramCssSpecificityPlaceholders(removeMiniProgramHoverSelectors(dedupeMiniProgramPreflightSelectorRules(source), styleOptions.cssRemoveHoverPseudoClass));
|
|
906
|
+
return stripMiniProgramCssSpecificityPlaceholders(removeMiniProgramHoverSelectors(dedupeCoveredCssRules(dedupeMiniProgramPreflightSelectorRules(source)), styleOptions.cssRemoveHoverPseudoClass));
|
|
881
907
|
}
|
|
882
908
|
function collectWebpackJsRuntimeCandidatesFromAssets(options) {
|
|
883
909
|
if (options.isWebGeneratorTarget) return;
|
|
@@ -968,7 +994,7 @@ function collectMainImportedCssFiles(compilation, cssAssetFiles, cssMatcher, isM
|
|
|
968
994
|
return files;
|
|
969
995
|
}
|
|
970
996
|
function createWebpackCssSourceResolvers(options) {
|
|
971
|
-
const { activeWebpackAssetResourceFiles, appType, compilerOptions, compilation, cssAssetFiles, cssAssetResources, cssHandlerOptionsCache, cssSources, cssUserHandlerOptionsCache, groupedCssEntriesLength, singleCssAssetFile, isWebGeneratorTarget, outputDir, runtimeState } = options;
|
|
997
|
+
const { activeWebpackAssetResourceFiles, appType, compilerOptions, compilation, cssAssetFiles, cssAssetResources, directCssAssetResources, cssHandlerOptionsCache, cssSources, cssUserHandlerOptionsCache, groupedCssEntriesLength, singleCssAssetFile, isWebGeneratorTarget, outputDir, runtimeState } = options;
|
|
972
998
|
const hasConfiguredTailwindV4SourceRoots = () => {
|
|
973
999
|
const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
|
|
974
1000
|
return (tailwindOptions?.v4?.cssEntries?.length ?? 0) > 0 || (tailwindOptions?.v4?.cssSources?.length ?? 0) > 0;
|
|
@@ -985,7 +1011,7 @@ function createWebpackCssSourceResolvers(options) {
|
|
|
985
1011
|
cwd: compilerOptions.tailwindcssBasedir
|
|
986
1012
|
});
|
|
987
1013
|
const isConfiguredMainCssEntryFile = (sourceFile) => configuredMainCssEntryFiles.some((entry) => path.resolve(entry) === path.resolve(sourceFile));
|
|
988
|
-
const isCssSourceAllowedForOutput = (file, sourceFile) => !isConfiguredMainCssEntryFile(sourceFile) || scoreCssSourceOutputMatch(file, sourceFile) > 0;
|
|
1014
|
+
const isCssSourceAllowedForOutput = (file, sourceFile) => !isConfiguredMainCssEntryFile(sourceFile) || directCssAssetResources.get(file)?.has(sourceFile) === true || scoreCssSourceOutputMatch(file, sourceFile) > 0;
|
|
989
1015
|
const inferredMainCssFiles = new Set([...inferWebpackMainCssFiles(compilation.chunks, compilerOptions.cssMatcher, {
|
|
990
1016
|
mainSourceFiles: new Set(configuredMainCssEntryFiles),
|
|
991
1017
|
resourcesByAsset: cssAssetResources
|
|
@@ -1026,6 +1052,12 @@ function createWebpackCssSourceResolvers(options) {
|
|
|
1026
1052
|
return resolveConfiguredMainCssSourceFile(file);
|
|
1027
1053
|
}
|
|
1028
1054
|
const resourceMatches = [...assetResources ?? []].filter((sourceFile) => cssSources.has(sourceFile)).filter((sourceFile) => isCssSourceAllowedForOutput(file, sourceFile)).sort();
|
|
1055
|
+
const configuredResourceMatches = resourceMatches.filter((sourceFile) => configuredCssEntryFiles.some((entry) => path.resolve(entry) === path.resolve(sourceFile)));
|
|
1056
|
+
if (configuredResourceMatches.length === 1) {
|
|
1057
|
+
const sourceFile = configuredResourceMatches[0];
|
|
1058
|
+
activeWebpackCssSourceFiles.add(sourceFile);
|
|
1059
|
+
return sourceFile;
|
|
1060
|
+
}
|
|
1029
1061
|
if (resourceMatches.length === 1) {
|
|
1030
1062
|
const sourceFile = resourceMatches[0];
|
|
1031
1063
|
activeWebpackCssSourceFiles.add(sourceFile);
|
|
@@ -1511,7 +1543,11 @@ async function refreshWebpackSourceCandidates(options) {
|
|
|
1511
1543
|
if (!sourceScan || !sourceScan.explicit && !sourceScan.entries?.length && !sourceScan.inlineCandidates) return;
|
|
1512
1544
|
return options.scanCache.resolve({
|
|
1513
1545
|
changedFiles: options.watchChangedFiles,
|
|
1514
|
-
collector: createSourceCandidateStore({
|
|
1546
|
+
collector: createSourceCandidateStore({
|
|
1547
|
+
bareArbitraryValues: options.compilerOptions.arbitraryValues?.bareArbitraryValues,
|
|
1548
|
+
customAttributesEntities: options.compilerOptions.customAttributesEntities,
|
|
1549
|
+
disabledDefaultTemplateHandler: options.compilerOptions.disabledDefaultTemplateHandler
|
|
1550
|
+
}),
|
|
1515
1551
|
outDir: options.outputDir,
|
|
1516
1552
|
root,
|
|
1517
1553
|
sourceScan,
|
|
@@ -1572,6 +1608,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1572
1608
|
appType,
|
|
1573
1609
|
cssMatcher: compilerOptions.cssMatcher
|
|
1574
1610
|
}));
|
|
1611
|
+
const directCssAssetResources = createWebpackDirectCssAssetResourceMap(compilation.chunks, compilation.chunkGraph, compilerOptions.cssMatcher, (resource, issuer) => resolveWebpackCssAssetModuleResource(resource, issuer, {
|
|
1612
|
+
appType,
|
|
1613
|
+
cssMatcher: compilerOptions.cssMatcher
|
|
1614
|
+
}));
|
|
1575
1615
|
const watchChangedFiles = new Set([...getWatchChangedFiles?.() ?? []].map((file) => path.resolve(file)));
|
|
1576
1616
|
const taskConcurrency = watchMode ? resolveTaskConcurrency(1) : void 0;
|
|
1577
1617
|
const activeProcessCacheKeys = /* @__PURE__ */ new Set();
|
|
@@ -1592,6 +1632,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1592
1632
|
compilation,
|
|
1593
1633
|
cssAssetFiles: entries.map(([file]) => file),
|
|
1594
1634
|
cssAssetResources,
|
|
1635
|
+
directCssAssetResources,
|
|
1595
1636
|
cssHandlerOptionsCache,
|
|
1596
1637
|
cssSources,
|
|
1597
1638
|
cssUserHandlerOptionsCache,
|
|
@@ -1892,8 +1933,16 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1892
1933
|
},
|
|
1893
1934
|
transform: async () => {
|
|
1894
1935
|
const source = readCurrentProcessedRawSource();
|
|
1895
|
-
const
|
|
1896
|
-
const
|
|
1936
|
+
const missingProcessedLoaderGeneratedCss = isWebGeneratorTarget && processedLoaderGeneratedCss ? filterExistingCssRules(source, stripBundlerGeneratedCssMarkers(processedLoaderGeneratedCss.css)) : "";
|
|
1937
|
+
const sourceWithLoaderGeneratedCss = missingProcessedLoaderGeneratedCss.trim().length === 0 ? source : createWebpackGeneratorUserCssSourceAppend({
|
|
1938
|
+
css: source,
|
|
1939
|
+
processed: true
|
|
1940
|
+
}, {
|
|
1941
|
+
css: missingProcessedLoaderGeneratedCss,
|
|
1942
|
+
processed: true
|
|
1943
|
+
}).css;
|
|
1944
|
+
const processedBareSelectorSourceCss = processedSourceCss ?? (hasTailwindGeneratedAssetCss ? removeWebpackTailwindGeneratedAssetCss(sourceWithLoaderGeneratedCss) : void 0);
|
|
1945
|
+
const handledCss = hasTailwindGeneratedAssetCss && (!hasGeneratedCssMarker || !isWebGeneratorTarget && hasDeferredWebpackGeneratedCss(source, [...generatedCssSources.values()].map((item) => item.classSet))) ? isWebGeneratorTarget ? sourceWithLoaderGeneratedCss : (await compilerOptions.styleHandler(sourceWithLoaderGeneratedCss, cssHandlerOptionsForProcessedAsset)).css : sourceWithLoaderGeneratedCss;
|
|
1897
1946
|
const nextCss = stripTrailingLineWhitespace(finalizeCssAssetSource(handledCss, {
|
|
1898
1947
|
cssPreflight: cssHandlerOptionsForProcessedAsset.isMainChunk,
|
|
1899
1948
|
generatedCss: hasGeneratedCssMarker || hasTailwindGeneratedAssetCss
|
|
@@ -1986,10 +2035,11 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1986
2035
|
const isConfiguredMainCssSource = sourceFile !== void 0 && configuredMainCssEntryFiles.some((entry) => path.resolve(entry) === path.resolve(sourceFile));
|
|
1987
2036
|
const sourceCssHasTailwindRoot = sourceCss !== void 0 && hasTailwindRootDirectives(sourceCss, { importFallback: true });
|
|
1988
2037
|
const shouldPreserveExistingPreflight = cssHandlerOptions.isMainChunk || !isConfiguredMainCssSource && (isConfiguredCssSource || sourceCssHasTailwindRoot);
|
|
1989
|
-
const loaderGeneratedCss = sourceFile
|
|
2038
|
+
const loaderGeneratedCss = sourceFile ? generatedCssSources.get(path.resolve(sourceFile)) : void 0;
|
|
1990
2039
|
const shouldRegenerateExplicitTailwindV4CssSource = sourceCss !== void 0 && (hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config"));
|
|
1991
2040
|
const explicitTailwindV4SourceCandidates = shouldRegenerateExplicitTailwindV4CssSource && sourceCss && sourceFile && webpackSourceCandidates?.getSourceCandidatesForEntries ? await resolveTailwindV4EntriesFromCssCached(sourceCss, path.dirname(sourceFile)).then((resolved) => resolved?.entries ? webpackSourceCandidates.getSourceCandidatesForEntries(resolved.entries) : void 0) : void 0;
|
|
1992
2041
|
if (loaderGeneratedCss && shouldConsumeWebpackLoaderGeneratedCss({
|
|
2042
|
+
allowMarkerlessRegistryMatch: configuredCssEntryFiles.length === 1,
|
|
1993
2043
|
hasBundlerGeneratedCssMarker: hasBundlerGeneratedCssMarker(currentRawSource),
|
|
1994
2044
|
loaderGeneratedClassSet: loaderGeneratedCss.classSet,
|
|
1995
2045
|
sourceCandidates: explicitTailwindV4SourceCandidates,
|
|
@@ -2022,7 +2072,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
2022
2072
|
css: currentAssetUserCss,
|
|
2023
2073
|
processed: true
|
|
2024
2074
|
}).css;
|
|
2025
|
-
const
|
|
2075
|
+
const handledLoaderCss = isWebGeneratorTarget ? mergedLoaderCss : (await compilerOptions.styleHandler(mergedLoaderCss, cssHandlerOptions)).css;
|
|
2076
|
+
const finalizedLoaderCss = finalizeCssAssetSource(handledLoaderCss, {
|
|
2026
2077
|
cssPreflight: cssHandlerOptions.isMainChunk,
|
|
2027
2078
|
generatedCss: true,
|
|
2028
2079
|
preserveExistingPreflight: shouldPreserveExistingPreflight
|
|
@@ -2040,7 +2091,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
2040
2091
|
processed: source.processed
|
|
2041
2092
|
};
|
|
2042
2093
|
}));
|
|
2043
|
-
const
|
|
2094
|
+
const handledLoaderSourceBareUserCss = loaderSourceBareUserCss === void 0 ? "" : loaderSourceBareUserCss.processed ? loaderSourceBareUserCss.css : (await compilerOptions.styleHandler(loaderSourceBareUserCss.css, cssHandlerOptions)).css;
|
|
2095
|
+
const finalizedLoaderSourceBareUserCss = handledLoaderSourceBareUserCss.trim().length === 0 ? "" : finalizeCssAssetSource(handledLoaderSourceBareUserCss, {
|
|
2044
2096
|
cssPreflight: false,
|
|
2045
2097
|
generatedCss: false
|
|
2046
2098
|
});
|
|
@@ -2174,7 +2226,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
2174
2226
|
processed: source.processed
|
|
2175
2227
|
};
|
|
2176
2228
|
}));
|
|
2177
|
-
const
|
|
2229
|
+
const handledSourceBareUserCss = sourceBareUserCss === void 0 ? "" : sourceBareUserCss.processed ? sourceBareUserCss.css : (await compilerOptions.styleHandler(sourceBareUserCss.css, cssHandlerOptions)).css;
|
|
2230
|
+
const finalizedSourceBareUserCss = handledSourceBareUserCss.trim().length === 0 ? "" : finalizeCssAssetSource(handledSourceBareUserCss, {
|
|
2178
2231
|
cssPreflight: false,
|
|
2179
2232
|
generatedCss: false
|
|
2180
2233
|
});
|
|
@@ -2276,6 +2329,30 @@ function installTailwindcssCssRedirect(pkgDir) {
|
|
|
2276
2329
|
const localRequire = createRequire(import.meta.url);
|
|
2277
2330
|
const MPX_STYLE_RESOURCE_QUERY_RE = /(?:^|[?&])type=styles(?:&|$)/;
|
|
2278
2331
|
const MPX_WEBPACK_PLUGIN_PACKAGE_RE = /@mpxjs[\\/]webpack-plugin[\\/]package\.json$/;
|
|
2332
|
+
const MPX_WEBPACK_PLUGIN_LIB_RE = /^(.*[\\/]@mpxjs[\\/]webpack-plugin)[\\/]lib[\\/]/;
|
|
2333
|
+
const MPX_WEBPACK_PLUGIN_REQUEST_RE = /@mpxjs\/webpack-plugin\/([^!?]+)/g;
|
|
2334
|
+
function findMpxWebpackPluginDirFromRules(rules) {
|
|
2335
|
+
const visit = (value) => {
|
|
2336
|
+
if (typeof value === "string") return value.match(MPX_WEBPACK_PLUGIN_LIB_RE)?.[1];
|
|
2337
|
+
if (Array.isArray(value)) {
|
|
2338
|
+
for (const item of value) {
|
|
2339
|
+
const result = visit(item);
|
|
2340
|
+
if (result) return result;
|
|
2341
|
+
}
|
|
2342
|
+
return;
|
|
2343
|
+
}
|
|
2344
|
+
if (value && typeof value === "object") for (const key of [
|
|
2345
|
+
"loader",
|
|
2346
|
+
"use",
|
|
2347
|
+
"rules",
|
|
2348
|
+
"oneOf"
|
|
2349
|
+
]) {
|
|
2350
|
+
const result = visit(value[key]);
|
|
2351
|
+
if (result) return result;
|
|
2352
|
+
}
|
|
2353
|
+
};
|
|
2354
|
+
return visit(rules);
|
|
2355
|
+
}
|
|
2279
2356
|
function isMpxStyleResourceQuery(query) {
|
|
2280
2357
|
if (typeof query !== "string") return false;
|
|
2281
2358
|
return MPX_STYLE_RESOURCE_QUERY_RE.test(query);
|
|
@@ -2284,6 +2361,12 @@ function getTailwindcssCssEntry(pkgDir) {
|
|
|
2284
2361
|
return path.join(pkgDir, "index.css");
|
|
2285
2362
|
}
|
|
2286
2363
|
function resolveMpxWebpackPluginDir(compiler) {
|
|
2364
|
+
const rulePluginDir = findMpxWebpackPluginDirFromRules([
|
|
2365
|
+
compiler?._module?.loaders,
|
|
2366
|
+
compiler?.loaders,
|
|
2367
|
+
compiler?.options?.module?.rules
|
|
2368
|
+
]);
|
|
2369
|
+
if (rulePluginDir) return rulePluginDir;
|
|
2287
2370
|
const candidates = [
|
|
2288
2371
|
compiler?.context,
|
|
2289
2372
|
compiler?.options?.context,
|
|
@@ -2301,6 +2384,45 @@ function resolveMpxWebpackPluginDir(compiler) {
|
|
|
2301
2384
|
return;
|
|
2302
2385
|
}
|
|
2303
2386
|
}
|
|
2387
|
+
function rewriteMpxWebpackPluginRequests(request, mpxWebpackPluginDir, pathImpl = path) {
|
|
2388
|
+
return request.replace(MPX_WEBPACK_PLUGIN_REQUEST_RE, (_full, subpath) => {
|
|
2389
|
+
return pathImpl.join(mpxWebpackPluginDir, ...subpath.split("/"));
|
|
2390
|
+
});
|
|
2391
|
+
}
|
|
2392
|
+
function patchMpxWebpackPluginRequests(compiler, mpxWebpackPluginDir) {
|
|
2393
|
+
if (!mpxWebpackPluginDir || !compiler) return false;
|
|
2394
|
+
const pluginName = "weapp-tailwindcss-mpx-loader-resolve";
|
|
2395
|
+
const patchedCompilers = /* @__PURE__ */ new WeakSet();
|
|
2396
|
+
const patchedLoaderResolvers = /* @__PURE__ */ new WeakSet();
|
|
2397
|
+
const patchedResolverFactories = /* @__PURE__ */ new WeakSet();
|
|
2398
|
+
const install = (targetCompiler) => {
|
|
2399
|
+
if (!targetCompiler || typeof targetCompiler !== "object" || patchedCompilers.has(targetCompiler)) return;
|
|
2400
|
+
patchedCompilers.add(targetCompiler);
|
|
2401
|
+
ensureResolveLoaderAlias(targetCompiler, mpxWebpackPluginDir);
|
|
2402
|
+
const resolverFactory = targetCompiler.resolverFactory;
|
|
2403
|
+
if (resolverFactory && typeof resolverFactory === "object" && !patchedResolverFactories.has(resolverFactory)) {
|
|
2404
|
+
patchedResolverFactories.add(resolverFactory);
|
|
2405
|
+
installMpxResolveLoaderAlias(targetCompiler, mpxWebpackPluginDir);
|
|
2406
|
+
}
|
|
2407
|
+
targetCompiler.hooks?.normalModuleFactory?.tap?.(pluginName, (normalModuleFactory) => {
|
|
2408
|
+
const loaderResolver = normalModuleFactory.getResolver?.("loader");
|
|
2409
|
+
if (loaderResolver && typeof loaderResolver === "object" && !patchedLoaderResolvers.has(loaderResolver)) {
|
|
2410
|
+
patchedLoaderResolvers.add(loaderResolver);
|
|
2411
|
+
patchMpxLoaderResolver(loaderResolver, mpxWebpackPluginDir);
|
|
2412
|
+
}
|
|
2413
|
+
normalModuleFactory.hooks.beforeResolve.tap(pluginName, (resolveData) => {
|
|
2414
|
+
if (typeof resolveData?.request === "string") resolveData.request = rewriteMpxWebpackPluginRequests(resolveData.request, mpxWebpackPluginDir);
|
|
2415
|
+
});
|
|
2416
|
+
});
|
|
2417
|
+
targetCompiler.hooks?.compilation?.tap?.(pluginName, (compilation) => {
|
|
2418
|
+
compilation.hooks?.childCompiler?.tap?.(pluginName, (childCompiler) => {
|
|
2419
|
+
install(childCompiler);
|
|
2420
|
+
});
|
|
2421
|
+
});
|
|
2422
|
+
};
|
|
2423
|
+
install(compiler);
|
|
2424
|
+
return true;
|
|
2425
|
+
}
|
|
2304
2426
|
function isMpxWebpackPluginRequest(request) {
|
|
2305
2427
|
return request === "@mpxjs/webpack-plugin" || Boolean(request?.startsWith("@mpxjs/webpack-plugin/"));
|
|
2306
2428
|
}
|
|
@@ -2339,27 +2461,39 @@ function ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir) {
|
|
|
2339
2461
|
compiler.options.resolveLoader.alias = alias;
|
|
2340
2462
|
addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
|
|
2341
2463
|
}
|
|
2342
|
-
function
|
|
2343
|
-
const
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
const
|
|
2350
|
-
|
|
2351
|
-
return
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2464
|
+
function installMpxResolveLoaderAlias(compiler, mpxWebpackPluginDir) {
|
|
2465
|
+
const resolveOptionsHook = compiler?.resolverFactory?.hooks?.resolveOptions?.for?.("loader");
|
|
2466
|
+
if (!resolveOptionsHook?.tap) return;
|
|
2467
|
+
resolveOptionsHook.tap({
|
|
2468
|
+
name: "weapp-tailwindcss-mpx-loader-resolve",
|
|
2469
|
+
stage: 100
|
|
2470
|
+
}, (resolveOptions) => {
|
|
2471
|
+
const alias = Array.isArray(resolveOptions.alias) ? [...resolveOptions.alias] : { ...resolveOptions.alias };
|
|
2472
|
+
addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
|
|
2473
|
+
return {
|
|
2474
|
+
...resolveOptions,
|
|
2475
|
+
alias
|
|
2476
|
+
};
|
|
2477
|
+
});
|
|
2478
|
+
}
|
|
2479
|
+
function patchMpxLoaderResolver(resolver, mpxWebpackPluginDir) {
|
|
2480
|
+
const originalResolve = resolver?.resolve;
|
|
2481
|
+
if (typeof originalResolve !== "function" || originalResolve.__weappTwPatched) return;
|
|
2482
|
+
const wrappedResolve = function(...args) {
|
|
2483
|
+
const requestIndex = typeof args[0] === "string" ? 1 : 2;
|
|
2484
|
+
const request = args[requestIndex];
|
|
2485
|
+
if (typeof request === "string" && isMpxWebpackPluginRequest(request)) args[requestIndex] = resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir);
|
|
2486
|
+
return originalResolve.apply(this, args);
|
|
2487
|
+
};
|
|
2488
|
+
wrappedResolve.__weappTwPatched = true;
|
|
2489
|
+
wrappedResolve.__weappTwOriginal = originalResolve;
|
|
2490
|
+
resolver.resolve = wrappedResolve;
|
|
2356
2491
|
}
|
|
2357
|
-
function patchMpxWebpackPluginNormalizeLib(
|
|
2492
|
+
function patchMpxWebpackPluginNormalizeLib(_compiler, mpxWebpackPluginDir) {
|
|
2358
2493
|
if (!mpxWebpackPluginDir) return false;
|
|
2359
|
-
const projectRequire = resolveMpxWebpackPluginRequire(compiler);
|
|
2360
2494
|
let normalize;
|
|
2361
2495
|
try {
|
|
2362
|
-
normalize =
|
|
2496
|
+
normalize = createRequire(path.join(mpxWebpackPluginDir, "package.json"))(path.join(mpxWebpackPluginDir, "lib/utils/normalize"));
|
|
2363
2497
|
} catch {
|
|
2364
2498
|
return false;
|
|
2365
2499
|
}
|
|
@@ -2377,6 +2511,7 @@ function ensureMpxTailwindcssAliases(compiler, pkgDir) {
|
|
|
2377
2511
|
compiler.options.resolve = compiler.options.resolve || {};
|
|
2378
2512
|
const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(compiler);
|
|
2379
2513
|
patchMpxWebpackPluginNormalizeLib(compiler, mpxWebpackPluginDir);
|
|
2514
|
+
patchMpxWebpackPluginRequests(compiler, mpxWebpackPluginDir);
|
|
2380
2515
|
if (mpxWebpackPluginDir) ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir);
|
|
2381
2516
|
const alias = compiler.options.resolve.alias ?? {};
|
|
2382
2517
|
compiler.options.resolve.alias = alias;
|
|
@@ -2395,19 +2530,29 @@ function ensureMpxTailwindcssAliases(compiler, pkgDir) {
|
|
|
2395
2530
|
return tailwindcssCssEntry;
|
|
2396
2531
|
}
|
|
2397
2532
|
function patchMpxLoaderResolve(loaderContext, pkgDir, enabled) {
|
|
2398
|
-
if (!enabled
|
|
2399
|
-
const originalResolve = loaderContext.resolve;
|
|
2400
|
-
if (originalResolve.__weappTwPatched) return;
|
|
2533
|
+
if (!enabled) return;
|
|
2401
2534
|
const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
|
|
2402
2535
|
const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(loaderContext);
|
|
2403
|
-
const
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2536
|
+
const originalResolve = loaderContext.resolve;
|
|
2537
|
+
if (typeof originalResolve === "function" && !originalResolve.__weappTwPatched) {
|
|
2538
|
+
const wrappedResolve = function(context, request, callback) {
|
|
2539
|
+
if (request === "tailwindcss" || request === "tailwindcss$") return callback(null, tailwindcssCssEntry);
|
|
2540
|
+
if (request?.startsWith("tailwindcss/")) return callback(null, path.join(pkgDir, request.slice(12)));
|
|
2541
|
+
if (mpxWebpackPluginDir && isMpxWebpackPluginRequest(request)) return callback(null, resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir));
|
|
2542
|
+
return originalResolve.call(this, context, request, callback);
|
|
2543
|
+
};
|
|
2544
|
+
wrappedResolve.__weappTwPatched = true;
|
|
2545
|
+
loaderContext.resolve = wrappedResolve;
|
|
2546
|
+
}
|
|
2547
|
+
const originalImportModule = loaderContext.importModule;
|
|
2548
|
+
if (mpxWebpackPluginDir && typeof originalImportModule === "function" && !originalImportModule.__weappTwPatched) {
|
|
2549
|
+
const wrappedImportModule = function(request, ...args) {
|
|
2550
|
+
const resolvedRequest = typeof request === "string" ? rewriteMpxWebpackPluginRequests(request, mpxWebpackPluginDir) : request;
|
|
2551
|
+
return originalImportModule.call(this, resolvedRequest, ...args);
|
|
2552
|
+
};
|
|
2553
|
+
wrappedImportModule.__weappTwPatched = true;
|
|
2554
|
+
loaderContext.importModule = wrappedImportModule;
|
|
2555
|
+
}
|
|
2411
2556
|
}
|
|
2412
2557
|
function setupMpxTailwindcssRedirect(pkgDir, enabled) {
|
|
2413
2558
|
if (enabled) installTailwindcssCssRedirect(pkgDir);
|
|
@@ -2492,11 +2637,14 @@ function setupWebpackV5Loaders(options) {
|
|
|
2492
2637
|
if (shouldRewriteCssImports && mpxCssImportRewrite) ensureMpxTailwindcssAliases(compiler, weappTailwindcssPackageDir);
|
|
2493
2638
|
const runtimeClassSetLoader = runtimeLoaderPath ?? path.resolve(__dirname, "./weapp-tw-runtime-classset-loader.js");
|
|
2494
2639
|
const shouldInjectRuntimeClassSetLoader = !generatorBranch.isWeb;
|
|
2495
|
-
const
|
|
2640
|
+
const shouldInjectCssGenerationLoader = generatorOptions.enabled && runtimeState.tailwindRuntime.majorVersion === 4 && (generatorTarget === "web" || generatorTarget === "weapp");
|
|
2641
|
+
const shouldInjectCssImportRewriteLoader = shouldRewriteCssImports || shouldInjectCssGenerationLoader;
|
|
2642
|
+
const runtimeCssGenerationLoader = shouldInjectCssGenerationLoader ? path.resolve(__dirname, "./weapp-tw-css-generation-loader.js") : void 0;
|
|
2496
2643
|
const runtimeCssImportRewriteLoader = shouldInjectCssImportRewriteLoader ? path.resolve(__dirname, "./weapp-tw-css-import-rewrite-loader.js") : void 0;
|
|
2497
2644
|
const runtimeClassSetLoaderExists = fs.existsSync(runtimeClassSetLoader);
|
|
2645
|
+
const runtimeCssGenerationLoaderExists = runtimeCssGenerationLoader ? fs.existsSync(runtimeCssGenerationLoader) : false;
|
|
2498
2646
|
const runtimeCssImportRewriteLoaderExists = runtimeCssImportRewriteLoader ? fs.existsSync(runtimeCssImportRewriteLoader) : false;
|
|
2499
|
-
const runtimeLoaderRewriteOptions = shouldInjectCssImportRewriteLoader ? {
|
|
2647
|
+
const runtimeLoaderRewriteOptions = shouldInjectCssImportRewriteLoader || shouldInjectCssGenerationLoader ? {
|
|
2500
2648
|
pkgDir: weappTailwindcssPackageDir,
|
|
2501
2649
|
compilerOptions,
|
|
2502
2650
|
runtimeState,
|
|
@@ -2521,7 +2669,11 @@ function setupWebpackV5Loaders(options) {
|
|
|
2521
2669
|
compiler.hooks.watchClose?.tap?.(pluginName, cleanupWebpackLoaderRuntime);
|
|
2522
2670
|
compiler.hooks.shutdown?.tap?.(pluginName, cleanupWebpackLoaderRuntime);
|
|
2523
2671
|
const { findRewriteAnchor, findClassSetAnchor } = loaderAnchorFinders;
|
|
2524
|
-
const cssImportRewriteLoaderOptions = runtimeLoaderRewriteOptions ? {
|
|
2672
|
+
const cssImportRewriteLoaderOptions = runtimeLoaderRewriteOptions && shouldInjectCssImportRewriteLoader ? {
|
|
2673
|
+
generateCss: false,
|
|
2674
|
+
tailwindcssImportRewriteRuntimeKey: runtimeRegistryKey
|
|
2675
|
+
} : void 0;
|
|
2676
|
+
const cssGenerationLoaderOptions = runtimeLoaderRewriteOptions && shouldInjectCssGenerationLoader ? { tailwindcssImportRewriteRuntimeKey: runtimeRegistryKey } : void 0;
|
|
2525
2677
|
if (runtimeCssImportRewriteLoader && shouldRewriteCssImports && cssImportRewriteLoaderOptions && mpxCssImportRewrite) injectMpxCssRewritePreRules(compiler, runtimeCssImportRewriteLoader, cssImportRewriteLoaderOptions);
|
|
2526
2678
|
const createRuntimeClassSetLoaderEntry = () => ({
|
|
2527
2679
|
loader: runtimeClassSetLoader,
|
|
@@ -2538,10 +2690,22 @@ function setupWebpackV5Loaders(options) {
|
|
|
2538
2690
|
type: null
|
|
2539
2691
|
};
|
|
2540
2692
|
};
|
|
2693
|
+
const createCssGenerationLoaderEntry = () => {
|
|
2694
|
+
if (!runtimeCssGenerationLoader || !cssGenerationLoaderOptions) return null;
|
|
2695
|
+
return {
|
|
2696
|
+
loader: runtimeCssGenerationLoader,
|
|
2697
|
+
options: cssGenerationLoaderOptions,
|
|
2698
|
+
ident: null,
|
|
2699
|
+
type: null
|
|
2700
|
+
};
|
|
2701
|
+
};
|
|
2541
2702
|
const { NormalModule } = compiler.webpack;
|
|
2542
2703
|
compiler.hooks.compilation.tap(pluginName, (compilation) => {
|
|
2543
|
-
NormalModule.getCompilationHooks(compilation).loader.tap(
|
|
2544
|
-
|
|
2704
|
+
NormalModule.getCompilationHooks(compilation).loader.tap({
|
|
2705
|
+
name: pluginName,
|
|
2706
|
+
stage: 100
|
|
2707
|
+
}, (_loaderContext, module) => {
|
|
2708
|
+
if (!(runtimeClassSetLoaderExists || runtimeCssGenerationLoaderExists || runtimeCssImportRewriteLoaderExists)) return;
|
|
2545
2709
|
patchMpxLoaderResolve(_loaderContext, weappTailwindcssPackageDir, shouldRewriteCssImports && mpxCssImportRewrite);
|
|
2546
2710
|
const loaderEntries = module.loaders || [];
|
|
2547
2711
|
let rewriteAnchorIdx = findRewriteAnchor(loaderEntries);
|
|
@@ -2561,6 +2725,12 @@ function setupWebpackV5Loaders(options) {
|
|
|
2561
2725
|
if (position === "after") loaderEntries.push(entry);
|
|
2562
2726
|
else loaderEntries.unshift(entry);
|
|
2563
2727
|
};
|
|
2728
|
+
if (cssGenerationLoaderOptions && runtimeCssGenerationLoaderExists && runtimeCssGenerationLoader && isCssModule && !hasLoaderEntry(loaderEntries, runtimeCssGenerationLoader)) {
|
|
2729
|
+
const generationLoaderEntry = createCssGenerationLoaderEntry();
|
|
2730
|
+
const anchorIndex = findRewriteAnchor(loaderEntries);
|
|
2731
|
+
if (generationLoaderEntry) if (anchorIndex === -1) anchorlessInsert(generationLoaderEntry, "after");
|
|
2732
|
+
else loaderEntries.splice(anchorIndex + 1, 0, generationLoaderEntry);
|
|
2733
|
+
}
|
|
2564
2734
|
if (cssImportRewriteLoaderOptions && runtimeCssImportRewriteLoaderExists && runtimeCssImportRewriteLoader && isCssModule) {
|
|
2565
2735
|
const existingIndex = loaderEntries.findIndex((entry) => entry.loader?.includes?.(runtimeCssImportRewriteLoader));
|
|
2566
2736
|
const rewriteLoaderEntry = existingIndex !== -1 ? {
|