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.
Files changed (63) hide show
  1. package/dist/auto-2dg_uhEJ.mjs +13 -0
  2. package/dist/bundlers/gulp/frameworks/native/index.d.ts +2 -0
  3. package/dist/bundlers/gulp/index.d.ts +2 -0
  4. package/dist/bundlers/gulp/shared/create-native-framework-plugins.d.ts +2 -0
  5. package/dist/bundlers/shared/generated-css-marker.d.ts +2 -2
  6. package/dist/bundlers/shared/generator-css/local-imports.d.ts +1 -1
  7. package/dist/bundlers/shared/generator-css/source-resolver/postcss-source.d.ts +2 -0
  8. package/dist/bundlers/shared/generator-css/types.d.ts +5 -0
  9. package/dist/bundlers/shared/style-requests.d.ts +1 -0
  10. package/dist/bundlers/vite/bundle-state.d.ts +1 -0
  11. package/dist/bundlers/vite/generate-bundle/bundle-markup-candidates.d.ts +20 -0
  12. package/dist/bundlers/vite/generate-bundle/css-handler-options.d.ts +1 -0
  13. package/dist/bundlers/vite/generate-bundle/remembered-css-replay.d.ts +1 -0
  14. package/dist/bundlers/vite/generate-bundle/sfc-style-source.d.ts +2 -1
  15. package/dist/bundlers/vite/generate-bundle/source-candidate-source.d.ts +1 -0
  16. package/dist/bundlers/vite/generate-bundle/types.d.ts +5 -0
  17. package/dist/bundlers/vite/serve-css-generation.d.ts +3 -2
  18. package/dist/bundlers/vite/shared/create-framework-plugins.d.ts +1 -0
  19. package/dist/bundlers/vite/watch-css-post.d.ts +10 -0
  20. package/dist/bundlers/webpack/BaseUnifiedPlugin/shared.d.ts +6 -0
  21. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/css-source-resolvers.d.ts +1 -0
  22. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/pipeline-helpers.d.ts +2 -0
  23. package/dist/bundlers/webpack/loaders/runtime-registry.d.ts +1 -0
  24. package/dist/bundlers/webpack/loaders/weapp-tw-css-generation-loader.d.ts +4 -0
  25. package/dist/bundlers/webpack/loaders/weapp-tw-css-import-rewrite-loader.d.ts +3 -0
  26. package/dist/{context-BL8Gy71H.mjs → context-BgGWVAmN.mjs} +2 -2
  27. package/dist/core.mjs +1 -1
  28. package/dist/css-macro.mjs +1 -1
  29. package/dist/{generator-B59OA64h.mjs → generator-CEo920So.mjs} +1 -1
  30. package/dist/generator.mjs +1 -1
  31. package/dist/{gulp-C1Q3LRzg.js → gulp-3m1dAiig.js} +84 -50
  32. package/dist/{gulp-DUYWxmZC.mjs → gulp-DP71z1jG.mjs} +87 -53
  33. package/dist/gulp.js +1 -1
  34. package/dist/gulp.mjs +1 -1
  35. package/dist/{hmr-timing-C3ed5vCx.mjs → hmr-timing-1aS6--U7.mjs} +170 -44
  36. package/dist/{hmr-timing-BZ5sWIqO.js → hmr-timing-B8p4f0ca.js} +219 -39
  37. package/dist/index.js +3 -3
  38. package/dist/index.mjs +4 -4
  39. package/dist/postcss.mjs +1 -1
  40. package/dist/presets.mjs +1 -1
  41. package/dist/rspack.js +1 -1
  42. package/dist/rspack.mjs +1 -1
  43. package/dist/shared/mpx.d.ts +4 -1
  44. package/dist/{source-candidate-scan-signature-R3dzamcm.js → source-candidate-scan-signature-BAahhiwb.js} +4 -96
  45. package/dist/{source-candidate-scan-signature-D7RWjWsY.mjs → source-candidate-scan-signature-Cf7259PR.mjs} +6 -62
  46. package/dist/{tailwindcss-DPcKMLxL.mjs → tailwindcss-xs704TRw.mjs} +1 -1
  47. package/dist/{transform-D5JUgMpE.mjs → transform-B_KM9sLX.mjs} +47 -5
  48. package/dist/{transform-COFRlmDF.js → transform-CcYptivi.js} +47 -5
  49. package/dist/uni-app-x/component-local-style.d.ts +1 -0
  50. package/dist/uni-app-x/style-asset/style-value.d.ts +1 -1
  51. package/dist/{vite-BNlPdsGM.js → vite-DUVjMduj.js} +550 -273
  52. package/dist/{vite-CBU5NXTX.mjs → vite-nXZEiwG0.mjs} +501 -224
  53. package/dist/vite.js +1 -1
  54. package/dist/vite.mjs +1 -1
  55. package/dist/weapp-tw-css-generation-loader.js +12 -0
  56. package/dist/weapp-tw-css-import-rewrite-loader-DNk0IxAt.js +10198 -0
  57. package/dist/weapp-tw-css-import-rewrite-loader.js +6 -10255
  58. package/dist/{webpack-CZ38fMGC.mjs → webpack-C_UUFRgj.mjs} +223 -57
  59. package/dist/{webpack-Jpe048pQ.js → webpack-nppysF4B.js} +232 -66
  60. package/dist/webpack.js +1 -1
  61. package/dist/webpack.mjs +1 -1
  62. package/package.json +11 -3
  63. package/dist/auto-CrJJc5rK.mjs +0 -13
@@ -5,8 +5,8 @@ const require_utils = require("./utils-CuKLf1Zv.js");
5
5
  const require_wxml = require("./wxml-Ce10eREX.js");
6
6
  const require_context = require("./context-VeFq_8vW.js");
7
7
  const require_defaults = require("./defaults.js");
8
- const require_hmr_timing = require("./hmr-timing-BZ5sWIqO.js");
9
- const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-R3dzamcm.js");
8
+ const require_hmr_timing = require("./hmr-timing-B8p4f0ca.js");
9
+ const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-BAahhiwb.js");
10
10
  let node_fs = require("node:fs");
11
11
  node_fs = require_rolldown_runtime.__toESM(node_fs);
12
12
  let node_path = require("node:path");
@@ -27,13 +27,13 @@ function getCacheKey(filename) {
27
27
  }
28
28
  function stripResourceQuery(resource) {
29
29
  if (typeof resource !== "string") return resource;
30
- return require_source_candidate_scan_signature.stripRequestQuery(resource);
30
+ return require_hmr_timing.stripRequestQuery(resource);
31
31
  }
32
32
  function isCssLikeModuleResource(resource, cssMatcher) {
33
33
  if (typeof resource !== "string") return false;
34
34
  const normalizedResource = stripResourceQuery(resource);
35
35
  if (normalizedResource && cssMatcher(normalizedResource)) return true;
36
- if (require_source_candidate_scan_signature.isSourceStyleRequest(resource)) return true;
36
+ if (require_hmr_timing.isSourceStyleRequest(resource)) return true;
37
37
  return false;
38
38
  }
