weapp-tailwindcss 5.0.0-next.22 → 5.0.0-next.24

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 (42) hide show
  1. package/dist/{bundle-state-CLnuf2CW.mjs → bundle-state-CP_BWXfx.mjs} +1 -1
  2. package/dist/{bundle-state-BnV8o2Yn.js → bundle-state-DXFq2nEo.js} +1 -1
  3. package/dist/core.js +1 -1
  4. package/dist/core.mjs +1 -1
  5. package/dist/{defaults-B1igPF_e.mjs → defaults-C6sIKXgC.mjs} +1 -1
  6. package/dist/{defaults-IHhYxNeU.js → defaults-D3cFX6Cq.js} +1 -1
  7. package/dist/defaults.js +1 -1
  8. package/dist/defaults.mjs +1 -1
  9. package/dist/{generator-CV_APjnB.js → generator-BcH28HU-.js} +1 -1
  10. package/dist/{generator-DPX8vA2P.mjs → generator-DdEgn8nG.mjs} +1 -1
  11. package/dist/generator.js +2 -2
  12. package/dist/generator.mjs +2 -2
  13. package/dist/gulp.js +5 -5
  14. package/dist/gulp.mjs +5 -5
  15. package/dist/{incremental-runtime-class-set-Cwpw6aZK.mjs → incremental-runtime-class-set-Bux7viee.mjs} +20 -11
  16. package/dist/{incremental-runtime-class-set-C6akmwlk.js → incremental-runtime-class-set-CWdfLHON.js} +20 -11
  17. package/dist/index.js +4 -4
  18. package/dist/index.mjs +4 -4
  19. package/dist/{postcss-Csaggbm7.js → postcss-cD5PXmMU.js} +2 -2
  20. package/dist/{postcss-ioX7S9x5.mjs → postcss-nk5bhdoV.mjs} +2 -2
  21. package/dist/postcss.js +1 -1
  22. package/dist/postcss.mjs +1 -1
  23. package/dist/{precheck-D1O5AWzy.mjs → precheck-DreRGvYH.mjs} +3 -3
  24. package/dist/{precheck-8pQbjqpq.js → precheck-DtYqujIx.js} +3 -3
  25. package/dist/presets.js +2 -2
  26. package/dist/presets.mjs +2 -2
  27. package/dist/{source-candidates-CnD4vyic.mjs → source-candidates-B7wmEa-G.mjs} +81 -10
  28. package/dist/{source-candidates-CUTNdsiz.js → source-candidates-lHtAHLQq.js} +81 -10
  29. package/dist/{tailwindcss-whZE3HpL.js → tailwindcss-BtUBeOes.js} +1 -1
  30. package/dist/{tailwindcss-B_JAdOQf.mjs → tailwindcss-DO-VVR5k.mjs} +1 -1
  31. package/dist/{v3-engine-DyIcbpZm.mjs → v3-engine-CXqgQZUc.mjs} +100 -13
  32. package/dist/{v3-engine-CCwvhRrQ.js → v3-engine-vHlppqaZ.js} +100 -13
  33. package/dist/{vite-k4Nlk42j.js → vite-BkNDGBZ2.js} +65 -15
  34. package/dist/{vite-BcXuBYy3.mjs → vite-BthAm8kt.mjs} +65 -15
  35. package/dist/vite.js +1 -1
  36. package/dist/vite.mjs +1 -1
  37. package/dist/weapp-tw-css-import-rewrite-loader.js +115 -19
  38. package/dist/{webpack-C4pViZ7V.mjs → webpack-hPc8wUAi.mjs} +5 -5
  39. package/dist/{webpack-DC7v6ylA.js → webpack-prCus5xn.js} +5 -5
  40. package/dist/webpack.js +1 -1
  41. package/dist/webpack.mjs +1 -1
  42. package/package.json +4 -4
@@ -1,11 +1,11 @@
1
- import { B as createDebug, E as filterUnsupportedMiniProgramTailwindV4Candidates, G as omitUndefined, K as findNearestPackageRoot, U as findTailwindConfig, W as resolveTailwindcssOptions, _ as resolveViteSourceScanEntries, g as resolveTailwindV4EntriesFromCssCached, l as getRuntimeClassSetSignature, m as discoverTailwindV4CssEntries, p as createViteSourceScanMatcher, v as resolveViteTailwindV4CssDependencies } from "./v3-engine-DyIcbpZm.mjs";
2
- import { i as normalizeWeappTailwindcssGeneratorOptions } from "./generator-DPX8vA2P.mjs";
3
- import { a as validateCandidatesByGenerator, c as hasTailwindSourceDirectives, i as generateCssByGenerator, l as normalizeTailwindSourceForGenerator, n as createHmrTimingRecorder, o as processCachedTask, s as hasTailwindRootDirectives, t as createBundleRuntimeClassSetManager, u as hasTailwindGeneratedCssMarkers } from "./incremental-runtime-class-set-Cwpw6aZK.mjs";
4
- import { a as analyzeSource, c as isClassContextLiteralPath, g as createTailwindRuntimeReadyPromise, h as collectRuntimeClassSet, i as createAttributeMatcher, l as replaceWxml, m as toCustomAttributesEntities, n as getCompilerContext, o as JsTokenUpdater, p as vitePluginName, r as generateCode, s as _defineProperty, t as shouldSkipJsTransform, u as babelParse, v as refreshTailwindRuntimeState } from "./precheck-D1O5AWzy.mjs";
1
+ import { B as createDebug, E as filterUnsupportedMiniProgramTailwindV4Candidates, G as omitUndefined, K as findNearestPackageRoot, U as findTailwindConfig, W as resolveTailwindcssOptions, _ as resolveViteSourceScanEntries, g as resolveTailwindV4EntriesFromCssCached, l as getRuntimeClassSetSignature, m as discoverTailwindV4CssEntries, p as createViteSourceScanMatcher, v as resolveViteTailwindV4CssDependencies } from "./v3-engine-CXqgQZUc.mjs";
2
+ import { i as normalizeWeappTailwindcssGeneratorOptions } from "./generator-DdEgn8nG.mjs";
3
+ import { a as validateCandidatesByGenerator, c as hasTailwindSourceDirectives, i as generateCssByGenerator, l as normalizeTailwindSourceForGenerator, n as createHmrTimingRecorder, o as processCachedTask, s as hasTailwindRootDirectives, t as createBundleRuntimeClassSetManager, u as hasTailwindGeneratedCssMarkers } from "./incremental-runtime-class-set-Bux7viee.mjs";
4
+ import { a as analyzeSource, c as isClassContextLiteralPath, g as createTailwindRuntimeReadyPromise, h as collectRuntimeClassSet, i as createAttributeMatcher, l as replaceWxml, m as toCustomAttributesEntities, n as getCompilerContext, o as JsTokenUpdater, p as vitePluginName, r as generateCode, s as _defineProperty, t as shouldSkipJsTransform, u as babelParse, v as refreshTailwindRuntimeState } from "./precheck-DreRGvYH.mjs";
5
5
  import { o as resolveUniUtsPlatform } from "./utils-CGBVVNm6.mjs";
