weapp-tailwindcss 5.1.14 → 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/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 +1 -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 +5 -0
- package/dist/bundlers/vite/serve-css-generation.d.ts +3 -2
- package/dist/bundlers/vite/shared/create-framework-plugins.d.ts +1 -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-BL8Gy71H.mjs → context-BgGWVAmN.mjs} +2 -2
- package/dist/core.mjs +1 -1
- package/dist/css-macro.mjs +1 -1
- package/dist/{generator-B59OA64h.mjs → generator-CEo920So.mjs} +1 -1
- package/dist/generator.mjs +1 -1
- package/dist/{gulp-C1Q3LRzg.js → gulp-3m1dAiig.js} +84 -50
- package/dist/{gulp-DUYWxmZC.mjs → gulp-DP71z1jG.mjs} +87 -53
- package/dist/gulp.js +1 -1
- package/dist/gulp.mjs +1 -1
- package/dist/{hmr-timing-C3ed5vCx.mjs → hmr-timing-1aS6--U7.mjs} +170 -44
- package/dist/{hmr-timing-BZ5sWIqO.js → hmr-timing-B8p4f0ca.js} +219 -39
- package/dist/index.js +3 -3
- package/dist/index.mjs +4 -4
- package/dist/postcss.mjs +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-R3dzamcm.js → source-candidate-scan-signature-BAahhiwb.js} +4 -96
- package/dist/{source-candidate-scan-signature-D7RWjWsY.mjs → source-candidate-scan-signature-Cf7259PR.mjs} +6 -62
- package/dist/{tailwindcss-DPcKMLxL.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-BNlPdsGM.js → vite-DUVjMduj.js} +550 -273
- package/dist/{vite-CBU5NXTX.mjs → vite-nXZEiwG0.mjs} +501 -224
- 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 -10255
- package/dist/{webpack-CZ38fMGC.mjs → webpack-C_UUFRgj.mjs} +223 -57
- package/dist/{webpack-Jpe048pQ.js → webpack-nppysF4B.js} +232 -66
- 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);
|
|
@@ -1576,6 +1608,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1576
1608
|
appType,
|
|
1577
1609
|
cssMatcher: compilerOptions.cssMatcher
|
|
1578
1610
|
}));
|
|
1611
|
+
const directCssAssetResources = createWebpackDirectCssAssetResourceMap(compilation.chunks, compilation.chunkGraph, compilerOptions.cssMatcher, (resource, issuer) => resolveWebpackCssAssetModuleResource(resource, issuer, {
|
|
1612
|
+
appType,
|
|
1613
|
+
cssMatcher: compilerOptions.cssMatcher
|
|
1614
|
+
}));
|
|
1579
1615
|
const watchChangedFiles = new Set([...getWatchChangedFiles?.() ?? []].map((file) => path.resolve(file)));
|
|
1580
1616
|
const taskConcurrency = watchMode ? resolveTaskConcurrency(1) : void 0;
|
|
1581
1617
|
const activeProcessCacheKeys = /* @__PURE__ */ new Set();
|
|
@@ -1596,6 +1632,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1596
1632
|
compilation,
|
|
1597
1633
|
cssAssetFiles: entries.map(([file]) => file),
|
|
1598
1634
|
cssAssetResources,
|
|
1635
|
+
directCssAssetResources,
|
|
1599
1636
|
cssHandlerOptionsCache,
|
|
1600
1637
|
cssSources,
|
|
1601
1638
|
cssUserHandlerOptionsCache,
|
|
@@ -1896,8 +1933,16 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1896
1933
|
},
|
|
1897
1934
|
transform: async () => {
|
|
1898
1935
|
const source = readCurrentProcessedRawSource();
|
|
1899
|
-
const
|
|
1900
|
-
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;
|
|
1901
1946
|
const nextCss = stripTrailingLineWhitespace(finalizeCssAssetSource(handledCss, {
|
|
1902
1947
|
cssPreflight: cssHandlerOptionsForProcessedAsset.isMainChunk,
|
|
1903
1948
|
generatedCss: hasGeneratedCssMarker || hasTailwindGeneratedAssetCss
|
|
@@ -1990,10 +2035,11 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1990
2035
|
const isConfiguredMainCssSource = sourceFile !== void 0 && configuredMainCssEntryFiles.some((entry) => path.resolve(entry) === path.resolve(sourceFile));
|
|
1991
2036
|
const sourceCssHasTailwindRoot = sourceCss !== void 0 && hasTailwindRootDirectives(sourceCss, { importFallback: true });
|
|
1992
2037
|
const shouldPreserveExistingPreflight = cssHandlerOptions.isMainChunk || !isConfiguredMainCssSource && (isConfiguredCssSource || sourceCssHasTailwindRoot);
|
|
1993
|
-
const loaderGeneratedCss = sourceFile
|
|
2038
|
+
const loaderGeneratedCss = sourceFile ? generatedCssSources.get(path.resolve(sourceFile)) : void 0;
|
|
1994
2039
|
const shouldRegenerateExplicitTailwindV4CssSource = sourceCss !== void 0 && (hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config"));
|
|
1995
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;
|
|
1996
2041
|
if (loaderGeneratedCss && shouldConsumeWebpackLoaderGeneratedCss({
|
|
2042
|
+
allowMarkerlessRegistryMatch: configuredCssEntryFiles.length === 1,
|
|
1997
2043
|
hasBundlerGeneratedCssMarker: hasBundlerGeneratedCssMarker(currentRawSource),
|
|
1998
2044
|
loaderGeneratedClassSet: loaderGeneratedCss.classSet,
|
|
1999
2045
|
sourceCandidates: explicitTailwindV4SourceCandidates,
|
|
@@ -2026,7 +2072,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
2026
2072
|
css: currentAssetUserCss,
|
|
2027
2073
|
processed: true
|
|
2028
2074
|
}).css;
|
|
2029
|
-
const
|
|
2075
|
+
const handledLoaderCss = isWebGeneratorTarget ? mergedLoaderCss : (await compilerOptions.styleHandler(mergedLoaderCss, cssHandlerOptions)).css;
|
|
2076
|
+
const finalizedLoaderCss = finalizeCssAssetSource(handledLoaderCss, {
|
|
2030
2077
|
cssPreflight: cssHandlerOptions.isMainChunk,
|
|
2031
2078
|
generatedCss: true,
|
|
2032
2079
|
preserveExistingPreflight: shouldPreserveExistingPreflight
|
|
@@ -2044,7 +2091,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
2044
2091
|
processed: source.processed
|
|
2045
2092
|
};
|
|
2046
2093
|
}));
|
|
2047
|
-
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, {
|
|
2048
2096
|
cssPreflight: false,
|
|
2049
2097
|
generatedCss: false
|
|
2050
2098
|
});
|
|
@@ -2178,7 +2226,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
2178
2226
|
processed: source.processed
|
|
2179
2227
|
};
|
|
2180
2228
|
}));
|
|
2181
|
-
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, {
|
|
2182
2231
|
cssPreflight: false,
|
|
2183
2232
|
generatedCss: false
|
|
2184
2233
|
});
|
|
@@ -2280,6 +2329,30 @@ function installTailwindcssCssRedirect(pkgDir) {
|
|
|
2280
2329
|
const localRequire = createRequire(import.meta.url);
|
|
2281
2330
|
const MPX_STYLE_RESOURCE_QUERY_RE = /(?:^|[?&])type=styles(?:&|$)/;
|
|
2282
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
|
+
}
|
|
2283
2356
|
function isMpxStyleResourceQuery(query) {
|
|
2284
2357
|
if (typeof query !== "string") return false;
|
|
2285
2358
|
return MPX_STYLE_RESOURCE_QUERY_RE.test(query);
|
|
@@ -2288,6 +2361,12 @@ function getTailwindcssCssEntry(pkgDir) {
|
|
|
2288
2361
|
return path.join(pkgDir, "index.css");
|
|
2289
2362
|
}
|
|
2290
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;
|
|
2291
2370
|
const candidates = [
|
|
2292
2371
|
compiler?.context,
|
|
2293
2372
|
compiler?.options?.context,
|
|
@@ -2305,6 +2384,45 @@ function resolveMpxWebpackPluginDir(compiler) {
|
|
|
2305
2384
|
return;
|
|
2306
2385
|
}
|
|
2307
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
|
+
}
|
|
2308
2426
|
function isMpxWebpackPluginRequest(request) {
|
|
2309
2427
|
return request === "@mpxjs/webpack-plugin" || Boolean(request?.startsWith("@mpxjs/webpack-plugin/"));
|
|
2310
2428
|
}
|
|
@@ -2343,27 +2461,39 @@ function ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir) {
|
|
|
2343
2461
|
compiler.options.resolveLoader.alias = alias;
|
|
2344
2462
|
addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
|
|
2345
2463
|
}
|
|
2346
|
-
function
|
|
2347
|
-
const
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
const
|
|
2354
|
-
|
|
2355
|
-
return
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
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;
|
|
2360
2491
|
}
|
|
2361
|
-
function patchMpxWebpackPluginNormalizeLib(
|
|
2492
|
+
function patchMpxWebpackPluginNormalizeLib(_compiler, mpxWebpackPluginDir) {
|
|
2362
2493
|
if (!mpxWebpackPluginDir) return false;
|
|
2363
|
-
const projectRequire = resolveMpxWebpackPluginRequire(compiler);
|
|
2364
2494
|
let normalize;
|
|
2365
2495
|
try {
|
|
2366
|
-
normalize =
|
|
2496
|
+
normalize = createRequire(path.join(mpxWebpackPluginDir, "package.json"))(path.join(mpxWebpackPluginDir, "lib/utils/normalize"));
|
|
2367
2497
|
} catch {
|
|
2368
2498
|
return false;
|
|
2369
2499
|
}
|
|
@@ -2381,6 +2511,7 @@ function ensureMpxTailwindcssAliases(compiler, pkgDir) {
|
|
|
2381
2511
|
compiler.options.resolve = compiler.options.resolve || {};
|
|
2382
2512
|
const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(compiler);
|
|
2383
2513
|
patchMpxWebpackPluginNormalizeLib(compiler, mpxWebpackPluginDir);
|
|
2514
|
+
patchMpxWebpackPluginRequests(compiler, mpxWebpackPluginDir);
|
|
2384
2515
|
if (mpxWebpackPluginDir) ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir);
|
|
2385
2516
|
const alias = compiler.options.resolve.alias ?? {};
|
|
2386
2517
|
compiler.options.resolve.alias = alias;
|
|
@@ -2399,19 +2530,29 @@ function ensureMpxTailwindcssAliases(compiler, pkgDir) {
|
|
|
2399
2530
|
return tailwindcssCssEntry;
|
|
2400
2531
|
}
|
|
2401
2532
|
function patchMpxLoaderResolve(loaderContext, pkgDir, enabled) {
|
|
2402
|
-
if (!enabled
|
|
2403
|
-
const originalResolve = loaderContext.resolve;
|
|
2404
|
-
if (originalResolve.__weappTwPatched) return;
|
|
2533
|
+
if (!enabled) return;
|
|
2405
2534
|
const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
|
|
2406
2535
|
const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(loaderContext);
|
|
2407
|
-
const
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
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
|
+
}
|
|
2415
2556
|
}
|
|
2416
2557
|
function setupMpxTailwindcssRedirect(pkgDir, enabled) {
|
|
2417
2558
|
if (enabled) installTailwindcssCssRedirect(pkgDir);
|
|
@@ -2496,11 +2637,14 @@ function setupWebpackV5Loaders(options) {
|
|
|
2496
2637
|
if (shouldRewriteCssImports && mpxCssImportRewrite) ensureMpxTailwindcssAliases(compiler, weappTailwindcssPackageDir);
|
|
2497
2638
|
const runtimeClassSetLoader = runtimeLoaderPath ?? path.resolve(__dirname, "./weapp-tw-runtime-classset-loader.js");
|
|
2498
2639
|
const shouldInjectRuntimeClassSetLoader = !generatorBranch.isWeb;
|
|
2499
|
-
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;
|
|
2500
2643
|
const runtimeCssImportRewriteLoader = shouldInjectCssImportRewriteLoader ? path.resolve(__dirname, "./weapp-tw-css-import-rewrite-loader.js") : void 0;
|
|
2501
2644
|
const runtimeClassSetLoaderExists = fs.existsSync(runtimeClassSetLoader);
|
|
2645
|
+
const runtimeCssGenerationLoaderExists = runtimeCssGenerationLoader ? fs.existsSync(runtimeCssGenerationLoader) : false;
|
|
2502
2646
|
const runtimeCssImportRewriteLoaderExists = runtimeCssImportRewriteLoader ? fs.existsSync(runtimeCssImportRewriteLoader) : false;
|
|
2503
|
-
const runtimeLoaderRewriteOptions = shouldInjectCssImportRewriteLoader ? {
|
|
2647
|
+
const runtimeLoaderRewriteOptions = shouldInjectCssImportRewriteLoader || shouldInjectCssGenerationLoader ? {
|
|
2504
2648
|
pkgDir: weappTailwindcssPackageDir,
|
|
2505
2649
|
compilerOptions,
|
|
2506
2650
|
runtimeState,
|
|
@@ -2525,7 +2669,11 @@ function setupWebpackV5Loaders(options) {
|
|
|
2525
2669
|
compiler.hooks.watchClose?.tap?.(pluginName, cleanupWebpackLoaderRuntime);
|
|
2526
2670
|
compiler.hooks.shutdown?.tap?.(pluginName, cleanupWebpackLoaderRuntime);
|
|
2527
2671
|
const { findRewriteAnchor, findClassSetAnchor } = loaderAnchorFinders;
|
|
2528
|
-
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;
|
|
2529
2677
|
if (runtimeCssImportRewriteLoader && shouldRewriteCssImports && cssImportRewriteLoaderOptions && mpxCssImportRewrite) injectMpxCssRewritePreRules(compiler, runtimeCssImportRewriteLoader, cssImportRewriteLoaderOptions);
|
|
2530
2678
|
const createRuntimeClassSetLoaderEntry = () => ({
|
|
2531
2679
|
loader: runtimeClassSetLoader,
|
|
@@ -2542,10 +2690,22 @@ function setupWebpackV5Loaders(options) {
|
|
|
2542
2690
|
type: null
|
|
2543
2691
|
};
|
|
2544
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
|
+
};
|
|
2545
2702
|
const { NormalModule } = compiler.webpack;
|
|
2546
2703
|
compiler.hooks.compilation.tap(pluginName, (compilation) => {
|
|
2547
|
-
NormalModule.getCompilationHooks(compilation).loader.tap(
|
|
2548
|
-
|
|
2704
|
+
NormalModule.getCompilationHooks(compilation).loader.tap({
|
|
2705
|
+
name: pluginName,
|
|
2706
|
+
stage: 100
|
|
2707
|
+
}, (_loaderContext, module) => {
|
|
2708
|
+
if (!(runtimeClassSetLoaderExists || runtimeCssGenerationLoaderExists || runtimeCssImportRewriteLoaderExists)) return;
|
|
2549
2709
|
patchMpxLoaderResolve(_loaderContext, weappTailwindcssPackageDir, shouldRewriteCssImports && mpxCssImportRewrite);
|
|
2550
2710
|
const loaderEntries = module.loaders || [];
|
|
2551
2711
|
let rewriteAnchorIdx = findRewriteAnchor(loaderEntries);
|
|
@@ -2565,6 +2725,12 @@ function setupWebpackV5Loaders(options) {
|
|
|
2565
2725
|
if (position === "after") loaderEntries.push(entry);
|
|
2566
2726
|
else loaderEntries.unshift(entry);
|
|
2567
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
|
+
}
|
|
2568
2734
|
if (cssImportRewriteLoaderOptions && runtimeCssImportRewriteLoaderExists && runtimeCssImportRewriteLoader && isCssModule) {
|
|
2569
2735
|
const existingIndex = loaderEntries.findIndex((entry) => entry.loader?.includes?.(runtimeCssImportRewriteLoader));
|
|
2570
2736
|
const rewriteLoaderEntry = existingIndex !== -1 ? {
|