39
39
  function hasLoaderEntry(entries, target) {
@@ -73,17 +73,27 @@ function resolveSingleActiveWebpackCssResource(assetResources, activeWebpackAsse
73
73
  const activeAssetResourceMatches = [...assetResources ?? []].map((sourceFile) => node_path.default.resolve(sourceFile)).filter((sourceFile) => activeWebpackAssetResourceFiles.has(sourceFile)).sort();
74
74
  return activeAssetResourceMatches.length === 1 ? activeAssetResourceMatches[0] : void 0;
75
75
  }
76
- function createWebpackCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normalizeResource) {
76
+ function resolveWebpackCssModuleIdentifierResource(module) {
77
+ if (!module.type?.startsWith("css/") || typeof module.identifier !== "function") return;
78
+ const identifier = module.identifier();
79
+ const request = identifier.startsWith("css|") ? identifier.slice(4) : identifier;
80
+ const resourceWithMetadata = request.slice(request.lastIndexOf("!") + 1);
81
+ const metadataIndex = resourceWithMetadata.indexOf("|");
82
+ return metadataIndex === -1 ? resourceWithMetadata : resourceWithMetadata.slice(0, metadataIndex);
83
+ }
84
+ function createWebpackCssAssetResourceMapInternal(chunks, chunkGraph, cssMatcher, normalizeResource, onlyUnambiguousCssAssets) {
77
85
  const resourcesByAsset = /* @__PURE__ */ new Map();
78
86
  if (!chunkGraph?.getChunkModulesIterable) return resourcesByAsset;
79
87
  const collectModuleResources = (module, resources, seen = /* @__PURE__ */ new Set()) => {
80
88
  if (!module || seen.has(module)) return;
81
89
  seen.add(module);
82
- for (const candidate of [
90
+ const candidates = [
83
91
  module.resource,
84
92
  module.request,
85
93
  module.userRequest
86
- ]) {
94
+ ];
95
+ if (onlyUnambiguousCssAssets) candidates.push(resolveWebpackCssModuleIdentifierResource(module));
96
+ for (const candidate of candidates) {
87
97
  if (typeof candidate !== "string") continue;
88
98
  const normalized = normalizeResource(candidate, module);
89
99
  if (normalized) resources.add(normalized);
@@ -103,7 +113,7 @@ function createWebpackCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normal
103
113
  };
104
114
  for (const chunk of chunks) {
105
115
  const cssFiles = toChunkFiles(chunk.files).filter((file) => cssMatcher(file));
106
- if (cssFiles.length === 0) continue;
116
+ if (cssFiles.length === 0 || onlyUnambiguousCssAssets && cssFiles.length !== 1) continue;
107
117
  const modules = chunkGraph.getChunkModulesIterable(chunk);
108
118
  if (!modules) continue;
109
119
  const cssResources = /* @__PURE__ */ new Set();
@@ -113,6 +123,12 @@ function createWebpackCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normal
113
123
  }
114
124
  return resourcesByAsset;
115
125
  }
126
+ function createWebpackCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normalizeResource) {
127
+ return createWebpackCssAssetResourceMapInternal(chunks, chunkGraph, cssMatcher, normalizeResource, false);
128
+ }
129
+ function createWebpackDirectCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normalizeResource) {
130
+ return createWebpackCssAssetResourceMapInternal(chunks, chunkGraph, cssMatcher, normalizeResource, true);
131
+ }
116
132
  function createAssetHashByChunkMap(chunks) {
117
133
  const partsByFile = /* @__PURE__ */ new Map();
118
134
  for (const chunk of chunks) {
@@ -315,8 +331,15 @@ function resolveWebpackGeneratorRawSource(rawSource, cssHandlerOptions) {
315
331
  }
316
332
  function shouldConsumeWebpackLoaderGeneratedCss(options) {
317
333
  if (!options.shouldRegenerateExplicitTailwindV4CssSource) return true;
318
- if (options.watchMode === true && options.loaderGeneratedClassSet && options.sourceCandidates && (hasMissingRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates) || hasStaleRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates))) return false;
319
- return options.hasBundlerGeneratedCssMarker;
334
+ if (options.watchMode === true && options.loaderGeneratedClassSet && options.sourceCandidates && hasStaleRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates)) return false;
335
+ if (options.hasBundlerGeneratedCssMarker) return true;
336
+ if (options.watchMode === true && options.loaderGeneratedClassSet && options.sourceCandidates && hasMissingRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates)) return false;
337
+ return Boolean(options.allowMarkerlessRegistryMatch && options.loaderGeneratedClassSet && options.sourceCandidates && !hasMissingRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates) && !hasStaleRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates));
338
+ }
339
+ function hasDeferredWebpackGeneratedCss(source, generatedClassSets) {
340
+ const selectors = require_hmr_timing.collectRawSourceClassSelectors(source);
341
+ for (const classSet of generatedClassSets) for (const candidate of classSet) if (selectors.has(candidate)) return true;
342
+ return false;
320
343
  }