6
- import { c as upsertTailwindV4CssSource, i as resolveUniAppXOptions, r as isUniAppXEnabled, s as hasConfiguredTailwindV4CssRoots } from "./tailwindcss-B_JAdOQf.mjs";
7
- import { n as isSourceCandidateRequest, t as createSourceCandidateCollector } from "./source-candidates-CnD4vyic.mjs";
8
- import { a as createBundleModuleGraphOptions, b as toAbsoluteOutputPath, c as hasBundlerGeneratedCssMarker, d as resolvePluginDisabledState, f as cleanUrl, g as isSourceStyleRequest, h as slash, i as applyLinkedResults, l as stripBundlerGeneratedCssMarkers, m as isCSSRequest, n as createBundleBuildState, o as pushConcurrentTaskFactories, p as formatPostcssSourceMap, r as updateBundleBuildState, s as createBundlerGeneratedCssMarker, t as buildBundleSnapshot, u as resolvePackageDir, v as normalizeOutputPathKey } from "./bundle-state-CLnuf2CW.mjs";
6
+ import { c as upsertTailwindV4CssSource, i as resolveUniAppXOptions, r as isUniAppXEnabled, s as hasConfiguredTailwindV4CssRoots } from "./tailwindcss-DO-VVR5k.mjs";
7
+ import { n as isSourceCandidateRequest, t as createSourceCandidateCollector } from "./source-candidates-B7wmEa-G.mjs";
8
+ import { a as createBundleModuleGraphOptions, b as toAbsoluteOutputPath, c as hasBundlerGeneratedCssMarker, d as resolvePluginDisabledState, f as cleanUrl, g as isSourceStyleRequest, h as slash, i as applyLinkedResults, l as stripBundlerGeneratedCssMarkers, m as isCSSRequest, n as createBundleBuildState, o as pushConcurrentTaskFactories, p as formatPostcssSourceMap, r as updateBundleBuildState, s as createBundlerGeneratedCssMarker, t as buildBundleSnapshot, u as resolvePackageDir, v as normalizeOutputPathKey } from "./bundle-state-CP_BWXfx.mjs";
9
9
  import { t as logger$1 } from "./logger-CZUxvJJD.mjs";
10
10
  import fs, { existsSync, readFileSync } from "node:fs";
11
11
  import postcss from "postcss";
@@ -559,7 +559,7 @@ function createCssHandlerOptions(opts, majorVersion, file) {
559
559
  }
560
560
  function shouldGenerateCssByGenerator(opts, file, rawSource, processed) {
561
561
  const generatorOptions = normalizeWeappTailwindcssGeneratorOptions(opts.generator);
562
- if (generatorOptions.target === "web") return false;
562
+ if (generatorOptions.target === "web" && opts.twPatcher.majorVersion !== 3) return false;
563
563
  if (hasTailwindGeneratedCssMarkers(rawSource) || hasTailwindSourceDirectives(rawSource, { importFallback: generatorOptions.importFallback })) return true;
564
564
  if (opts.twPatcher.majorVersion === 3) return false;
565
565
  return processed && shouldFinalizeProcessedCssAsset(opts, file);
@@ -635,7 +635,7 @@ function createViteCssFinalizerOutputPlugin(context) {
635
635
  styleHandler: opts.styleHandler,
636
636
  debug
637
637
  }) : void 0;
638
- const nextCss = generated?.css ?? (await opts.styleHandler(rawSource, cssHandlerOptions)).css;
638
+ const nextCss = generated?.css ?? (generatorOptions.target === "web" ? rawSource : (await opts.styleHandler(rawSource, cssHandlerOptions)).css);
639
639
  if (generated) {
640
640
  registerGeneratorDependencies$1(this, generated.dependencies);
641
641
  debug("css finalizer generated result: %s bytes=%d", file, nextCss.length);
@@ -991,6 +991,7 @@ function createGenerateBundleHook(context) {
991
991
  const { cache, onEnd, onStart, onUpdate, styleHandler, templateHandler, jsHandler, uniAppX } = opts;
992
992
  const generatorOptions = normalizeWeappTailwindcssGeneratorOptions(opts.generator);
993
993
  const isWebGeneratorTarget = generatorOptions.target === "web";
994
+ const shouldGenerateWebCssByGenerator = isWebGeneratorTarget && runtimeState.twPatcher.majorVersion === 3;
994
995
  const { getCssHandlerOptions, getCssUserHandlerOptions } = cssHandlerOptions;
995
996
  await runtimeState.readyPromise;
996
997
  debug("start");
@@ -1032,7 +1033,7 @@ function createGenerateBundleHook(context) {
1032
1033
  const snapshotStart = performance.now();
1033
1034
  const snapshot = buildBundleSnapshot(bundle, opts, outDir, state, disableDirtyOptimization || !useIncrementalMode);
1034
1035
  recordTimingDetail("snapshot", snapshotStart);
1035
- const useBundleRuntimeClassSet = useIncrementalMode || runtimeState.twPatcher.majorVersion === 4;
1036
+ const useBundleRuntimeClassSet = !isWebGeneratorTarget && (useIncrementalMode || runtimeState.twPatcher.majorVersion === 4);
1036
1037
  const forceRuntimeRefreshBySource = useIncrementalMode && hasRuntimeAffectingSourceChanges(snapshot.runtimeAffectingChangedByType);
1037
1038
  const processFiles = snapshot.processFiles;
1038
1039
  logBundleProcessPlan({
@@ -1052,7 +1053,7 @@ function createGenerateBundleHook(context) {
1052
1053
  const hasRuntimeAffectingChanges = hasRuntimeAffectingSourceChanges(snapshot.runtimeAffectingChangedByType);
1053
1054
  const useV3OxideSourceRuntime = runtimeState.twPatcher.majorVersion === 3 && sourceCandidates.size > 0 && hasCssAssetEntry && !forceRuntimeRefreshByEnv && !disableV3OxideSourceRuntime;
1054
1055
  const runtimeStart = performance.now();
1055
- const runtime = useV3OxideSourceRuntime ? await ensureBundleRuntimeClassSet(snapshot, forceRuntimeRefreshByEnv, {
1056
+ const runtime = isWebGeneratorTarget && !shouldGenerateWebCssByGenerator ? /* @__PURE__ */ new Set() : useV3OxideSourceRuntime ? await ensureBundleRuntimeClassSet(snapshot, forceRuntimeRefreshByEnv, {
1056
1057
  allowBaselineOnlyInitialSync: true,
1057
1058
  baseClassSet: sourceCandidates
1058
1059
  }) : useBundleRuntimeClassSet ? await ensureBundleRuntimeClassSet(snapshot, forceRuntimeRefreshByEnv, { allowBaselineOnlyInitialSync: buildCommand }) : await context.ensureRuntimeClassSet(forceRuntimeRefreshByEnv);
@@ -1113,6 +1114,10 @@ function createGenerateBundleHook(context) {
1113
1114
  const { file, output: originalSource, source: originalEntrySource, type } = entry;
1114
1115
  if (type === "html" && originalSource.type === "asset") {
1115
1116
  metrics.html.total++;
1117
+ if (isWebGeneratorTarget) {
1118
+ debug("html skip web target: %s", file);
1119
+ continue;
1120
+ }
1116
1121
  if (!processFiles.html.has(file)) continue;
1117
1122
  const rawSource = originalEntrySource;
1118
1123
  tasks.push(timeTask("html", () => processCachedTask({
@@ -1177,7 +1182,7 @@ function createGenerateBundleHook(context) {
1177
1182
  debug("css skip vite-processed asset: %s", outputFile);
1178
1183
  continue;
1179
1184
  }
1180
- if (isWebGeneratorTarget) {
1185
+ if (isWebGeneratorTarget && !shouldGenerateWebCssByGenerator) {
1181
1186
  applyCssResult(rawSource);
1182
1187
  markCssAssetProcessed?.(originalSource, outputFile);
1183
1188
  onUpdate(outputFile, rawSource, rawSource);
@@ -1254,6 +1259,12 @@ function createGenerateBundleHook(context) {
1254
1259
  debug("css handle via tailwind v%s engine(%s): %s", runtimeState.twPatcher.majorVersion, generated.target, outputFile);
1255
1260
  return generated.css;
1256
1261
  }
1262
+ if (isWebGeneratorTarget) {
1263
+ metrics.css.elapsed += measureElapsed(start);
1264
+ metrics.css.transformed++;
1265
+ debug("css preserve web target: %s", outputFile);
1266
+ return rawSource;
1267
+ }
1257
1268
  const { css } = await styleHandler(rawSource, getCssHandlerOptions(file));
1258
1269
  if (debugCssDiff) debug("css diff %s: %s", file, summarizeStringDiff(rawSource, css));
1259
1270
  metrics.css.elapsed += measureElapsed(start);
@@ -1272,6 +1283,10 @@ function createGenerateBundleHook(context) {
1272
1283
  }
1273
1284
  if (type !== "js") continue;
1274
1285
  metrics.js.total++;
1286
+ if (isWebGeneratorTarget) {
1287
+ debug("js skip web target: %s", file);
1288
+ continue;
1289
+ }
1275
1290
  const shouldTransformJs = !useIncrementalMode || processFiles.js.has(file);
1276
1291
  if (!shouldTransformJs) debug("js skip transform (clean), replay cache: %s", file);
1277
1292
  if (originalSource.type === "chunk") {
@@ -1621,13 +1636,14 @@ function stripTailwindConfigDirectives(code) {
1621
1636
  return code.replace(/^\s*@config\s+(?:"[^"]+"|'[^']+')[^;\n]*;\s*$/gm, "");
1622
1637
  }
1623
1638
  function createRewriteCssImportsPlugins(options) {
1624
- if (!options.shouldRewrite) return [];
1639
+ if (!options.shouldRewrite && !options.shouldOwnTailwindGeneration) return [];
1625
1640
  const { appType, getAppType, rootImport, shouldOwnTailwindGeneration, weappTailwindcssDirPosix } = options;
1626
1641
  const resolveAppType = () => getAppType?.() ?? appType;
1627
1642
  return [{
1628
1643
  name: `${vitePluginName}:rewrite-css-imports`,
1629
1644
  enforce: "pre",
1630
1645
  resolveId(id, importer) {
1646
+ if (!options.shouldRewrite) return null;
1631
1647
  const replacement = resolveTailwindcssImport(id, weappTailwindcssDirPosix, {
1632
1648
  join: joinPosixPath,
1633
1649
  appType: resolveAppType(),
@@ -1649,6 +1665,7 @@ function createRewriteCssImportsPlugins(options) {
1649
1665
  };
1650
1666
  }
1651
1667
  }
1668
+ if (!options.shouldRewrite) return null;
1652
1669
  const rewritten = rewriteTailwindcssImportsInCode(code, weappTailwindcssDirPosix, {
1653
1670
  join: joinPosixPath,
1654
1671
  appType: resolveAppType(),
@@ -1858,7 +1875,9 @@ function WeappTailwindcss(options = {}) {
1858
1875
  const tailwindcssMajorVersion = initialTwPatcher.majorVersion ?? 0;
1859
1876
  const shouldOwnTailwindGeneration = !disabledOptions.plugin;
1860
1877
  const shouldRewriteCssImports = tailwindcssMajorVersion >= 4;
1861
- const shouldInferAppType = !hasExplicitAppType && opts.generator?.target !== "web";
1878
+ const generatorOptions = normalizeWeappTailwindcssGeneratorOptions(opts.generator);
1879
+ const isWebGeneratorTarget = generatorOptions.target === "web";
1880
+ const shouldInferAppType = !hasExplicitAppType && generatorOptions.target !== "web";
1862
1881
  const hasInitialTailwindCssRoots = hasConfiguredTailwindV4CssRoots({
1863
1882
  ...options,
1864
1883
  cssEntries: opts.cssEntries ?? options.cssEntries
@@ -1933,6 +1952,7 @@ function WeappTailwindcss(options = {}) {
1933
1952
  const viteProcessedCssAssetResults = /* @__PURE__ */ new Map();
1934
1953
  const rememberedMainCssSources = /* @__PURE__ */ new Map();
1935
1954
  const rememberedMainCssSignatureByFile = /* @__PURE__ */ new Map();
1955
+ const tailwindRootCssModuleIds = /* @__PURE__ */ new Set();
1936
1956
  const { runtimeState, refreshRuntimeState, ensureRuntimeClassSet, ensureBundleRuntimeClassSet } = createViteRuntimeClassSet({
1937
1957
  opts,
1938
1958
  initialTwPatcher,
@@ -1957,6 +1977,9 @@ function WeappTailwindcss(options = {}) {
1957
1977
  recordedGeneratorCandidates = new Set(candidates);
1958
1978
  };
1959
1979
  const getRecordedGeneratorCandidates = () => recordedGeneratorCandidates;
1980
+ const invalidateRecordedGeneratorCandidates = () => {
1981
+ recordedGeneratorCandidates = void 0;
1982
+ };
1960
1983
  const getSourceCandidates = () => sourceCandidateCollector.values();
1961
1984
  const getSourceCandidatesForEntries = (entries) => sourceCandidateCollector.valuesForEntries(entries);
1962
1985
  const isWatchBuild = () => resolvedConfig?.command === "build" && resolvedConfig.build.watch != null;
@@ -2114,6 +2137,28 @@ function WeappTailwindcss(options = {}) {
2114
2137
  const markViteProcessedCssSource = (file) => {
2115
2138
  viteProcessedCssSourceFiles.add(normalizeViteProcessedCssFile(file));
2116
2139
  };
2140
+ const rememberTailwindRootCssModule = (id) => {
2141
+ if (!shouldOwnTailwindGeneration) return;
2142
+ tailwindRootCssModuleIds.add(id);
2143
+ tailwindRootCssModuleIds.add(cleanUrl(id));
2144
+ };
2145
+ const resolveHotTailwindCssModules = (ctx) => {
2146
+ const modules = [];
2147
+ const seenModules = /* @__PURE__ */ new Set();
2148
+ for (const id of tailwindRootCssModuleIds) {
2149
+ const candidates = [ctx.server.moduleGraph.getModuleById(id), ...ctx.server.moduleGraph.getModulesByFile(id) ?? []].filter((mod) => {
2150
+ if (mod == null) return false;
2151
+ return isSourceStyleRequest(mod.id ?? mod.url);
2152
+ });
2153
+ for (const mod of candidates) {
2154
+ if (seenModules.has(mod)) continue;
2155
+ seenModules.add(mod);
2156
+ ctx.server.moduleGraph.invalidateModule(mod);
2157
+ modules.push(mod);
2158
+ }
2159
+ }
2160
+ return modules;
2161
+ };
2117
2162
  const matchesViteProcessedCssSource = (candidate) => {
2118
2163
  const normalized = normalizeViteProcessedCssFile(candidate);
2119
2164
  return viteProcessedCssSourceFiles.has(normalized);
@@ -2155,6 +2200,7 @@ function WeappTailwindcss(options = {}) {
2155
2200
  for (const dependency of generated.dependencies) hookContext?.addWatchFile?.(dependency);
2156
2201
  viteGeneratedCssByFile.set(file, generated.css);
2157
2202
  markViteProcessedCssSource(file);
2203
+ rememberTailwindRootCssModule(id);
2158
2204
  recordGeneratorCandidates(runtime);
2159
2205
  rememberMainCssSource(file, code);
2160
2206
  debug("css generated for vite postcss pipeline: %s bytes=%d", file, generated.css.length);
@@ -2213,6 +2259,7 @@ function WeappTailwindcss(options = {}) {
2213
2259
  });
2214
2260
  const isIosPlatform = resolveUniUtsPlatform().isAppIos;
2215
2261
  const prepareTailwindGeneration = async () => {
2262
+ if (isWebGeneratorTarget && runtimeState.twPatcher.majorVersion !== 3) return;
2216
2263
  if (shouldDiscoverAutoCssSources()) await discoverAndRegisterAutoCssSources();
2217
2264
  await syncSourceCandidateScan();
2218
2265
  };
@@ -2263,8 +2310,11 @@ function WeappTailwindcss(options = {}) {
2263
2310
  }, { emit: false });
2264
2311
  },
2265
2312
  async handleHotUpdate(ctx) {
2266
- await hmrTimingRecorder.measure("sourceCandidates.handleHotUpdate", async () => {
2313
+ return hmrTimingRecorder.measure("sourceCandidates.handleHotUpdate", async () => {
2267
2314
  await syncChangedSourceCandidateFile(ctx.file);
2315
+ invalidateRecordedGeneratorCandidates();
2316
+ const cssModules = resolveHotTailwindCssModules(ctx);
2317
+ return cssModules.length > 0 ? [...ctx.modules, ...cssModules] : void 0;
2268
2318
  }, { emit: false });
2269
2319
  },
2270
2320
  async buildStart() {
package/dist/vite.js CHANGED
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_vite = require("./vite-k4Nlk42j.js");
2
+ const require_vite = require("./vite-BkNDGBZ2.js");
3
3
  exports.WeappTailwindcss = require_vite.WeappTailwindcss;
4
4
  exports.weappTailwindcss = require_vite.WeappTailwindcss;
package/dist/vite.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as WeappTailwindcss } from "./vite-BcXuBYy3.mjs";
1
+ import { t as WeappTailwindcss } from "./vite-BthAm8kt.mjs";
2
2
  export { WeappTailwindcss, WeappTailwindcss as weappTailwindcss };
@@ -1378,6 +1378,37 @@ function createTailwindV4DefaultColorThemeCss() {
1378
1378
  //#region src/tailwindcss/v4-engine/generator.ts
1379
1379
  const incrementalGenerateCache$1 = /* @__PURE__ */ new Map();
1380
1380
  const incrementalGenerateTaskCache = /* @__PURE__ */ new Map();
1381
+ const BARE_RPX_TEXT_CANDIDATE_RE = /(^|:)text-\[([-+]?(?:\d+|\d*\.\d+)rpx)\](.*)$/u;
1382
+ const RPX_TEXT_LENGTH_SELECTOR_RE = /text-\\\[length\\:((?:\\[.+-]|[+\-.\d])+rpx)\\\]/g;
1383
+ const TAILWIND_V4_DEFAULT_IGNORED_SOURCE_PATTERNS = [
1384
+ "**/.git/**",
1385
+ "**/.hg/**",
1386
+ "**/.jj/**",
1387
+ "**/.next/**",
1388
+ "**/.parcel-cache/**",
1389
+ "**/.pnpm-store/**",
1390
+ "**/.svelte-kit/**",
1391
+ "**/.svn/**",
1392
+ "**/.turbo/**",
1393
+ "**/.venv/**",
1394
+ "**/.vercel/**",
1395
+ "**/.yarn/**",
1396
+ "**/__pycache__/**",
1397
+ "**/node_modules/**",
1398
+ "**/venv/**",
1399
+ "**/*.less",
1400
+ "**/*.lock",
1401
+ "**/*.sass",
1402
+ "**/*.scss",
1403
+ "**/*.styl",
1404
+ "**/*.log",
1405
+ "**/package-lock.json",
1406
+ "**/pnpm-lock.yaml",
1407
+ "**/bun.lockb",
1408
+ "**/.gitignore",
1409
+ "**/.env",
1410
+ "**/.env.*"
1411
+ ];
1381
1412
  function findLeadingImportInsertionIndex(css) {
1382
1413
  const importPattern = /(?:^|\n)\s*@import\b[^;]*;/g;
1383
1414
  let insertionIndex = 0;
@@ -1397,6 +1428,38 @@ function applyMiniProgramTailwindV4DefaultColorCss(css) {
1397
1428
  function collectCandidates$1(candidates) {
1398
1429
  return new Set(candidates ?? []);
1399
1430
  }
1431
+ function normalizeRpxTextCandidate(candidate) {
1432
+ return candidate.replace(BARE_RPX_TEXT_CANDIDATE_RE, "$1text-[length:$2]$3");
1433
+ }
1434
+ function normalizeRpxTextCandidates(candidates) {
1435
+ const normalized = /* @__PURE__ */ new Set();
1436
+ const restoreCandidates = /* @__PURE__ */ new Map();
1437
+ for (const candidate of candidates) {
1438
+ const normalizedCandidate = normalizeRpxTextCandidate(candidate);
1439
+ normalized.add(normalizedCandidate);
1440
+ if (normalizedCandidate !== candidate) restoreCandidates.set(normalizedCandidate, candidate);
1441
+ }
1442
+ return {
1443
+ candidates: normalized,
1444
+ restoreCandidates
1445
+ };
1446
+ }
1447
+ function restoreRpxTextCandidates(candidates, restoreCandidates) {
1448
+ if (restoreCandidates.size === 0) return new Set(candidates);
1449
+ return new Set([...candidates].map((candidate) => restoreCandidates.get(candidate) ?? candidate));
1450
+ }
1451
+ function normalizeCssEscapedRpxSelectorValue(value) {
1452
+ return value.replace(/\\([.+-])/g, "$1");
1453
+ }
1454
+ function restoreRpxTextCssSelectors(css, restoreCandidates) {
1455
+ if (restoreCandidates.size === 0 || !css.includes("text-\\[length\\:")) return css;
1456
+ const restoredValues = new Set([...restoreCandidates.keys()].map((candidate) => {
1457
+ return BARE_RPX_TEXT_CANDIDATE_RE.exec(candidate.replace("[length:", "["))?.[2];
1458
+ }).filter((value) => Boolean(value)));
1459
+ return css.replace(RPX_TEXT_LENGTH_SELECTOR_RE, (match, value) => {
1460
+ return restoredValues.has(normalizeCssEscapedRpxSelectorValue(value)) ? `text-\\[${value}\\]` : match;
1461
+ });
1462
+ }
1400
1463
  function createStableJson$2(value) {
1401
1464
  if (value === void 0) return "undefined";
1402
1465
  if (value === null || typeof value !== "object") return JSON.stringify(value);
@@ -1553,6 +1616,20 @@ function removeUnlayeredTailwindV4PreflightImports(css) {
1553
1616
  function resolveSourceBase$1(base, sourcePath) {
1554
1617
  return node_path.default.isAbsolute(sourcePath) ? sourcePath : node_path.default.resolve(base, sourcePath);
1555
1618
  }
1619
+ function createDefaultIgnoredScanSources(base) {
1620
+ return TAILWIND_V4_DEFAULT_IGNORED_SOURCE_PATTERNS.map((pattern) => ({
1621
+ base,
1622
+ pattern,
1623
+ negated: true
1624
+ }));
1625
+ }
1626
+ function normalizeCssDefinedScanSources(base, entries) {
1627
+ return entries.length > 0 && entries.every((entry) => entry.negated) ? [{
1628
+ base,
1629
+ pattern: "**/*",
1630
+ negated: false
1631
+ }, ...entries] : entries;
1632
+ }
1556
1633
  async function resolveCssDefinedScanSources(source) {
1557
1634
  let importSourceBase;
1558
1635
  let hasSourceNone = false;
@@ -1573,11 +1650,15 @@ async function resolveCssDefinedScanSources(source) {
1573
1650
  });
1574
1651
  const sourcePatterns = await resolveCssSourceEntries(root, source.base, "**/*");
1575
1652
  if (!importSourceBase) {
1576
- if (sourcePatterns.length > 0) return sourcePatterns;
1653
+ if (sourcePatterns.length > 0) return [...normalizeCssDefinedScanSources(source.base, sourcePatterns), ...createDefaultIgnoredScanSources(source.base)];
1577
1654
  if (hasSourceNone) return false;
1578
1655
  return;
1579
1656
  }
1580
- return [await resolveTailwindSourceEntry(".", importSourceBase, false, "**/*"), ...sourcePatterns];
1657
+ return [
1658
+ await resolveTailwindSourceEntry(".", importSourceBase, false, "**/*"),
1659
+ ...sourcePatterns,
1660
+ ...createDefaultIgnoredScanSources(importSourceBase)
1661
+ ];
1581
1662
  }
1582
1663
  async function resolveScanSources(source, scanSources) {
1583
1664
  if (scanSources !== true) return scanSources;
@@ -1617,16 +1698,18 @@ function createTailwindV4Engine(source) {
1617
1698
  const engine = (0, tailwindcss_patch.createTailwindV4Engine)(createCompatibleSource(generateSource, target, tailwindcssV3Compatibility));
1618
1699
  const resolvedScanSources = await resolveScanSources(generateSource, scanSources);
1619
1700
  const filesystemCandidates = Array.isArray(resolvedScanSources) ? new Set(await (0, tailwindcss_patch.extractRawCandidates)(resolvedScanSources)) : void 0;
1620
- const resolvedCandidates = resolveTargetCandidates(new Set([...collectCandidates$1(patchOptions.candidates), ...filesystemCandidates ?? []]), target);
1701
+ const normalizedCandidates = normalizeRpxTextCandidates(resolveTargetCandidates(new Set([...collectCandidates$1(patchOptions.candidates), ...filesystemCandidates ?? []]), target));
1621
1702
  const result = await engine.generate(omitUndefined({
1622
1703
  scanSources: false,
1623
1704
  ...patchOptions,
1624
- candidates: resolvedCandidates
1705
+ candidates: normalizedCandidates.candidates
1625
1706
  }));
1626
- const rawCss = result.css;
1707
+ const rawCss = restoreRpxTextCssSelectors(result.css, normalizedCandidates.restoreCandidates);
1627
1708
  const css = await transformTailwindV4CssByTarget(rawCss, target, styleOptions);
1628
1709
  return {
1629
1710
  ...result,
1711
+ classSet: restoreRpxTextCandidates(result.classSet, normalizedCandidates.restoreCandidates),
1712
+ rawCandidates: restoreRpxTextCandidates(result.rawCandidates, normalizedCandidates.restoreCandidates),
1630
1713
  css,
1631
1714
  rawCss,
1632
1715
  target
@@ -1666,15 +1749,18 @@ function createTailwindV4Engine(source) {
1666
1749
  target: cached.target
1667
1750
  };
1668
1751
  return runIncrementalGenerateTask(cacheKey, requestedCandidates, options.scanSources, async () => {
1669
- const cssByCandidate = (await cached.designSystemPromise).candidatesToCss(missingCandidates);
1752
+ const designSystem = await cached.designSystemPromise;
1753
+ const normalizedMissing = normalizeRpxTextCandidates(missingCandidates);
1754
+ const normalizedMissingCandidates = [...normalizedMissing.candidates];
1755
+ const cssByCandidate = designSystem.candidatesToCss(normalizedMissingCandidates);
1670
1756
  const rawCssParts = [];
1671
1757
  const classSet = /* @__PURE__ */ new Set();
1672
- for (let index = 0; index < missingCandidates.length; index += 1) {
1673
- const candidate = missingCandidates[index];
1758
+ for (let index = 0; index < normalizedMissingCandidates.length; index += 1) {
1759
+ const candidate = normalizedMissingCandidates[index];
1674
1760
  const css = cssByCandidate[index];
1675
1761
  if (candidate && typeof css === "string" && css.trim().length > 0) {
1676
- rawCssParts.push(css);
1677
- classSet.add(candidate);
1762
+ rawCssParts.push(restoreRpxTextCssSelectors(css, normalizedMissing.restoreCandidates));
1763
+ classSet.add(normalizedMissing.restoreCandidates.get(candidate) ?? candidate);
1678
1764
  }
1679
1765
  }
1680
1766
  const rawCss = rawCssParts.join("\n");
@@ -2090,6 +2176,7 @@ async function resolveTailwindV4EntriesFromCss(css, base) {
2090
2176
  let hasTailwindCssImport = false;
2091
2177
  const [sourceEntries, configEntries] = await Promise.all([resolveCssSourceEntries(root, base, VITE_SOURCE_CANDIDATE_PATTERN), resolveConfigContentEntries(root, base)]);
2092
2178
  const entries = [...configEntries.entries, ...sourceEntries];
2179
+ const hasPositiveEntries = entries.some((entry) => !entry.negated);
2093
2180
  const inlineCandidates = collectCssInlineSourceCandidates(root);
2094
2181
  root.walkAtRules("import", (rule) => {
2095
2182
  if (!isTailwindCssImport(rule.params)) return;
@@ -2114,7 +2201,7 @@ async function resolveTailwindV4EntriesFromCss(css, base) {
2114
2201
  inlineCandidates,
2115
2202
  dependencies: configEntries.dependencies
2116
2203
  };
2117
- if (entries.length > 0) return {
2204
+ if (hasPositiveEntries) return {
2118
2205
  entries,
2119
2206
  explicit: true,
2120
2207
  inlineCandidates,
@@ -2127,7 +2214,7 @@ async function resolveTailwindV4EntriesFromCss(css, base) {
2127
2214
  dependencies: configEntries.dependencies
2128
2215
  };
2129
2216
  return hasTailwindCssImport ? {
2130
- entries: [],
2217
+ entries,
2131
2218
  explicit: false,
2132
2219
  inlineCandidates,
2133
2220
  dependencies: configEntries.dependencies
@@ -2908,8 +2995,8 @@ const TAILWIND_ROOT_DIRECTIVE_NAMES = new Set([
2908
2995
  "utility",
2909
2996
  "variant"
2910
2997
  ]);
2911
- const TAILWIND_ROOT_DIRECTIVE_RE = /@(?:import\s+(?:url\(\s*)?["']?tailwindcss4?(?:\/[^"')\s]*)?|tailwind|config|custom-variant|plugin|source|theme|utility|variant)\b/;
2912
- const TAILWIND_EXTRACTABLE_DIRECTIVE_RE = /^\s*@(?:import|tailwind|config|source|reference|plugin)\b[\s\S]*?(?:;|$)/;
2998
+ const TAILWIND_ROOT_DIRECTIVE_RE = /@(?:import\s+(?:url\(\s*)?["']?tailwindcss4?(?:\/[^"')\s]*)?|(?:use|forward)\s+(?:url\(\s*)?["']?tailwindcss4?(?:\/[^"')\s]*)?|tailwind|config|custom-variant|plugin|source|theme|utility|variant)\b/;
2999
+ const TAILWIND_EXTRACTABLE_DIRECTIVE_RE = /^\s*@(?:import|use|forward|tailwind|config|source|reference|plugin)\b[\s\S]*?(?:;|$)/;
2913
3000
  const TAILWIND_EXTRACTABLE_BLOCK_DIRECTIVE_RE = /^\s*@(?:theme|utility|variant|custom-variant)\b[\s\S]*$/;
2914
3001
  const TAILWIND_EXTRACTABLE_LAYER_STATEMENT_RE = /^\s*@layer\s[^;{]+;\s*$/;
2915
3002
  function parseImportRequest(params) {
@@ -2957,8 +3044,17 @@ function normalizeTailwindImportAtRules(root, options = {}) {
2957
3044
  return changed;
2958
3045
  }
2959
3046
  function normalizeTailwindDirectiveLine(line, options = {}) {
2960
- if (!options.importFallback || !line.trimStart().startsWith("@import")) return line;
2961
- const request = parseImportRequest(line.trimStart().replace(/^@import\b/, ""));
3047
+ const trimmed = line.trimStart();
3048
+ if (/^@(?:use|forward)\b/.test(trimmed)) {
3049
+ const request = parseImportRequest(trimmed.replace(/^@(?:use|forward)\b/, ""));
3050
+ if (isTailwindImportRequest(request) || options.importFallback && isWeappTailwindcssImportRequest(request)) {
3051
+ const normalizedRequest = normalizeTailwindImportRequest(request, options);
3052
+ return replaceImportRequest(line.replace(/^(\s*)@(?:use|forward)\b/, "$1@import"), request, normalizedRequest);
3053
+ }
3054
+ return line;
3055
+ }
3056
+ if (!options.importFallback || !trimmed.startsWith("@import")) return line;
3057
+ const request = parseImportRequest(trimmed.replace(/^@import\b/, ""));
2962
3058
  if (!request || !isWeappTailwindcssImportRequest(request)) return line;
2963
3059
  return replaceImportRequest(line, request, request.replace(/^weapp-tailwindcss/, "tailwindcss"));
2964
3060
  }
@@ -2973,9 +3069,9 @@ function extractTailwindDirectiveLines(rawSource, options = {}) {
2973
3069
  const normalized = normalizeTailwindDirectiveLine(directive.trimEnd(), options);
2974
3070
  const normalizedTrimmed = normalized.trim();
2975
3071
  if (options.removeConfig && normalizedTrimmed.startsWith("@config")) continue;
2976
- const request = /^@import\b/.test(normalizedTrimmed) ? parseImportRequest(normalizedTrimmed.replace(/^@import\b/, "")) : void 0;
3072
+ const request = /^@(?:import|use|forward)\b/.test(normalizedTrimmed) ? parseImportRequest(normalizedTrimmed.replace(/^@(?:import|use|forward)\b/, "")) : void 0;
2977
3073
  if (request && !isTailwindImportRequest(request) && !isPackageJsonImportRequest$1(request)) continue;
2978
- if (/^@import\b/.test(normalizedTrimmed) && !request) continue;
3074
+ if (/^@(?:import|use|forward)\b/.test(normalizedTrimmed) && !request) continue;
2979
3075
  if (request && isTailwindImportRequest(request)) {
2980
3076
  const key = normalizedTrimmed;
2981
3077
  if (seenImports.has(key)) continue;
@@ -3016,7 +3112,7 @@ function isTailwindImportRequest(request) {
3016
3112
  }
3017
3113
  function isTailwindImportAtRule(node, options = {}) {
3018
3114
  if (node.name === "tailwind") return true;
3019
- if (node.name !== "import") return false;
3115
+ if (node.name !== "import" && node.name !== "use" && node.name !== "forward") return false;
3020
3116
  return isTailwindImportRequest(normalizeTailwindImportRequest(parseImportRequest(node.params), options));
3021
3117
  }
3022
3118
  function isTailwindSourceDirective(node, options = {}) {
@@ -1,9 +1,9 @@
1
- import { B as createDebug, W as resolveTailwindcssOptions, l as getRuntimeClassSetSignature } from "./v3-engine-DyIcbpZm.mjs";
2
- import { i as generateCssByGenerator, o as processCachedTask, r as emitHmrTiming, t as createBundleRuntimeClassSetManager } from "./incremental-runtime-class-set-Cwpw6aZK.mjs";
3
- import { _ as ensureRuntimeClassSet, f as pluginName, g as createTailwindRuntimeReadyPromise, n as getCompilerContext, s as _defineProperty, t as shouldSkipJsTransform, v as refreshTailwindRuntimeState } from "./precheck-D1O5AWzy.mjs";
1
+ import { B as createDebug, W as resolveTailwindcssOptions, l as getRuntimeClassSetSignature } from "./v3-engine-CXqgQZUc.mjs";
2
+ import { i as generateCssByGenerator, o as processCachedTask, r as emitHmrTiming, t as createBundleRuntimeClassSetManager } from "./incremental-runtime-class-set-Bux7viee.mjs";
3
+ import { _ as ensureRuntimeClassSet, f as pluginName, g as createTailwindRuntimeReadyPromise, n as getCompilerContext, s as _defineProperty, t as shouldSkipJsTransform, v as refreshTailwindRuntimeState } from "./precheck-DreRGvYH.mjs";
4
4
  import { r as getGroupedEntries } from "./utils-CGBVVNm6.mjs";
5
- import { c as upsertTailwindV4CssSource, s as hasConfiguredTailwindV4CssRoots } from "./tailwindcss-B_JAdOQf.mjs";
6
- import { _ as stripRequestQuery, b as toAbsoluteOutputPath, d as resolvePluginDisabledState, g as isSourceStyleRequest, l as stripBundlerGeneratedCssMarkers, n as createBundleBuildState, o as pushConcurrentTaskFactories, r as updateBundleBuildState, t as buildBundleSnapshot, u as resolvePackageDir, y as resolveOutputSpecifier } from "./bundle-state-CLnuf2CW.mjs";
5
+ import { c as upsertTailwindV4CssSource, s as hasConfiguredTailwindV4CssRoots } from "./tailwindcss-DO-VVR5k.mjs";
6
+ import { _ as stripRequestQuery, b as toAbsoluteOutputPath, d as resolvePluginDisabledState, g as isSourceStyleRequest, l as stripBundlerGeneratedCssMarkers, n as createBundleBuildState, o as pushConcurrentTaskFactories, r as updateBundleBuildState, t as buildBundleSnapshot, u as resolvePackageDir, y as resolveOutputSpecifier } from "./bundle-state-CP_BWXfx.mjs";
7
7
  import Module, { createRequire } from "node:module";
8
8
  import fs from "node:fs";
9
9
  import path from "node:path";
@@ -1,10 +1,10 @@
1
1
  const require_chunk = require("./chunk-8l464Juk.js");
2
- const require_v3_engine = require("./v3-engine-CCwvhRrQ.js");
3
- const require_incremental_runtime_class_set = require("./incremental-runtime-class-set-C6akmwlk.js");
4
- const require_precheck = require("./precheck-8pQbjqpq.js");
2
+ const require_v3_engine = require("./v3-engine-vHlppqaZ.js");
3
+ const require_incremental_runtime_class_set = require("./incremental-runtime-class-set-CWdfLHON.js");
4
+ const require_precheck = require("./precheck-DtYqujIx.js");
5
5
  const require_utils = require("./utils-4ODFyoqD.js");
6
- const require_tailwindcss = require("./tailwindcss-whZE3HpL.js");
7
- const require_bundle_state = require("./bundle-state-BnV8o2Yn.js");
6
+ const require_tailwindcss = require("./tailwindcss-BtUBeOes.js");
7
+ const require_bundle_state = require("./bundle-state-DXFq2nEo.js");
8
8
  let node_fs = require("node:fs");
9
9
  node_fs = require_chunk.__toESM(node_fs);
10
10
  let node_module = require("node:module");
package/dist/webpack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_webpack = require("./webpack-DC7v6ylA.js");
2
+ const require_webpack = require("./webpack-prCus5xn.js");
3
3
  exports.UnifiedWebpackPluginV5 = require_webpack.UnifiedWebpackPluginV5;
4
4
  exports.WeappTailwindcss = require_webpack.UnifiedWebpackPluginV5;
5
5
  exports.weappTailwindcss = require_webpack.UnifiedWebpackPluginV5;
package/dist/webpack.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { n as weappTailwindcssPackageDir, t as UnifiedWebpackPluginV5 } from "./webpack-C4pViZ7V.mjs";
1
+ import { n as weappTailwindcssPackageDir, t as UnifiedWebpackPluginV5 } from "./webpack-hPc8wUAi.mjs";
2
2
  export { UnifiedWebpackPluginV5, UnifiedWebpackPluginV5 as WeappTailwindcss, UnifiedWebpackPluginV5 as weappTailwindcss, weappTailwindcssPackageDir };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "weapp-tailwindcss",
3
- "version": "5.0.0-next.22",
3
+ "version": "5.0.0-next.24",
4
4
  "description": "把 tailwindcss 原子化样式思想,带给小程序开发者们! bring tailwindcss to miniprogram developers!",
5
5
  "author": "ice breaker <1324318532@qq.com>",
6
6
  "license": "MIT",
@@ -189,11 +189,11 @@
189
189
  "semver": "~7.8.1",
190
190
  "tailwindcss-patch": "9.3.7",
191
191
  "yaml": "^2.9.0",
192
- "@weapp-tailwindcss/reset": "0.1.1-next.0",
193
192
  "@weapp-tailwindcss/logger": "1.1.0",
193
+ "@weapp-tailwindcss/postcss": "3.0.0-next.6",
194
+ "@weapp-tailwindcss/reset": "0.1.1-next.0",
194
195
  "@weapp-tailwindcss/shared": "1.1.3",
195
- "tailwindcss-config": "1.1.6-next.1",
196
- "@weapp-tailwindcss/postcss": "3.0.0-next.6"
196
+ "tailwindcss-config": "1.1.6-next.1"
197
197
  },
198
198
  "scripts": {
199
199
  "dev": "tsdown --watch --sourcemap",