321
344
  function hasUsableWebpackGeneratorCssSources(cssSources) {
322
345
  return Array.isArray(cssSources) && cssSources.some((source) => typeof source?.css === "string" && source.css.length > 0);
@@ -405,7 +428,8 @@ function isWebpackKeyframesRule(rule) {
405
428
  }
406
429
  function collectWebpackBareSelectorUserCss(source) {
407
430
  try {
408
- const root = _weapp_tailwindcss_postcss.postcss.parse(require_generator.removeTailwindSourceDirectives(require_generator.stripTailwindSourceMediaFragments(require_generator.removeTailwindV4GeneratorAtRules(source)), { importFallback: true }));
431
+ const normalizedSource = require_generator.removeTailwindSourceDirectives(require_generator.stripTailwindSourceMediaFragments(require_generator.removeTailwindV4GeneratorAtRules(source)), { importFallback: true });
432
+ const root = _weapp_tailwindcss_postcss.postcss.parse(normalizedSource);
409
433
  let changed = false;
410
434
  root.walkAtRules((rule) => {
411
435
  if (rule.name === "import" || rule.name === "font-face" || rule.name.endsWith("keyframes")) {
@@ -425,7 +449,7 @@ function collectWebpackBareSelectorUserCss(source) {
425
449
  changed = true;
426
450
  }
427
451
  });
428
- return changed ? root.toString() : source;
452
+ return changed ? root.toString() : normalizedSource;
429
453
  } catch {
430
454
  return "";
431
455
  }
@@ -618,7 +642,7 @@ function unescapeCssIdentifier(value) {
618
642
  }
619
643
  function collectGeneratedCssRuntimeCandidates(source) {
620
644
  const candidates = /* @__PURE__ */ new Set();
621
- if (require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(source) || !require_generator.hasTailwindGeneratedCss(source) && !require_generator.hasTailwindGeneratedCssMarkers(source)) return candidates;
645
+ if (require_hmr_timing.hasBundlerGeneratedCssMarker(source) || !require_generator.hasTailwindGeneratedCss(source) && !require_generator.hasTailwindGeneratedCssMarkers(source)) return candidates;
622
646
  try {
623
647
  _weapp_tailwindcss_postcss.postcss.parse(source).walkRules((rule) => {
624
648
  for (const selector of rule.selectors) for (const match of selector.matchAll(/\.((?:\\.|[\w\u00A0-\uFFFF-])(?:\\.|[\w\u00A0-\uFFFF-])*)/g)) {
@@ -705,7 +729,9 @@ function createWebpackGeneratorUserCssSourceAppend(...sources) {
705
729
  let css = "";
706
730
  const usedParts = [];
707
731
  for (const source of parts) {
708
- const nextCss = css.trim().length > 0 ? (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(css, source.css) : source.css;
732
+ const merged = css.trim().length > 0 ? (0, _weapp_tailwindcss_postcss.mergeCoveredCssRuleDeclarations)(css, source.css) : void 0;
733
+ if (merged?.changed) css = merged.baseCss;
734
+ const nextCss = css.trim().length > 0 ? (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(css, merged?.css ?? source.css) : source.css;
709
735
  if (!(nextCss.trim().length > 0)) continue;
710
736
  css = require_hmr_timing.createCssSourceOrderAppend(css, nextCss);
711
737
  usedParts.push(source);
@@ -851,10 +877,10 @@ function finalizeTracedWebpackCssAsset(css, cssHandlerOptions, options) {
851
877
  function finalizeWebpackCssAssetSource(source, compilerOptions, isWebGeneratorTarget, options = {}) {
852
878
  const styleOptions = require_context.resolveStyleOptionsFromContext(compilerOptions);
853
879
  if (isWebGeneratorTarget) {
854
- if (options.generatedCss === true) return stripTrailingLineWhitespace(require_generator.stripUnmatchedTailwindSourceMediaCloseFragments(require_generator.stripTailwindSourceMediaFragments(require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(source))));
855
- return stripTrailingLineWhitespace(require_generator.stripUnmatchedTailwindSourceMediaCloseFragments(require_generator.stripTailwindSourceMediaFragments(require_generator.removeTailwindV4GeneratorAtRules(require_generator.removeTailwindSourceDirectives(require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(source), { importFallback: true })))));
880
+ if (options.generatedCss === true) return stripTrailingLineWhitespace(require_generator.stripUnmatchedTailwindSourceMediaCloseFragments(require_generator.stripTailwindSourceMediaFragments(require_hmr_timing.stripBundlerGeneratedCssMarkers(source))));
881
+ return stripTrailingLineWhitespace(require_generator.stripUnmatchedTailwindSourceMediaCloseFragments(require_generator.stripTailwindSourceMediaFragments(require_generator.removeTailwindV4GeneratorAtRules(require_generator.removeTailwindSourceDirectives(require_hmr_timing.stripBundlerGeneratedCssMarkers(source), { importFallback: true })))));
856
882
  }
857
- let finalized = require_generator.removeTailwindSourceDirectives(require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(source), { importFallback: true });
883
+ let finalized = require_generator.removeTailwindSourceDirectives(require_hmr_timing.stripBundlerGeneratedCssMarkers(source), { importFallback: true });
858
884
  if (options.generatedCss !== true) {
859
885
  finalized = (0, _weapp_tailwindcss_postcss.finalizeMiniProgramCss)(finalized, {
860
886
  cssPreflight: false,
@@ -883,7 +909,7 @@ function finalizeWebpackCssAssetSource(source, compilerOptions, isWebGeneratorTa
883
909
  function finalizeWebpackCssAssetOutputSource(source, compilerOptions, isWebGeneratorTarget) {
884
910
  if (isWebGeneratorTarget) return source;
885
911
  const styleOptions = require_context.resolveStyleOptionsFromContext(compilerOptions);
886
- return (0, _weapp_tailwindcss_postcss.stripMiniProgramCssSpecificityPlaceholders)(require_generator.removeMiniProgramHoverSelectors(dedupeMiniProgramPreflightSelectorRules(source), styleOptions.cssRemoveHoverPseudoClass));
912
+ return (0, _weapp_tailwindcss_postcss.stripMiniProgramCssSpecificityPlaceholders)(require_generator.removeMiniProgramHoverSelectors((0, _weapp_tailwindcss_postcss.dedupeCoveredCssRules)(dedupeMiniProgramPreflightSelectorRules(source)), styleOptions.cssRemoveHoverPseudoClass));
887
913
  }
888
914
  function collectWebpackJsRuntimeCandidatesFromAssets(options) {
889
915
  if (options.isWebGeneratorTarget) return;
@@ -974,7 +1000,7 @@ function collectMainImportedCssFiles(compilation, cssAssetFiles, cssMatcher, isM
974
1000
  return files;
975
1001
  }
976
1002
  function createWebpackCssSourceResolvers(options) {
977
- const { activeWebpackAssetResourceFiles, appType, compilerOptions, compilation, cssAssetFiles, cssAssetResources, cssHandlerOptionsCache, cssSources, cssUserHandlerOptionsCache, groupedCssEntriesLength, singleCssAssetFile, isWebGeneratorTarget, outputDir, runtimeState } = options;
1003
+ const { activeWebpackAssetResourceFiles, appType, compilerOptions, compilation, cssAssetFiles, cssAssetResources, directCssAssetResources, cssHandlerOptionsCache, cssSources, cssUserHandlerOptionsCache, groupedCssEntriesLength, singleCssAssetFile, isWebGeneratorTarget, outputDir, runtimeState } = options;
978
1004
  const hasConfiguredTailwindV4SourceRoots = () => {
979
1005
  const tailwindOptions = require_generator.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
980
1006
  return (tailwindOptions?.v4?.cssEntries?.length ?? 0) > 0 || (tailwindOptions?.v4?.cssSources?.length ?? 0) > 0;
@@ -991,7 +1017,7 @@ function createWebpackCssSourceResolvers(options) {
991
1017
  cwd: compilerOptions.tailwindcssBasedir
992
1018
  });
993
1019
  const isConfiguredMainCssEntryFile = (sourceFile) => configuredMainCssEntryFiles.some((entry) => node_path.default.resolve(entry) === node_path.default.resolve(sourceFile));
994
- const isCssSourceAllowedForOutput = (file, sourceFile) => !isConfiguredMainCssEntryFile(sourceFile) || scoreCssSourceOutputMatch(file, sourceFile) > 0;
1020
+ const isCssSourceAllowedForOutput = (file, sourceFile) => !isConfiguredMainCssEntryFile(sourceFile) || directCssAssetResources.get(file)?.has(sourceFile) === true || scoreCssSourceOutputMatch(file, sourceFile) > 0;
995
1021
  const inferredMainCssFiles = new Set([...inferWebpackMainCssFiles(compilation.chunks, compilerOptions.cssMatcher, {
996
1022
  mainSourceFiles: new Set(configuredMainCssEntryFiles),
997
1023
  resourcesByAsset: cssAssetResources
@@ -1032,6 +1058,12 @@ function createWebpackCssSourceResolvers(options) {
1032
1058
  return resolveConfiguredMainCssSourceFile(file);
1033
1059
  }
1034
1060
  const resourceMatches = [...assetResources ?? []].filter((sourceFile) => cssSources.has(sourceFile)).filter((sourceFile) => isCssSourceAllowedForOutput(file, sourceFile)).sort();
1061
+ const configuredResourceMatches = resourceMatches.filter((sourceFile) => configuredCssEntryFiles.some((entry) => node_path.default.resolve(entry) === node_path.default.resolve(sourceFile)));
1062
+ if (configuredResourceMatches.length === 1) {
1063
+ const sourceFile = configuredResourceMatches[0];
1064
+ activeWebpackCssSourceFiles.add(sourceFile);
1065
+ return sourceFile;
1066
+ }
1035
1067
  if (resourceMatches.length === 1) {
1036
1068
  const sourceFile = resourceMatches[0];
1037
1069
  activeWebpackCssSourceFiles.add(sourceFile);
@@ -1582,6 +1614,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
1582
1614
  appType,
1583
1615
  cssMatcher: compilerOptions.cssMatcher
1584
1616
  }));
1617
+ const directCssAssetResources = createWebpackDirectCssAssetResourceMap(compilation.chunks, compilation.chunkGraph, compilerOptions.cssMatcher, (resource, issuer) => resolveWebpackCssAssetModuleResource(resource, issuer, {
1618
+ appType,
1619
+ cssMatcher: compilerOptions.cssMatcher
1620
+ }));
1585
1621
  const watchChangedFiles = new Set([...getWatchChangedFiles?.() ?? []].map((file) => node_path.default.resolve(file)));
1586
1622
  const taskConcurrency = watchMode ? require_hmr_timing.resolveTaskConcurrency(1) : void 0;
1587
1623
  const activeProcessCacheKeys = /* @__PURE__ */ new Set();
@@ -1602,6 +1638,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
1602
1638
  compilation,
1603
1639
  cssAssetFiles: entries.map(([file]) => file),
1604
1640
  cssAssetResources,
1641
+ directCssAssetResources,
1605
1642
  cssHandlerOptionsCache,
1606
1643
  cssSources,
1607
1644
  cssUserHandlerOptionsCache,
@@ -1862,7 +1899,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
1862
1899
  hasTailwindGeneratedAssetCss = hasGeneratedCssMarker;
1863
1900
  } else {
1864
1901
  const source = readCurrentProcessedRawSource();
1865
- hasGeneratedCssMarker = require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(source);
1902
+ hasGeneratedCssMarker = require_hmr_timing.hasBundlerGeneratedCssMarker(source);
1866
1903
  hasTailwindGeneratedAssetCss = require_generator.hasTailwindGeneratedCss(source) || require_generator.hasTailwindGeneratedCssMarkers(source);
1867
1904
  }
1868
1905
  const hasProcessedAssetTailwindDirectives = () => {
@@ -1902,8 +1939,16 @@ function setupWebpackV5ProcessAssetsHook(options) {
1902
1939
  },
1903
1940
  transform: async () => {
1904
1941
  const source = readCurrentProcessedRawSource();
1905
- const processedBareSelectorSourceCss = processedSourceCss ?? (hasTailwindGeneratedAssetCss ? removeWebpackTailwindGeneratedAssetCss(source) : void 0);
1906
- const handledCss = hasTailwindGeneratedAssetCss && !hasGeneratedCssMarker ? isWebGeneratorTarget ? source : (await compilerOptions.styleHandler(source, cssHandlerOptionsForProcessedAsset)).css : source;
1942
+ const missingProcessedLoaderGeneratedCss = isWebGeneratorTarget && processedLoaderGeneratedCss ? (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(source, require_hmr_timing.stripBundlerGeneratedCssMarkers(processedLoaderGeneratedCss.css)) : "";
1943
+ const sourceWithLoaderGeneratedCss = missingProcessedLoaderGeneratedCss.trim().length === 0 ? source : createWebpackGeneratorUserCssSourceAppend({
1944
+ css: source,
1945
+ processed: true
1946
+ }, {
1947
+ css: missingProcessedLoaderGeneratedCss,
1948
+ processed: true
1949
+ }).css;
1950
+ const processedBareSelectorSourceCss = processedSourceCss ?? (hasTailwindGeneratedAssetCss ? removeWebpackTailwindGeneratedAssetCss(sourceWithLoaderGeneratedCss) : void 0);
1951
+ const handledCss = hasTailwindGeneratedAssetCss && (!hasGeneratedCssMarker || !isWebGeneratorTarget && hasDeferredWebpackGeneratedCss(source, [...generatedCssSources.values()].map((item) => item.classSet))) ? isWebGeneratorTarget ? sourceWithLoaderGeneratedCss : (await compilerOptions.styleHandler(sourceWithLoaderGeneratedCss, cssHandlerOptionsForProcessedAsset)).css : sourceWithLoaderGeneratedCss;
1907
1952
  const nextCss = stripTrailingLineWhitespace(finalizeCssAssetSource(handledCss, {
1908
1953
  cssPreflight: cssHandlerOptionsForProcessedAsset.isMainChunk,
1909
1954
  generatedCss: hasGeneratedCssMarker || hasTailwindGeneratedAssetCss
@@ -1996,11 +2041,12 @@ function setupWebpackV5ProcessAssetsHook(options) {
1996
2041
  const isConfiguredMainCssSource = sourceFile !== void 0 && configuredMainCssEntryFiles.some((entry) => node_path.default.resolve(entry) === node_path.default.resolve(sourceFile));
1997
2042
  const sourceCssHasTailwindRoot = sourceCss !== void 0 && require_generator.hasTailwindRootDirectives(sourceCss, { importFallback: true });
1998
2043
  const shouldPreserveExistingPreflight = cssHandlerOptions.isMainChunk || !isConfiguredMainCssSource && (isConfiguredCssSource || sourceCssHasTailwindRoot);
1999
- const loaderGeneratedCss = sourceFile && !isWebGeneratorTarget ? generatedCssSources.get(node_path.default.resolve(sourceFile)) : void 0;
2044
+ const loaderGeneratedCss = sourceFile ? generatedCssSources.get(node_path.default.resolve(sourceFile)) : void 0;
2000
2045
  const shouldRegenerateExplicitTailwindV4CssSource = sourceCss !== void 0 && (require_generator.hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config"));
2001
2046
  const explicitTailwindV4SourceCandidates = shouldRegenerateExplicitTailwindV4CssSource && sourceCss && sourceFile && webpackSourceCandidates?.getSourceCandidatesForEntries ? await require_tailwindcss.resolveTailwindV4EntriesFromCssCached(sourceCss, node_path.default.dirname(sourceFile)).then((resolved) => resolved?.entries ? webpackSourceCandidates.getSourceCandidatesForEntries(resolved.entries) : void 0) : void 0;
2002
2047
  if (loaderGeneratedCss && shouldConsumeWebpackLoaderGeneratedCss({
2003
- hasBundlerGeneratedCssMarker: require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(currentRawSource),
2048
+ allowMarkerlessRegistryMatch: configuredCssEntryFiles.length === 1,
2049
+ hasBundlerGeneratedCssMarker: require_hmr_timing.hasBundlerGeneratedCssMarker(currentRawSource),
2004
2050
  loaderGeneratedClassSet: loaderGeneratedCss.classSet,
2005
2051
  sourceCandidates: explicitTailwindV4SourceCandidates,
2006
2052
  shouldRegenerateExplicitTailwindV4CssSource,
@@ -2011,11 +2057,11 @@ function setupWebpackV5ProcessAssetsHook(options) {
2011
2057
  transformRuntimeSet.add(className);
2012
2058
  }
2013
2059
  for (const dependency of loaderGeneratedCss.dependencies) compilation.fileDependencies?.add?.(dependency);
2014
- const currentRawSourceWithoutBundlerMarkers = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(currentRawSource);
2060
+ const currentRawSourceWithoutBundlerMarkers = require_hmr_timing.stripBundlerGeneratedCssMarkers(currentRawSource);
2015
2061
  const currentAssetHasProcessedUrl = hasProcessedCssAssetUrl(currentRawSourceWithoutBundlerMarkers) && currentRawSourceWithoutBundlerMarkers !== loaderGeneratedCss.css;
2016
2062
  const currentAssetUserCss = currentAssetHasProcessedUrl ? currentRawSourceWithoutBundlerMarkers : shouldUseWebpackAssetAsGeneratorUserCss(currentRawSourceWithoutBundlerMarkers, loaderGeneratedCss.css, { processed: true }) ? require_hmr_timing.removeGeneratedSelectorCompatCss(currentRawSourceWithoutBundlerMarkers, loaderGeneratedCss.css) : void 0;
2017
- const loaderGeneratedCssWithoutMarkers = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(loaderGeneratedCss.css);
2018
- const currentAssetUserCssWithoutMarkers = currentAssetUserCss === void 0 ? "" : require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(currentAssetUserCss);
2063
+ const loaderGeneratedCssWithoutMarkers = require_hmr_timing.stripBundlerGeneratedCssMarkers(loaderGeneratedCss.css);
2064
+ const currentAssetUserCssWithoutMarkers = currentAssetUserCss === void 0 ? "" : require_hmr_timing.stripBundlerGeneratedCssMarkers(currentAssetUserCss);
2019
2065
  const currentAssetMissingUserCss = !(currentAssetUserCssWithoutMarkers.trim().length > 0 && !require_generator.isCommentOnlyCss(currentAssetUserCssWithoutMarkers)) ? "" : (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(currentAssetUserCssWithoutMarkers, loaderGeneratedCssWithoutMarkers);
2020
2066
  if (isConfiguredMainCssSource && !cssHandlerOptions.isMainChunk) {
2021
2067
  debug("css skip duplicate webpack loader main generation: %s <- %s", file, sourceFile);
@@ -2032,7 +2078,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
2032
2078
  css: currentAssetUserCss,
2033
2079
  processed: true
2034
2080
  }).css;
2035
- const finalizedLoaderCss = finalizeCssAssetSource(mergedLoaderCss, {
2081
+ const handledLoaderCss = isWebGeneratorTarget ? mergedLoaderCss : (await compilerOptions.styleHandler(mergedLoaderCss, cssHandlerOptions)).css;
2082
+ const finalizedLoaderCss = finalizeCssAssetSource(handledLoaderCss, {
2036
2083
  cssPreflight: cssHandlerOptions.isMainChunk,
2037
2084
  generatedCss: true,
2038
2085
  preserveExistingPreflight: shouldPreserveExistingPreflight
@@ -2050,7 +2097,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
2050
2097
  processed: source.processed
2051
2098
  };
2052
2099
  }));
2053
- const finalizedLoaderSourceBareUserCss = loaderSourceBareUserCss === void 0 ? "" : finalizeCssAssetSource(loaderSourceBareUserCss.css, {
2100
+ const handledLoaderSourceBareUserCss = loaderSourceBareUserCss === void 0 ? "" : loaderSourceBareUserCss.processed ? loaderSourceBareUserCss.css : (await compilerOptions.styleHandler(loaderSourceBareUserCss.css, cssHandlerOptions)).css;
2101
+ const finalizedLoaderSourceBareUserCss = handledLoaderSourceBareUserCss.trim().length === 0 ? "" : finalizeCssAssetSource(handledLoaderSourceBareUserCss, {
2054
2102
  cssPreflight: false,
2055
2103
  generatedCss: false
2056
2104
  });
@@ -2071,7 +2119,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
2071
2119
  file: registeredSourceFile
2072
2120
  })), generatorRawSource, sourceFile, (registeredSourceFile) => isSameWebpackSourceScope(file, registeredSourceFile, sourceFile));
2073
2121
  const currentAssetLooksGenerated = require_generator.hasTailwindGeneratedCss(currentRawSource) || require_generator.hasTailwindGeneratedCssMarkers(currentRawSource);
2074
- const currentAssetHasBundlerGeneratedMarker = require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(currentRawSource);
2122
+ const currentAssetHasBundlerGeneratedMarker = require_hmr_timing.hasBundlerGeneratedCssMarker(currentRawSource);
2075
2123
  const currentAssetUserCssSource = currentAssetLooksGenerated ? removeWebpackTailwindGeneratedAssetCss(currentRawSource) : currentRawSource;
2076
2124
  if (sourceFile === void 0 && currentAssetHasBundlerGeneratedMarker && (currentAssetUserCssSource.trim().length === 0 || require_generator.isCommentOnlyCss(currentAssetUserCssSource))) return { result: new ConcatSource(finalizeTracedCss("", cssHandlerOptions)) };
2077
2125
  const currentAssetHasAdditionalUserCss = currentAssetLooksGenerated && (hasAdditionalWebpackAssetUserCssMarkers(currentAssetUserCssSource, generatorRawSource) || currentAssetUserCssSource.trim().length > 0);
@@ -2092,7 +2140,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
2092
2140
  }),
2093
2141
  sourceCssProcessed
2094
2142
  }), registeredUserRawSource);
2095
- if ((0, _weapp_tailwindcss_postcss.isPureLocalCssImportWrapper)(currentRawSource)) return { result: new ConcatSource(require_generator.removeTailwindSourceDirectives(require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(currentRawSource), { importFallback: true })) };
2143
+ if ((0, _weapp_tailwindcss_postcss.isPureLocalCssImportWrapper)(currentRawSource)) return { result: new ConcatSource(require_generator.removeTailwindSourceDirectives(require_hmr_timing.stripBundlerGeneratedCssMarkers(currentRawSource), { importFallback: true })) };
2096
2144
  const fallbackGeneratorRuntimeSet = getGeneratorRuntimeSet();
2097
2145
  const hasExplicitTailwindV4SourceCss = sourceCss !== void 0 && (require_generator.hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config"));
2098
2146
  const currentAssetHasTailwindDirectives = require_generator.hasTailwindRootDirectives(generatorRawSource, { importFallback: true }) || require_generator.hasTailwindSourceDirectives(generatorRawSource, { importFallback: true }) || require_generator.hasTailwindApplyDirective(generatorRawSource);
@@ -2184,7 +2232,8 @@ function setupWebpackV5ProcessAssetsHook(options) {
2184
2232
  processed: source.processed
2185
2233
  };
2186
2234
  }));
2187
- const finalizedSourceBareUserCss = sourceBareUserCss === void 0 ? "" : finalizeCssAssetSource(sourceBareUserCss.css, {
2235
+ const handledSourceBareUserCss = sourceBareUserCss === void 0 ? "" : sourceBareUserCss.processed ? sourceBareUserCss.css : (await compilerOptions.styleHandler(sourceBareUserCss.css, cssHandlerOptions)).css;
2236
+ const finalizedSourceBareUserCss = handledSourceBareUserCss.trim().length === 0 ? "" : finalizeCssAssetSource(handledSourceBareUserCss, {
2188
2237
  cssPreflight: false,
2189
2238
  generatedCss: false
2190
2239
  });
@@ -2281,6 +2330,30 @@ function installTailwindcssCssRedirect(pkgDir) {
2281
2330
  const localRequire = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href);
2282
2331
  const MPX_STYLE_RESOURCE_QUERY_RE = /(?:^|[?&])type=styles(?:&|$)/;
2283
2332
  const MPX_WEBPACK_PLUGIN_PACKAGE_RE = /@mpxjs[\\/]webpack-plugin[\\/]package\.json$/;
2333
+ const MPX_WEBPACK_PLUGIN_LIB_RE = /^(.*[\\/]@mpxjs[\\/]webpack-plugin)[\\/]lib[\\/]/;
2334
+ const MPX_WEBPACK_PLUGIN_REQUEST_RE = /@mpxjs\/webpack-plugin\/([^!?]+)/g;
2335
+ function findMpxWebpackPluginDirFromRules(rules) {
2336
+ const visit = (value) => {
2337
+ if (typeof value === "string") return value.match(MPX_WEBPACK_PLUGIN_LIB_RE)?.[1];
2338
+ if (Array.isArray(value)) {
2339
+ for (const item of value) {
2340
+ const result = visit(item);
2341
+ if (result) return result;
2342
+ }
2343
+ return;
2344
+ }
2345
+ if (value && typeof value === "object") for (const key of [
2346
+ "loader",
2347
+ "use",
2348
+ "rules",
2349
+ "oneOf"
2350
+ ]) {
2351
+ const result = visit(value[key]);
2352
+ if (result) return result;
2353
+ }
2354
+ };
2355
+ return visit(rules);
2356
+ }
2284
2357
  function isMpxStyleResourceQuery(query) {
2285
2358
  if (typeof query !== "string") return false;
2286
2359
  return MPX_STYLE_RESOURCE_QUERY_RE.test(query);
@@ -2289,6 +2362,12 @@ function getTailwindcssCssEntry(pkgDir) {
2289
2362
  return node_path.default.join(pkgDir, "index.css");
2290
2363
  }
2291
2364
  function resolveMpxWebpackPluginDir(compiler) {
2365
+ const rulePluginDir = findMpxWebpackPluginDirFromRules([
2366
+ compiler?._module?.loaders,
2367
+ compiler?.loaders,
2368
+ compiler?.options?.module?.rules
2369
+ ]);
2370
+ if (rulePluginDir) return rulePluginDir;
2292
2371
  const candidates = [
2293
2372
  compiler?.context,
2294
2373
  compiler?.options?.context,
@@ -2306,6 +2385,45 @@ function resolveMpxWebpackPluginDir(compiler) {
2306
2385
  return;
2307
2386
  }
2308
2387
  }
2388
+ function rewriteMpxWebpackPluginRequests(request, mpxWebpackPluginDir, pathImpl = node_path.default) {
2389
+ return request.replace(MPX_WEBPACK_PLUGIN_REQUEST_RE, (_full, subpath) => {
2390
+ return pathImpl.join(mpxWebpackPluginDir, ...subpath.split("/"));
2391
+ });
2392
+ }
2393
+ function patchMpxWebpackPluginRequests(compiler, mpxWebpackPluginDir) {
2394
+ if (!mpxWebpackPluginDir || !compiler) return false;
2395
+ const pluginName = "weapp-tailwindcss-mpx-loader-resolve";
2396
+ const patchedCompilers = /* @__PURE__ */ new WeakSet();
2397
+ const patchedLoaderResolvers = /* @__PURE__ */ new WeakSet();
2398
+ const patchedResolverFactories = /* @__PURE__ */ new WeakSet();
2399
+ const install = (targetCompiler) => {
2400
+ if (!targetCompiler || typeof targetCompiler !== "object" || patchedCompilers.has(targetCompiler)) return;
2401
+ patchedCompilers.add(targetCompiler);
2402
+ ensureResolveLoaderAlias(targetCompiler, mpxWebpackPluginDir);
2403
+ const resolverFactory = targetCompiler.resolverFactory;
2404
+ if (resolverFactory && typeof resolverFactory === "object" && !patchedResolverFactories.has(resolverFactory)) {
2405
+ patchedResolverFactories.add(resolverFactory);
2406
+ installMpxResolveLoaderAlias(targetCompiler, mpxWebpackPluginDir);
2407
+ }
2408
+ targetCompiler.hooks?.normalModuleFactory?.tap?.(pluginName, (normalModuleFactory) => {
2409
+ const loaderResolver = normalModuleFactory.getResolver?.("loader");
2410
+ if (loaderResolver && typeof loaderResolver === "object" && !patchedLoaderResolvers.has(loaderResolver)) {
2411
+ patchedLoaderResolvers.add(loaderResolver);
2412
+ patchMpxLoaderResolver(loaderResolver, mpxWebpackPluginDir);
2413
+ }
2414
+ normalModuleFactory.hooks.beforeResolve.tap(pluginName, (resolveData) => {
2415
+ if (typeof resolveData?.request === "string") resolveData.request = rewriteMpxWebpackPluginRequests(resolveData.request, mpxWebpackPluginDir);
2416
+ });
2417
+ });
2418
+ targetCompiler.hooks?.compilation?.tap?.(pluginName, (compilation) => {
2419
+ compilation.hooks?.childCompiler?.tap?.(pluginName, (childCompiler) => {
2420
+ install(childCompiler);
2421
+ });
2422
+ });
2423
+ };
2424
+ install(compiler);
2425
+ return true;
2426
+ }
2309
2427
  function isMpxWebpackPluginRequest(request) {
2310
2428
  return request === "@mpxjs/webpack-plugin" || Boolean(request?.startsWith("@mpxjs/webpack-plugin/"));
2311
2429
  }
@@ -2344,27 +2462,39 @@ function ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir) {
2344
2462
  compiler.options.resolveLoader.alias = alias;
2345
2463
  addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
2346
2464
  }
2347
- function resolveMpxWebpackPluginRequire(compiler) {
2348
- const candidates = [
2349
- compiler?.context,
2350
- compiler?.options?.context,
2351
- node_process.default.cwd()
2352
- ].filter((item) => typeof item === "string" && item.length > 0);
2353
- for (const candidate of candidates) try {
2354
- const projectRequire = (0, node_module.createRequire)(node_path.default.join(candidate, "package.json"));
2355
- projectRequire.resolve("@mpxjs/webpack-plugin/package.json");
2356
- return projectRequire;
2357
- } catch {}
2358
- const cachedPackageJson = Object.keys(localRequire.cache).find((file) => MPX_WEBPACK_PLUGIN_PACKAGE_RE.test(file));
2359
- if (cachedPackageJson) return (0, node_module.createRequire)(cachedPackageJson);
2360
- return localRequire;
2465
+ function installMpxResolveLoaderAlias(compiler, mpxWebpackPluginDir) {
2466
+ const resolveOptionsHook = compiler?.resolverFactory?.hooks?.resolveOptions?.for?.("loader");
2467
+ if (!resolveOptionsHook?.tap) return;
2468
+ resolveOptionsHook.tap({
2469
+ name: "weapp-tailwindcss-mpx-loader-resolve",
2470
+ stage: 100
2471
+ }, (resolveOptions) => {
2472
+ const alias = Array.isArray(resolveOptions.alias) ? [...resolveOptions.alias] : { ...resolveOptions.alias };
2473
+ addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
2474
+ return {
2475
+ ...resolveOptions,
2476
+ alias
2477
+ };
2478
+ });
2479
+ }
2480
+ function patchMpxLoaderResolver(resolver, mpxWebpackPluginDir) {
2481
+ const originalResolve = resolver?.resolve;
2482
+ if (typeof originalResolve !== "function" || originalResolve.__weappTwPatched) return;
2483
+ const wrappedResolve = function(...args) {
2484
+ const requestIndex = typeof args[0] === "string" ? 1 : 2;
2485
+ const request = args[requestIndex];
2486
+ if (typeof request === "string" && isMpxWebpackPluginRequest(request)) args[requestIndex] = resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir);
2487
+ return originalResolve.apply(this, args);
2488
+ };
2489
+ wrappedResolve.__weappTwPatched = true;
2490
+ wrappedResolve.__weappTwOriginal = originalResolve;
2491
+ resolver.resolve = wrappedResolve;
2361
2492
  }
2362
- function patchMpxWebpackPluginNormalizeLib(compiler, mpxWebpackPluginDir) {
2493
+ function patchMpxWebpackPluginNormalizeLib(_compiler, mpxWebpackPluginDir) {
2363
2494
  if (!mpxWebpackPluginDir) return false;
2364
- const projectRequire = resolveMpxWebpackPluginRequire(compiler);
2365
2495
  let normalize;
2366
2496
  try {
2367
- normalize = projectRequire("@mpxjs/webpack-plugin/lib/utils/normalize");
2497
+ normalize = (0, node_module.createRequire)(node_path.default.join(mpxWebpackPluginDir, "package.json"))(node_path.default.join(mpxWebpackPluginDir, "lib/utils/normalize"));
2368
2498
  } catch {
2369
2499
  return false;
2370
2500
  }
@@ -2382,6 +2512,7 @@ function ensureMpxTailwindcssAliases(compiler, pkgDir) {
2382
2512
  compiler.options.resolve = compiler.options.resolve || {};
2383
2513
  const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(compiler);
2384
2514
  patchMpxWebpackPluginNormalizeLib(compiler, mpxWebpackPluginDir);
2515
+ patchMpxWebpackPluginRequests(compiler, mpxWebpackPluginDir);
2385
2516
  if (mpxWebpackPluginDir) ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir);
2386
2517
  const alias = compiler.options.resolve.alias ?? {};
2387
2518
  compiler.options.resolve.alias = alias;
@@ -2400,19 +2531,29 @@ function ensureMpxTailwindcssAliases(compiler, pkgDir) {
2400
2531
  return tailwindcssCssEntry;
2401
2532
  }
2402
2533
  function patchMpxLoaderResolve(loaderContext, pkgDir, enabled) {
2403
- if (!enabled || typeof loaderContext.resolve !== "function") return;
2404
- const originalResolve = loaderContext.resolve;
2405
- if (originalResolve.__weappTwPatched) return;
2534
+ if (!enabled) return;
2406
2535
  const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
2407
2536
  const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(loaderContext);
2408
- const wrappedResolve = function(context, request, callback) {
2409
- if (request === "tailwindcss" || request === "tailwindcss$") return callback(null, tailwindcssCssEntry);
2410
- if (request?.startsWith("tailwindcss/")) return callback(null, node_path.default.join(pkgDir, request.slice(12)));
2411
- if (mpxWebpackPluginDir && isMpxWebpackPluginRequest(request)) return callback(null, resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir));
2412
- return originalResolve.call(this, context, request, callback);
2413
- };
2414
- wrappedResolve.__weappTwPatched = true;
2415
- loaderContext.resolve = wrappedResolve;
2537
+ const originalResolve = loaderContext.resolve;
2538
+ if (typeof originalResolve === "function" && !originalResolve.__weappTwPatched) {
2539
+ const wrappedResolve = function(context, request, callback) {
2540
+ if (request === "tailwindcss" || request === "tailwindcss$") return callback(null, tailwindcssCssEntry);
2541
+ if (request?.startsWith("tailwindcss/")) return callback(null, node_path.default.join(pkgDir, request.slice(12)));
2542
+ if (mpxWebpackPluginDir && isMpxWebpackPluginRequest(request)) return callback(null, resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir));
2543
+ return originalResolve.call(this, context, request, callback);
2544
+ };
2545
+ wrappedResolve.__weappTwPatched = true;
2546
+ loaderContext.resolve = wrappedResolve;
2547
+ }
2548
+ const originalImportModule = loaderContext.importModule;
2549
+ if (mpxWebpackPluginDir && typeof originalImportModule === "function" && !originalImportModule.__weappTwPatched) {
2550
+ const wrappedImportModule = function(request, ...args) {
2551
+ const resolvedRequest = typeof request === "string" ? rewriteMpxWebpackPluginRequests(request, mpxWebpackPluginDir) : request;
2552
+ return originalImportModule.call(this, resolvedRequest, ...args);
2553
+ };
2554
+ wrappedImportModule.__weappTwPatched = true;
2555
+ loaderContext.importModule = wrappedImportModule;
2556
+ }
2416
2557
  }
2417
2558
  function setupMpxTailwindcssRedirect(pkgDir, enabled) {
2418
2559
  if (enabled) installTailwindcssCssRedirect(pkgDir);
@@ -2497,11 +2638,14 @@ function setupWebpackV5Loaders(options) {
2497
2638
  if (shouldRewriteCssImports && mpxCssImportRewrite) ensureMpxTailwindcssAliases(compiler, weappTailwindcssPackageDir);
2498
2639
  const runtimeClassSetLoader = runtimeLoaderPath ?? node_path.default.resolve(__dirname, "./weapp-tw-runtime-classset-loader.js");
2499
2640
  const shouldInjectRuntimeClassSetLoader = !generatorBranch.isWeb;
2500
- const shouldInjectCssImportRewriteLoader = shouldRewriteCssImports || generatorOptions.enabled && (!generatorBranch.isWeb || runtimeState.tailwindRuntime.majorVersion === 4);
2641
+ const shouldInjectCssGenerationLoader = generatorOptions.enabled && runtimeState.tailwindRuntime.majorVersion === 4 && (generatorTarget === "web" || generatorTarget === "weapp");
2642
+ const shouldInjectCssImportRewriteLoader = shouldRewriteCssImports || shouldInjectCssGenerationLoader;
2643
+ const runtimeCssGenerationLoader = shouldInjectCssGenerationLoader ? node_path.default.resolve(__dirname, "./weapp-tw-css-generation-loader.js") : void 0;
2501
2644
  const runtimeCssImportRewriteLoader = shouldInjectCssImportRewriteLoader ? node_path.default.resolve(__dirname, "./weapp-tw-css-import-rewrite-loader.js") : void 0;
2502
2645
  const runtimeClassSetLoaderExists = node_fs.default.existsSync(runtimeClassSetLoader);
2646
+ const runtimeCssGenerationLoaderExists = runtimeCssGenerationLoader ? node_fs.default.existsSync(runtimeCssGenerationLoader) : false;
2503
2647
  const runtimeCssImportRewriteLoaderExists = runtimeCssImportRewriteLoader ? node_fs.default.existsSync(runtimeCssImportRewriteLoader) : false;
2504
- const runtimeLoaderRewriteOptions = shouldInjectCssImportRewriteLoader ? {
2648
+ const runtimeLoaderRewriteOptions = shouldInjectCssImportRewriteLoader || shouldInjectCssGenerationLoader ? {
2505
2649
  pkgDir: weappTailwindcssPackageDir,
2506
2650
  compilerOptions,
2507
2651
  runtimeState,
@@ -2526,7 +2670,11 @@ function setupWebpackV5Loaders(options) {
2526
2670
  compiler.hooks.watchClose?.tap?.(require_context.pluginName, cleanupWebpackLoaderRuntime);
2527
2671
  compiler.hooks.shutdown?.tap?.(require_context.pluginName, cleanupWebpackLoaderRuntime);
2528
2672
  const { findRewriteAnchor, findClassSetAnchor } = loaderAnchorFinders;
2529
- const cssImportRewriteLoaderOptions = runtimeLoaderRewriteOptions ? { tailwindcssImportRewriteRuntimeKey: runtimeRegistryKey } : void 0;
2673
+ const cssImportRewriteLoaderOptions = runtimeLoaderRewriteOptions && shouldInjectCssImportRewriteLoader ? {
2674
+ generateCss: false,
2675
+ tailwindcssImportRewriteRuntimeKey: runtimeRegistryKey
2676
+ } : void 0;
2677
+ const cssGenerationLoaderOptions = runtimeLoaderRewriteOptions && shouldInjectCssGenerationLoader ? { tailwindcssImportRewriteRuntimeKey: runtimeRegistryKey } : void 0;
2530
2678
  if (runtimeCssImportRewriteLoader && shouldRewriteCssImports && cssImportRewriteLoaderOptions && mpxCssImportRewrite) injectMpxCssRewritePreRules(compiler, runtimeCssImportRewriteLoader, cssImportRewriteLoaderOptions);
2531
2679
  const createRuntimeClassSetLoaderEntry = () => ({
2532
2680
  loader: runtimeClassSetLoader,
@@ -2543,10 +2691,22 @@ function setupWebpackV5Loaders(options) {
2543
2691
  type: null
2544
2692
  };
2545
2693
  };
2694
+ const createCssGenerationLoaderEntry = () => {
2695
+ if (!runtimeCssGenerationLoader || !cssGenerationLoaderOptions) return null;
2696
+ return {
2697
+ loader: runtimeCssGenerationLoader,
2698
+ options: cssGenerationLoaderOptions,
2699
+ ident: null,
2700
+ type: null
2701
+ };
2702
+ };
2546
2703
  const { NormalModule } = compiler.webpack;
2547
2704
  compiler.hooks.compilation.tap(require_context.pluginName, (compilation) => {
2548
- NormalModule.getCompilationHooks(compilation).loader.tap(require_context.pluginName, (_loaderContext, module) => {
2549
- if (!(runtimeClassSetLoaderExists || runtimeCssImportRewriteLoaderExists)) return;
2705
+ NormalModule.getCompilationHooks(compilation).loader.tap({
2706
+ name: require_context.pluginName,
2707
+ stage: 100
2708
+ }, (_loaderContext, module) => {
2709
+ if (!(runtimeClassSetLoaderExists || runtimeCssGenerationLoaderExists || runtimeCssImportRewriteLoaderExists)) return;
2550
2710
  patchMpxLoaderResolve(_loaderContext, weappTailwindcssPackageDir, shouldRewriteCssImports && mpxCssImportRewrite);
2551
2711
  const loaderEntries = module.loaders || [];
2552
2712
  let rewriteAnchorIdx = findRewriteAnchor(loaderEntries);
@@ -2566,6 +2726,12 @@ function setupWebpackV5Loaders(options) {
2566
2726
  if (position === "after") loaderEntries.push(entry);
2567
2727
  else loaderEntries.unshift(entry);
2568
2728
  };
2729
+ if (cssGenerationLoaderOptions && runtimeCssGenerationLoaderExists && runtimeCssGenerationLoader && isCssModule && !hasLoaderEntry(loaderEntries, runtimeCssGenerationLoader)) {
2730
+ const generationLoaderEntry = createCssGenerationLoaderEntry();
2731
+ const anchorIndex = findRewriteAnchor(loaderEntries);
2732
+ if (generationLoaderEntry) if (anchorIndex === -1) anchorlessInsert(generationLoaderEntry, "after");
2733
+ else loaderEntries.splice(anchorIndex + 1, 0, generationLoaderEntry);
2734
+ }
2569
2735
  if (cssImportRewriteLoaderOptions && runtimeCssImportRewriteLoaderExists && runtimeCssImportRewriteLoader && isCssModule) {
2570
2736
  const existingIndex = loaderEntries.findIndex((entry) => entry.loader?.includes?.(runtimeCssImportRewriteLoader));
2571
2737
  const rewriteLoaderEntry = existingIndex !== -1 ? {
package/dist/webpack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_webpack = require("./webpack-Jpe048pQ.js");
2
+ const require_webpack = require("./webpack-nppysF4B.js");
3
3
  exports.WeappTailwindcss = require_webpack.WeappTailwindcss;
4
4
  exports.weappTailwindcss = require_webpack.WeappTailwindcss;
5
5
  exports.weappTailwindcssPackageDir = require_webpack.weappTailwindcssPackageDir;
package/dist/webpack.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { n as weappTailwindcssPackageDir, t as WeappTailwindcss } from "./webpack-CZ38fMGC.mjs";
1
+ import { n as weappTailwindcssPackageDir, t as WeappTailwindcss } from "./webpack-C_UUFRgj.mjs";
2
2
  export { WeappTailwindcss, WeappTailwindcss as weappTailwindcss, weappTailwindcssPackageDir };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "weapp-tailwindcss",
3
- "version": "5.1.14",
3
+ "version": "5.1.15",
4
4
  "description": "把 tailwindcss 原子化样式思想,带给小程序开发者们! bring tailwindcss to miniprogram developers!",
5
5
  "author": "ice breaker <1324318532@qq.com>",
6
6
  "license": "MIT",
@@ -187,6 +187,14 @@
187
187
  "access": "public",
188
188
  "registry": "https://registry.npmjs.org"
189
189
  },
190
+ "peerDependencies": {
191
+ "@mpxjs/webpack-plugin": ">=2.0.0 <3.0.0"
192
+ },
193
+ "peerDependenciesMeta": {
194
+ "@mpxjs/webpack-plugin": {
195
+ "optional": true
196
+ }
197
+ },
190
198
  "dependencies": {
191
199
  "@babel/parser": "~7.29.7",
192
200
  "@babel/traverse": "~7.29.7",
@@ -203,11 +211,11 @@
203
211
  "micromatch": "^4.0.8",
204
212
  "semver": "~7.8.5",
205
213
  "yaml": "^2.9.0",
214
+ "@weapp-tailwindcss/reset": "0.1.1",
206
215
  "@weapp-tailwindcss/logger": "2.0.0",
216
+ "@weapp-tailwindcss/postcss": "3.1.11",
207
217
  "@weapp-tailwindcss/shared": "2.0.0",
208
- "@weapp-tailwindcss/reset": "0.1.1",
209
218
  "tailwindcss-config": "2.0.1",
210
- "@weapp-tailwindcss/postcss": "3.1.10",
211
219
  "weapp-style-injector": "1.0.1"
212
220
  },
213
221
  "devDependencies": {