weapp-tailwindcss 5.1.4 → 5.1.5

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 (53) hide show
  1. package/dist/bundlers/shared/generator-css/generation-helpers.d.ts +8 -2
  2. package/dist/bundlers/shared/generator-css/source-resolver/metadata.d.ts +5 -1
  3. package/dist/bundlers/vite/generate-bundle/tailwind-v4-css-source.d.ts +6 -3
  4. package/dist/bundlers/vite/hot-css-modules.d.ts +1 -0
  5. package/dist/bundlers/vite/source-scan/css-entries.d.ts +1 -0
  6. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/pipeline-helpers.d.ts +2 -1
  7. package/dist/cli.js +18 -3
  8. package/dist/cli.mjs +16 -1
  9. package/dist/{context-DCVMkTRj.js → context-BziwyWy1.js} +21 -6
  10. package/dist/{context-Bkpmt3ja.mjs → context-rrYZuUBU.mjs} +18 -3
  11. package/dist/core.js +1 -1
  12. package/dist/core.mjs +1 -1
  13. package/dist/css-macro/index.d.ts +2 -1
  14. package/dist/{defaults-BhE26nSw.mjs → defaults-9B6aMyZb.mjs} +2 -2
  15. package/dist/{defaults-DQhgnnn-.js → defaults-nsf4VNMX.js} +2 -2
  16. package/dist/defaults.d.ts +1 -1
  17. package/dist/defaults.js +1 -1
  18. package/dist/defaults.mjs +1 -1
  19. package/dist/{gulp-Bogfnoki.js → gulp-CuVsZdO9.js} +3 -3
  20. package/dist/{gulp-0RsqkF_d.mjs → gulp-ygWfmOqh.mjs} +3 -3
  21. package/dist/gulp.js +1 -1
  22. package/dist/gulp.mjs +1 -1
  23. package/dist/{hmr-timing-BV6nFPoT.js → hmr-timing-BKdCeIrn.js} +207 -67
  24. package/dist/{hmr-timing-BRNaz8Od.mjs → hmr-timing-Dh_nn3w5.mjs} +207 -67
  25. package/dist/index.js +3 -3
  26. package/dist/index.mjs +3 -3
  27. package/dist/js/js-string-escape.d.ts +1 -0
  28. package/dist/presets.js +1 -1
  29. package/dist/presets.mjs +1 -1
  30. package/dist/rspack.js +1 -1
  31. package/dist/rspack.mjs +1 -1
  32. package/dist/{source-candidate-scan-signature-BB1hvW68.mjs → source-candidate-scan-signature-DATRnS1X.mjs} +157 -6
  33. package/dist/{source-candidate-scan-signature-CaDT0gkj.js → source-candidate-scan-signature-DIj9m4wB.js} +168 -5
  34. package/dist/style-injector/internal.d.ts +7 -0
  35. package/dist/style-injector/options.d.ts +25 -0
  36. package/dist/tailwindcss/v4/preflight.d.ts +4 -0
  37. package/dist/{tailwindcss-D2xs4OEu.js → tailwindcss-BwoNQ3t8.js} +52 -12
  38. package/dist/{tailwindcss-D0JF0fuZ.mjs → tailwindcss-C-uM4rB8.mjs} +47 -13
  39. package/dist/{transform-BP86eSZp.mjs → transform-DHLemtaX.mjs} +1 -1
  40. package/dist/{transform-CXCQ28Tc.js → transform-KLD1tJdb.js} +1 -1
  41. package/dist/typedoc.export.d.ts +1 -0
  42. package/dist/types/index.d.ts +2 -1
  43. package/dist/types/user-defined-options/general.d.ts +2 -0
  44. package/dist/{vite-BYgT1ir9.js → vite-Yp14HNyS.js} +101 -37
  45. package/dist/{vite-B1SlBmqO.mjs → vite-cH0tTMHc.mjs} +101 -37
  46. package/dist/vite.js +1 -1
  47. package/dist/vite.mjs +1 -1
  48. package/dist/weapp-tw-css-import-rewrite-loader.js +276 -83
  49. package/dist/{webpack-Bg6pefpb.mjs → webpack-DBhmJ-_P.mjs} +62 -18
  50. package/dist/{webpack-khSwkXP5.js → webpack-DN3tgLbF.js} +61 -17
  51. package/dist/webpack.js +1 -1
  52. package/dist/webpack.mjs +1 -1
  53. package/package.json +16 -5
@@ -1,10 +1,10 @@
1
1
  import { C as hasTailwindRootDirectives, F as hasTailwindGeneratedCssMarkers, G as getTailwindV4IncrementalGenerateCacheStats, O as parseImportRequest, P as hasTailwindGeneratedCss, T as normalizeTailwindConfigDirectives, _ as resolveTailwindcssOptions, k as removeTailwindSourceDirectives, lt as inferGeneratorTargetFromEnv, nt as resolveSourceScanPath, o as hasConfiguredTailwindV4CssRoots, s as upsertTailwindV4CssSource, w as hasTailwindSourceDirectives, x as hasTailwindApplyDirective } from "./v4-engine-BuuYDXt1.mjs";
2
2
  import { o as resolveRuntimeBranch } from "./generator-24-HgU9F.mjs";
3
3
  import { r as getGroupedEntries } from "./utils-DodxWHGz.mjs";
4
- import { S as createDebug, b as ensureRuntimeClassSet, f as _defineProperty, i as pluginName, l as shouldSkipJsTransform, n as normalizeStyleHandlerMajorVersion, r as resolveStyleOptionsFromContext, t as getCompilerContext, w as md5Hash, x as refreshTailwindRuntimeState, y as createTailwindRuntimeReadyPromise } from "./context-Bkpmt3ja.mjs";
5
- import { l as getRuntimeClassSetSignature, p as resolveViteSourceScanEntries } from "./tailwindcss-D0JF0fuZ.mjs";
6
- import { C as stripTailwindSourceMediaFragments, D as createCssSourceOrderAppend, E as removeGeneratedSelectorCompatCss, F as createCssTokenSourceMap, I as isCssSourceTraceEnabled, L as processCachedTask, M as stripMiniProgramCssSpecificityPlaceholders, N as annotateCssSourceTrace, O as hasMiniProgramTailwindV4PreflightReset, P as createCssSourceTraceCacheSignature, S as removeTailwindV4GeneratorAtRules, T as scoreTailwindV4CssSourceFileMatch, _ as isPureLocalCssImportWrapper, a as isSourceCandidateRequest, b as removeMiniProgramHoverSelectors, c as collectStrictEscapedRuntimeCandidates, f as pushConcurrentTaskFactories, i as createSourceCandidateStore, j as pruneMiniProgramGeneratedCss, k as finalizeMiniProgramCss, l as createEscapeFragments, n as emitHmrTiming, o as resolveSourceCandidateScanFiles, p as resolveTaskConcurrency, s as createBundleRuntimeClassSetManager, w as stripUnmatchedTailwindSourceMediaCloseFragments, x as removeTailwindV4GeneratedUserCssArtifacts } from "./hmr-timing-BRNaz8Od.mjs";
7
- import { A as isSourceStyleRequest, C as resolvePluginDisabledState, N as resolveOutputSpecifier, P as toAbsoluteOutputPath, S as resolvePackageDir, _ as generateTailwindV4Css, d as classifyBundleEntry, f as createBundleBuildState, i as createCandidateSignature, j as stripRequestQuery, m as createRuntimeAffectingSourceSignature, p as updateBundleBuildState, r as createScopedGeneratorRuntime, t as createSourceCandidateScanSignature, x as stripBundlerGeneratedCssMarkers, y as hasBundlerGeneratedCssMarker } from "./source-candidate-scan-signature-BB1hvW68.mjs";
4
+ import { S as createDebug, b as ensureRuntimeClassSet, f as _defineProperty, i as pluginName, l as shouldSkipJsTransform, n as normalizeStyleHandlerMajorVersion, r as resolveStyleOptionsFromContext, t as getCompilerContext, w as md5Hash, x as refreshTailwindRuntimeState, y as createTailwindRuntimeReadyPromise } from "./context-rrYZuUBU.mjs";
5
+ import { l as getRuntimeClassSetSignature, p as resolveViteSourceScanEntries } from "./tailwindcss-C-uM4rB8.mjs";
6
+ import { C as stripTailwindSourceMediaFragments, D as createCssSourceOrderAppend, E as removeGeneratedSelectorCompatCss, F as createCssTokenSourceMap, I as isCssSourceTraceEnabled, L as processCachedTask, M as stripMiniProgramCssSpecificityPlaceholders, N as annotateCssSourceTrace, O as hasMiniProgramTailwindV4PreflightReset, P as createCssSourceTraceCacheSignature, S as removeTailwindV4GeneratorAtRules, T as scoreTailwindV4CssSourceFileMatch, _ as isPureLocalCssImportWrapper, a as isSourceCandidateRequest, b as removeMiniProgramHoverSelectors, c as collectStrictEscapedRuntimeCandidates, f as pushConcurrentTaskFactories, i as createSourceCandidateStore, j as pruneMiniProgramGeneratedCss, k as finalizeMiniProgramCss, l as createEscapeFragments, n as emitHmrTiming, o as resolveSourceCandidateScanFiles, p as resolveTaskConcurrency, s as createBundleRuntimeClassSetManager, w as stripUnmatchedTailwindSourceMediaCloseFragments, x as removeTailwindV4GeneratedUserCssArtifacts } from "./hmr-timing-Dh_nn3w5.mjs";
7
+ import { A as isSourceStyleRequest, C as resolvePluginDisabledState, I as createBuiltinWebpackStyleInjectorPlugin, N as resolveOutputSpecifier, P as toAbsoluteOutputPath, S as resolvePackageDir, _ as generateTailwindV4Css, d as classifyBundleEntry, f as createBundleBuildState, i as createCandidateSignature, j as stripRequestQuery, m as createRuntimeAffectingSourceSignature, p as updateBundleBuildState, r as createScopedGeneratorRuntime, t as createSourceCandidateScanSignature, x as stripBundlerGeneratedCssMarkers, y as hasBundlerGeneratedCssMarker } from "./source-candidate-scan-signature-DATRnS1X.mjs";
8
8
  import Module, { createRequire } from "node:module";
9
9
  import fs from "node:fs";
10
10
  import path from "node:path";
@@ -717,14 +717,33 @@ function resolveWebpackMemoryDebugStats(context) {
717
717
  tailwind: { v4: getTailwindV4IncrementalGenerateCacheStats() }
718
718
  };
719
719
  }
720
- function shouldInjectWebpackCssTracePreflight(appType, cssHandlerOptions) {
721
- return appType !== "mpx" || cssHandlerOptions.isMainChunk !== false;
720
+ function shouldInjectWebpackCssTracePreflight(_appType, cssHandlerOptions) {
721
+ if (includesTailwindPreflightImport(cssHandlerOptions.sourceOptions?.sourceCss)) return true;
722
+ return cssHandlerOptions.isMainChunk !== false;
723
+ }
724
+ function includesTailwindPreflightImport(source) {
725
+ if (!source) return false;
726
+ try {
727
+ let includesPreflight = false;
728
+ postcss.parse(source).walkAtRules((rule) => {
729
+ if (rule.name === "tailwind") {
730
+ includesPreflight || (includesPreflight = rule.params.trim() === "base");
731
+ return;
732
+ }
733
+ if (rule.name !== "import") return;
734
+ const request = parseImportRequest(rule.params)?.replaceAll("\\", "/");
735
+ includesPreflight || (includesPreflight = request === "tailwindcss" || request === "tailwindcss/preflight.css" || request?.endsWith("/tailwindcss/index.css") === true || request?.endsWith("/tailwindcss/preflight.css") === true);
736
+ });
737
+ return includesPreflight;
738
+ } catch {
739
+ return false;
740
+ }
722
741
  }
723
742
  function finalizeMiniProgramUserCssAssetSource(source, compilerOptions, isWebGeneratorTarget, options = {}) {
724
743
  const styleOptions = resolveStyleOptionsFromContext(compilerOptions);
725
744
  if (isWebGeneratorTarget) return source;
726
745
  return stripMiniProgramCssSpecificityPlaceholders(removeTailwindV4StandaloneHostPreflightRule(finalizeMiniProgramCss(removeMiniProgramHoverSelectors(source, styleOptions.cssRemoveHoverPseudoClass), {
727
- cssPreflight: options.cssPreflight !== false && !hasMiniProgramTailwindV4PreflightReset(source) ? compilerOptions.cssPreflight : void 0,
746
+ cssPreflight: options.cssPreflight === false ? false : !hasMiniProgramTailwindV4PreflightReset(source) ? compilerOptions.cssPreflight : void 0,
728
747
  isTailwindcssV4: true,
729
748
  tailwindcssV4GradientFallback: styleOptions.tailwindcssV4GradientFallback
730
749
  })));
@@ -802,10 +821,10 @@ function finalizeWebpackCssAssetSource(source, compilerOptions, isWebGeneratorTa
802
821
  let finalized = removeTailwindSourceDirectives(stripBundlerGeneratedCssMarkers(source), { importFallback: true });
803
822
  if (options.generatedCss !== true) return stripMiniProgramCssSpecificityPlaceholders(removeMiniProgramHoverSelectors(finalized, styleOptions.cssRemoveHoverPseudoClass));
804
823
  try {
805
- finalized = pruneMiniProgramGeneratedCss(finalized, { preservePreflight: true });
824
+ finalized = pruneMiniProgramGeneratedCss(finalized, { preservePreflight: options.cssPreflight !== false });
806
825
  } catch {
807
826
  finalized = finalizeMiniProgramCss(finalized, {
808
- cssPreflight: !hasMiniProgramTailwindV4PreflightReset(finalized) ? compilerOptions.cssPreflight : void 0,
827
+ cssPreflight: options.cssPreflight === false ? false : !hasMiniProgramTailwindV4PreflightReset(finalized) ? compilerOptions.cssPreflight : void 0,
809
828
  isTailwindcssV4: true,
810
829
  tailwindcssV4GradientFallback: styleOptions.tailwindcssV4GradientFallback
811
830
  });
@@ -857,19 +876,31 @@ function createWebpackCssSourceResolvers(options) {
857
876
  const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
858
877
  return (tailwindOptions?.v4?.cssEntries?.length ?? 0) > 0 || (tailwindOptions?.v4?.cssSources?.length ?? 0) > 0;
859
878
  };
860
- const configuredMainCssEntryFiles = (() => {
861
- return [...resolveTailwindcssOptions(runtimeState.tailwindRuntime.options)?.v4?.cssEntries ?? []].filter((file) => typeof file === "string" && file.length > 0).map((file) => path.resolve(file));
879
+ const configuredCssEntryFiles = (() => {
880
+ const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
881
+ const entries = [...compilerOptions.cssEntries ?? [], ...tailwindOptions?.v4?.cssEntries ?? []].filter((file) => typeof file === "string" && file.length > 0).map((file) => path.resolve(file));
882
+ return [...new Set(entries)];
862
883
  })();
884
+ const configuredMainCssEntryFiles = configuredCssEntryFiles.slice(0, 1);
863
885
  const inferredMainCssFiles = inferWebpackMainCssFiles(compilation.chunks, compilerOptions.cssMatcher, {
864
886
  mainSourceFiles: new Set(configuredMainCssEntryFiles),
865
887
  resourcesByAsset: cssAssetResources
866
888
  });
867
889
  const singleConfiguredCssAsset = isWebGeneratorTarget && configuredMainCssEntryFiles.length > 0 && groupedCssEntriesLength === 1 ? singleCssAssetFile : void 0;
868
- const isMainCssChunk = (file) => compilerOptions.mainCssChunkMatcher(file, appType) || inferredMainCssFiles.has(file) || file === singleConfiguredCssAsset;
890
+ const isMainCssChunk = (file) => {
891
+ const resources = cssAssetResources.get(file);
892
+ if (resources && configuredCssEntryFiles.length > 0) for (const resource of resources) {
893
+ const index = configuredCssEntryFiles.findIndex((entry) => path.resolve(entry) === path.resolve(resource));
894
+ if (index >= 0) return index === 0;
895
+ }
896
+ if (configuredCssEntryFiles.length > 1) return false;
897
+ return compilerOptions.mainCssChunkMatcher(file, appType) || inferredMainCssFiles.has(file) || file === singleConfiguredCssAsset;
898
+ };
869
899
  const activeWebpackCssSourceFiles = /* @__PURE__ */ new Set();
870
900
  const resolveConfiguredMainCssSourceFile = (file) => {
871
901
  if (!isMainCssChunk(file)) return;
872
902
  if (configuredMainCssEntryFiles.length !== 1) return;
903
+ if (groupedCssEntriesLength !== 1 && file !== singleCssAssetFile) return;
873
904
  for (const sourceFile of configuredMainCssEntryFiles) if (cssSources.has(sourceFile)) {
874
905
  activeWebpackCssSourceFiles.add(sourceFile);
875
906
  return sourceFile;
@@ -1728,7 +1759,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
1728
1759
  },
1729
1760
  transform: async () => {
1730
1761
  const source = readCurrentProcessedRawSource();
1731
- const nextCss = stripTrailingLineWhitespace(finalizeCssAssetSource(hasTailwindGeneratedAssetCss && !hasGeneratedCssMarker ? isWebGeneratorTarget ? source : (await compilerOptions.styleHandler(source, cssHandlerOptionsForProcessedAsset)).css : source, { generatedCss: hasGeneratedCssMarker || hasTailwindGeneratedAssetCss }));
1762
+ const nextCss = stripTrailingLineWhitespace(finalizeCssAssetSource(hasTailwindGeneratedAssetCss && !hasGeneratedCssMarker ? isWebGeneratorTarget ? source : (await compilerOptions.styleHandler(source, cssHandlerOptionsForProcessedAsset)).css : source, {
1763
+ cssPreflight: cssHandlerOptionsForProcessedAsset.isMainChunk,
1764
+ generatedCss: hasGeneratedCssMarker || hasTailwindGeneratedAssetCss
1765
+ }));
1732
1766
  debug("css skip webpack-loader-pipeline asset: %s", file);
1733
1767
  return { result: new ConcatSource(finalizeTracedCss(nextCss, cssHandlerOptionsForProcessedAsset)) };
1734
1768
  }
@@ -1814,7 +1848,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
1814
1848
  }, {
1815
1849
  css: currentAssetUserCss,
1816
1850
  processed: true
1817
- }).css, { generatedCss: true }), cssHandlerOptions);
1851
+ }).css, {
1852
+ cssPreflight: cssHandlerOptions.isMainChunk,
1853
+ generatedCss: true
1854
+ }), cssHandlerOptions);
1818
1855
  debug("css consume webpack loader generation: %s <- %s", file, sourceFile);
1819
1856
  return { result: new ConcatSource(css) };
1820
1857
  }
@@ -1848,7 +1885,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
1848
1885
  const fallbackGeneratorRuntimeSet = getGeneratorRuntimeSet();
1849
1886
  const hasExplicitTailwindV4SourceCss = sourceCss !== void 0 && (hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config"));
1850
1887
  const currentAssetHasTailwindDirectives = hasTailwindRootDirectives(generatorRawSource, { importFallback: true }) || hasTailwindSourceDirectives(generatorRawSource, { importFallback: true }) || hasTailwindApplyDirective(generatorRawSource);
1851
- const shouldForceTailwindV4Generation = cssHandlerOptions.isMainChunk && hasConfiguredTailwindV4SourceRoots() && (configuredMainCssEntryFiles.length > 0 || currentAssetHasTailwindDirectives || hasExplicitTailwindV4SourceCss);
1888
+ const shouldForceTailwindV4Generation = hasConfiguredTailwindV4SourceRoots() && (configuredMainCssEntryFiles.length > 0 && sourceFile !== void 0 || currentAssetHasTailwindDirectives || hasExplicitTailwindV4SourceCss);
1852
1889
  const shouldSkipUnmatchedMainCssGeneration = !isWebGeneratorTarget && cssHandlerOptions.isMainChunk && sourceFile === void 0 && configuredMainCssEntryFiles.length > 0 && !currentAssetHasTailwindDirectives;
1853
1890
  const resolvedScopedGeneratorRuntimeSet = await createScopedGeneratorRuntime({
1854
1891
  cssHandlerOptions,
@@ -1911,7 +1948,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
1911
1948
  }, {
1912
1949
  css: removeWebpackTailwindGeneratedAssetCss(currentRawSource),
1913
1950
  processed: true
1914
- })?.css ?? generated.css : generated.css, { generatedCss: true }) : isWebGeneratorTarget ? finalizeCssAssetSource(generatorRawSource, { generatedCss: false }) : finalizeCssAssetSource((await compilerOptions.styleHandler(generatorRawSource, cssHandlerOptions)).css, { generatedCss: false }), cssHandlerOptions));
1951
+ })?.css ?? generated.css : generated.css, {
1952
+ cssPreflight: cssHandlerOptions.isMainChunk,
1953
+ generatedCss: true
1954
+ }) : isWebGeneratorTarget ? finalizeCssAssetSource(generatorRawSource, { generatedCss: false }) : finalizeCssAssetSource((await compilerOptions.styleHandler(generatorRawSource, cssHandlerOptions)).css, { generatedCss: false }), cssHandlerOptions));
1915
1955
  if (generated) {
1916
1956
  for (const className of generated.classSet) generatorRuntimeSet.add(className);
1917
1957
  debug("css handle via tailwind v%s engine(%s): %s", runtimeState.tailwindRuntime.majorVersion, generated.target, file);
@@ -1959,7 +1999,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
1959
1999
  });
1960
2000
  }
1961
2001
  //#endregion
1962
- //#region ../../node_modules/.pnpm/tsdown@0.22.3_oxc-resolver@11.20.0_tsx@4.22.4_typescript@6.0.3_unrun@0.2.37_synckit@0.1_6cbb3bb94bab8b3379a6056ffc71c3e9/node_modules/tsdown/esm-shims.js
2002
+ //#region ../../node_modules/.pnpm/tsdown@0.22.3_oxc-resolver@11.20.0_tsx@4.22.4_typescript@6.0.3_unrun@0.2.37_synckit@0.1_0beb1ab7e72f5f18144e3bcca1caefc0/node_modules/tsdown/esm-shims.js
1963
2003
  const getFilename = () => fileURLToPath(import.meta.url);
1964
2004
  const getDirname = () => path.dirname(getFilename());
1965
2005
  const __dirname = /* @__PURE__ */ getDirname();
@@ -2195,7 +2235,7 @@ var WeappTailwindcss = class {
2195
2235
  }
2196
2236
  apply(compiler) {
2197
2237
  compiler.options = compiler.options || {};
2198
- const { disabled, onLoad, runtimeLoaderPath, tailwindRuntime, refreshTailwindcssRuntime } = this.options;
2238
+ const { disabled, onLoad, runtimeLoaderPath, tailwindRuntime, refreshTailwindcssRuntime, styleInjector } = this.options;
2199
2239
  const initialTailwindRuntime = tailwindRuntime;
2200
2240
  const refreshTailwindRuntime = refreshTailwindcssRuntime;
2201
2241
  const disabledOptions = resolvePluginDisabledState(disabled);
@@ -2315,6 +2355,7 @@ var WeappTailwindcss = class {
2315
2355
  const pruneWebpackCssSources = (activeSourceFiles, _options = {}) => {
2316
2356
  const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
2317
2357
  const configuredSourceFiles = /* @__PURE__ */ new Set();
2358
+ for (const entry of this.options.cssEntries ?? []) configuredSourceFiles.add(path.resolve(entry));
2318
2359
  for (const entry of tailwindOptions?.v4?.cssEntries ?? []) configuredSourceFiles.add(path.resolve(entry));
2319
2360
  for (const source of tailwindOptions?.v4?.cssSources ?? []) if (source.file) configuredSourceFiles.add(path.resolve(source.file));
2320
2361
  for (const file of webpackCssSources.keys()) if (!activeSourceFiles.has(file) && !configuredSourceFiles.has(file)) webpackCssSources.delete(file);
@@ -2323,6 +2364,7 @@ var WeappTailwindcss = class {
2323
2364
  const prepareWebpackCssSources = (activeAssetResources = /* @__PURE__ */ new Set()) => {
2324
2365
  const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
2325
2366
  const configuredSourceFiles = /* @__PURE__ */ new Set();
2367
+ for (const entry of this.options.cssEntries ?? []) configuredSourceFiles.add(path.resolve(entry));
2326
2368
  for (const entry of tailwindOptions?.v4?.cssEntries ?? []) configuredSourceFiles.add(path.resolve(entry));
2327
2369
  for (const source of tailwindOptions?.v4?.cssSources ?? []) if (source.file) configuredSourceFiles.add(path.resolve(source.file));
2328
2370
  const activeSourceFiles = /* @__PURE__ */ new Set([
@@ -2339,6 +2381,7 @@ var WeappTailwindcss = class {
2339
2381
  const isWebpackProcessedTailwindEntryAsset = (isMainCssChunk) => {
2340
2382
  if (isMainCssChunk !== true || webpackProcessedCssSourceFiles.size === 0) return false;
2341
2383
  const tailwindOptions = resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
2384
+ for (const entry of this.options.cssEntries ?? []) if (webpackProcessedCssSourceFiles.has(path.resolve(entry))) return true;
2342
2385
  for (const entry of tailwindOptions?.v4?.cssEntries ?? []) if (webpackProcessedCssSourceFiles.has(path.resolve(entry))) return true;
2343
2386
  for (const source of tailwindOptions?.v4?.cssSources ?? []) if (source.file && webpackProcessedCssSourceFiles.has(path.resolve(source.file))) return true;
2344
2387
  return false;
@@ -2419,6 +2462,7 @@ var WeappTailwindcss = class {
2419
2462
  prepareWebpackCssSources,
2420
2463
  debug
2421
2464
  });
2465
+ createBuiltinWebpackStyleInjectorPlugin(styleInjector, this.appType)?.apply(compiler);
2422
2466
  }
2423
2467
  };
2424
2468
  //#endregion
@@ -2,10 +2,10 @@ const require_rolldown_runtime = require("./rolldown-runtime-emK7D4bc.js");
2
2
  const require_v4_engine = require("./v4-engine-CKtsdKxK.js");
3
3
  const require_generator = require("./generator-CilgHtxb.js");
4
4
  const require_utils = require("./utils-D3h8j7Mk.js");
5
- const require_context = require("./context-DCVMkTRj.js");
6
- const require_tailwindcss = require("./tailwindcss-D2xs4OEu.js");
7
- const require_hmr_timing = require("./hmr-timing-BV6nFPoT.js");
8
- const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-CaDT0gkj.js");
5
+ const require_context = require("./context-BziwyWy1.js");
6
+ const require_tailwindcss = require("./tailwindcss-BwoNQ3t8.js");
7
+ const require_hmr_timing = require("./hmr-timing-BKdCeIrn.js");
8
+ const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-DIj9m4wB.js");
9
9
  let node_fs = require("node:fs");
10
10
  node_fs = require_rolldown_runtime.__toESM(node_fs);
11
11
  let node_path = require("node:path");
@@ -723,14 +723,33 @@ function resolveWebpackMemoryDebugStats(context) {
723
723
  tailwind: { v4: require_v4_engine.getTailwindV4IncrementalGenerateCacheStats() }
724
724
  };
725
725
  }
726
- function shouldInjectWebpackCssTracePreflight(appType, cssHandlerOptions) {
727
- return appType !== "mpx" || cssHandlerOptions.isMainChunk !== false;
726
+ function shouldInjectWebpackCssTracePreflight(_appType, cssHandlerOptions) {
727
+ if (includesTailwindPreflightImport(cssHandlerOptions.sourceOptions?.sourceCss)) return true;
728
+ return cssHandlerOptions.isMainChunk !== false;
729
+ }
730
+ function includesTailwindPreflightImport(source) {
731
+ if (!source) return false;
732
+ try {
733
+ let includesPreflight = false;
734
+ _weapp_tailwindcss_postcss.postcss.parse(source).walkAtRules((rule) => {
735
+ if (rule.name === "tailwind") {
736
+ includesPreflight || (includesPreflight = rule.params.trim() === "base");
737
+ return;
738
+ }
739
+ if (rule.name !== "import") return;
740
+ const request = require_v4_engine.parseImportRequest(rule.params)?.replaceAll("\\", "/");
741
+ includesPreflight || (includesPreflight = request === "tailwindcss" || request === "tailwindcss/preflight.css" || request?.endsWith("/tailwindcss/index.css") === true || request?.endsWith("/tailwindcss/preflight.css") === true);
742
+ });
743
+ return includesPreflight;
744
+ } catch {
745
+ return false;
746
+ }
728
747
  }
729
748
  function finalizeMiniProgramUserCssAssetSource(source, compilerOptions, isWebGeneratorTarget, options = {}) {
730
749
  const styleOptions = require_context.resolveStyleOptionsFromContext(compilerOptions);
731
750
  if (isWebGeneratorTarget) return source;
732
751
  return (0, _weapp_tailwindcss_postcss.stripMiniProgramCssSpecificityPlaceholders)(removeTailwindV4StandaloneHostPreflightRule((0, _weapp_tailwindcss_postcss.finalizeMiniProgramCss)(require_hmr_timing.removeMiniProgramHoverSelectors(source, styleOptions.cssRemoveHoverPseudoClass), {
733
- cssPreflight: options.cssPreflight !== false && !require_hmr_timing.hasMiniProgramTailwindV4PreflightReset(source) ? compilerOptions.cssPreflight : void 0,
752
+ cssPreflight: options.cssPreflight === false ? false : !require_hmr_timing.hasMiniProgramTailwindV4PreflightReset(source) ? compilerOptions.cssPreflight : void 0,
734
753
  isTailwindcssV4: true,
735
754
  tailwindcssV4GradientFallback: styleOptions.tailwindcssV4GradientFallback
736
755
  })));
@@ -808,10 +827,10 @@ function finalizeWebpackCssAssetSource(source, compilerOptions, isWebGeneratorTa
808
827
  let finalized = require_v4_engine.removeTailwindSourceDirectives(require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(source), { importFallback: true });
809
828
  if (options.generatedCss !== true) return (0, _weapp_tailwindcss_postcss.stripMiniProgramCssSpecificityPlaceholders)(require_hmr_timing.removeMiniProgramHoverSelectors(finalized, styleOptions.cssRemoveHoverPseudoClass));
810
829
  try {
811
- finalized = (0, _weapp_tailwindcss_postcss.pruneMiniProgramGeneratedCss)(finalized, { preservePreflight: true });
830
+ finalized = (0, _weapp_tailwindcss_postcss.pruneMiniProgramGeneratedCss)(finalized, { preservePreflight: options.cssPreflight !== false });
812
831
  } catch {
813
832
  finalized = (0, _weapp_tailwindcss_postcss.finalizeMiniProgramCss)(finalized, {
814
- cssPreflight: !require_hmr_timing.hasMiniProgramTailwindV4PreflightReset(finalized) ? compilerOptions.cssPreflight : void 0,
833
+ cssPreflight: options.cssPreflight === false ? false : !require_hmr_timing.hasMiniProgramTailwindV4PreflightReset(finalized) ? compilerOptions.cssPreflight : void 0,
815
834
  isTailwindcssV4: true,
816
835
  tailwindcssV4GradientFallback: styleOptions.tailwindcssV4GradientFallback
817
836
  });
@@ -863,19 +882,31 @@ function createWebpackCssSourceResolvers(options) {
863
882
  const tailwindOptions = require_v4_engine.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
864
883
  return (tailwindOptions?.v4?.cssEntries?.length ?? 0) > 0 || (tailwindOptions?.v4?.cssSources?.length ?? 0) > 0;
865
884
  };
866
- const configuredMainCssEntryFiles = (() => {
867
- return [...require_v4_engine.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options)?.v4?.cssEntries ?? []].filter((file) => typeof file === "string" && file.length > 0).map((file) => node_path.default.resolve(file));
885
+ const configuredCssEntryFiles = (() => {
886
+ const tailwindOptions = require_v4_engine.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
887
+ const entries = [...compilerOptions.cssEntries ?? [], ...tailwindOptions?.v4?.cssEntries ?? []].filter((file) => typeof file === "string" && file.length > 0).map((file) => node_path.default.resolve(file));
888
+ return [...new Set(entries)];
868
889
  })();
890
+ const configuredMainCssEntryFiles = configuredCssEntryFiles.slice(0, 1);
869
891
  const inferredMainCssFiles = inferWebpackMainCssFiles(compilation.chunks, compilerOptions.cssMatcher, {
870
892
  mainSourceFiles: new Set(configuredMainCssEntryFiles),
871
893
  resourcesByAsset: cssAssetResources
872
894
  });
873
895
  const singleConfiguredCssAsset = isWebGeneratorTarget && configuredMainCssEntryFiles.length > 0 && groupedCssEntriesLength === 1 ? singleCssAssetFile : void 0;
874
- const isMainCssChunk = (file) => compilerOptions.mainCssChunkMatcher(file, appType) || inferredMainCssFiles.has(file) || file === singleConfiguredCssAsset;
896
+ const isMainCssChunk = (file) => {
897
+ const resources = cssAssetResources.get(file);
898
+ if (resources && configuredCssEntryFiles.length > 0) for (const resource of resources) {
899
+ const index = configuredCssEntryFiles.findIndex((entry) => node_path.default.resolve(entry) === node_path.default.resolve(resource));
900
+ if (index >= 0) return index === 0;
901
+ }
902
+ if (configuredCssEntryFiles.length > 1) return false;
903
+ return compilerOptions.mainCssChunkMatcher(file, appType) || inferredMainCssFiles.has(file) || file === singleConfiguredCssAsset;
904
+ };
875
905
  const activeWebpackCssSourceFiles = /* @__PURE__ */ new Set();
876
906
  const resolveConfiguredMainCssSourceFile = (file) => {
877
907
  if (!isMainCssChunk(file)) return;
878
908
  if (configuredMainCssEntryFiles.length !== 1) return;
909
+ if (groupedCssEntriesLength !== 1 && file !== singleCssAssetFile) return;
879
910
  for (const sourceFile of configuredMainCssEntryFiles) if (cssSources.has(sourceFile)) {
880
911
  activeWebpackCssSourceFiles.add(sourceFile);
881
912
  return sourceFile;
@@ -1734,7 +1765,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
1734
1765
  },
1735
1766
  transform: async () => {
1736
1767
  const source = readCurrentProcessedRawSource();
1737
- const nextCss = stripTrailingLineWhitespace(finalizeCssAssetSource(hasTailwindGeneratedAssetCss && !hasGeneratedCssMarker ? isWebGeneratorTarget ? source : (await compilerOptions.styleHandler(source, cssHandlerOptionsForProcessedAsset)).css : source, { generatedCss: hasGeneratedCssMarker || hasTailwindGeneratedAssetCss }));
1768
+ const nextCss = stripTrailingLineWhitespace(finalizeCssAssetSource(hasTailwindGeneratedAssetCss && !hasGeneratedCssMarker ? isWebGeneratorTarget ? source : (await compilerOptions.styleHandler(source, cssHandlerOptionsForProcessedAsset)).css : source, {
1769
+ cssPreflight: cssHandlerOptionsForProcessedAsset.isMainChunk,
1770
+ generatedCss: hasGeneratedCssMarker || hasTailwindGeneratedAssetCss
1771
+ }));
1738
1772
  debug("css skip webpack-loader-pipeline asset: %s", file);
1739
1773
  return { result: new ConcatSource(finalizeTracedCss(nextCss, cssHandlerOptionsForProcessedAsset)) };
1740
1774
  }
@@ -1820,7 +1854,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
1820
1854
  }, {
1821
1855
  css: currentAssetUserCss,
1822
1856
  processed: true
1823
- }).css, { generatedCss: true }), cssHandlerOptions);
1857
+ }).css, {
1858
+ cssPreflight: cssHandlerOptions.isMainChunk,
1859
+ generatedCss: true
1860
+ }), cssHandlerOptions);
1824
1861
  debug("css consume webpack loader generation: %s <- %s", file, sourceFile);
1825
1862
  return { result: new ConcatSource(css) };
1826
1863
  }
@@ -1854,7 +1891,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
1854
1891
  const fallbackGeneratorRuntimeSet = getGeneratorRuntimeSet();
1855
1892
  const hasExplicitTailwindV4SourceCss = sourceCss !== void 0 && (require_v4_engine.hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config"));
1856
1893
  const currentAssetHasTailwindDirectives = require_v4_engine.hasTailwindRootDirectives(generatorRawSource, { importFallback: true }) || require_v4_engine.hasTailwindSourceDirectives(generatorRawSource, { importFallback: true }) || require_v4_engine.hasTailwindApplyDirective(generatorRawSource);
1857
- const shouldForceTailwindV4Generation = cssHandlerOptions.isMainChunk && hasConfiguredTailwindV4SourceRoots() && (configuredMainCssEntryFiles.length > 0 || currentAssetHasTailwindDirectives || hasExplicitTailwindV4SourceCss);
1894
+ const shouldForceTailwindV4Generation = hasConfiguredTailwindV4SourceRoots() && (configuredMainCssEntryFiles.length > 0 && sourceFile !== void 0 || currentAssetHasTailwindDirectives || hasExplicitTailwindV4SourceCss);
1858
1895
  const shouldSkipUnmatchedMainCssGeneration = !isWebGeneratorTarget && cssHandlerOptions.isMainChunk && sourceFile === void 0 && configuredMainCssEntryFiles.length > 0 && !currentAssetHasTailwindDirectives;
1859
1896
  const resolvedScopedGeneratorRuntimeSet = await require_source_candidate_scan_signature.createScopedGeneratorRuntime({
1860
1897
  cssHandlerOptions,
@@ -1917,7 +1954,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
1917
1954
  }, {
1918
1955
  css: removeWebpackTailwindGeneratedAssetCss(currentRawSource),
1919
1956
  processed: true
1920
- })?.css ?? generated.css : generated.css, { generatedCss: true }) : isWebGeneratorTarget ? finalizeCssAssetSource(generatorRawSource, { generatedCss: false }) : finalizeCssAssetSource((await compilerOptions.styleHandler(generatorRawSource, cssHandlerOptions)).css, { generatedCss: false }), cssHandlerOptions));
1957
+ })?.css ?? generated.css : generated.css, {
1958
+ cssPreflight: cssHandlerOptions.isMainChunk,
1959
+ generatedCss: true
1960
+ }) : isWebGeneratorTarget ? finalizeCssAssetSource(generatorRawSource, { generatedCss: false }) : finalizeCssAssetSource((await compilerOptions.styleHandler(generatorRawSource, cssHandlerOptions)).css, { generatedCss: false }), cssHandlerOptions));
1921
1961
  if (generated) {
1922
1962
  for (const className of generated.classSet) generatorRuntimeSet.add(className);
1923
1963
  debug("css handle via tailwind v%s engine(%s): %s", runtimeState.tailwindRuntime.majorVersion, generated.target, file);
@@ -2196,7 +2236,7 @@ var WeappTailwindcss = class {
2196
2236
  }
2197
2237
  apply(compiler) {
2198
2238
  compiler.options = compiler.options || {};
2199
- const { disabled, onLoad, runtimeLoaderPath, tailwindRuntime, refreshTailwindcssRuntime } = this.options;
2239
+ const { disabled, onLoad, runtimeLoaderPath, tailwindRuntime, refreshTailwindcssRuntime, styleInjector } = this.options;
2200
2240
  const initialTailwindRuntime = tailwindRuntime;
2201
2241
  const refreshTailwindRuntime = refreshTailwindcssRuntime;
2202
2242
  const disabledOptions = require_source_candidate_scan_signature.resolvePluginDisabledState(disabled);
@@ -2316,6 +2356,7 @@ var WeappTailwindcss = class {
2316
2356
  const pruneWebpackCssSources = (activeSourceFiles, _options = {}) => {
2317
2357
  const tailwindOptions = require_v4_engine.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
2318
2358
  const configuredSourceFiles = /* @__PURE__ */ new Set();
2359
+ for (const entry of this.options.cssEntries ?? []) configuredSourceFiles.add(node_path.default.resolve(entry));
2319
2360
  for (const entry of tailwindOptions?.v4?.cssEntries ?? []) configuredSourceFiles.add(node_path.default.resolve(entry));
2320
2361
  for (const source of tailwindOptions?.v4?.cssSources ?? []) if (source.file) configuredSourceFiles.add(node_path.default.resolve(source.file));
2321
2362
  for (const file of webpackCssSources.keys()) if (!activeSourceFiles.has(file) && !configuredSourceFiles.has(file)) webpackCssSources.delete(file);
@@ -2324,6 +2365,7 @@ var WeappTailwindcss = class {
2324
2365
  const prepareWebpackCssSources = (activeAssetResources = /* @__PURE__ */ new Set()) => {
2325
2366
  const tailwindOptions = require_v4_engine.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
2326
2367
  const configuredSourceFiles = /* @__PURE__ */ new Set();
2368
+ for (const entry of this.options.cssEntries ?? []) configuredSourceFiles.add(node_path.default.resolve(entry));
2327
2369
  for (const entry of tailwindOptions?.v4?.cssEntries ?? []) configuredSourceFiles.add(node_path.default.resolve(entry));
2328
2370
  for (const source of tailwindOptions?.v4?.cssSources ?? []) if (source.file) configuredSourceFiles.add(node_path.default.resolve(source.file));
2329
2371
  const activeSourceFiles = /* @__PURE__ */ new Set([
@@ -2340,6 +2382,7 @@ var WeappTailwindcss = class {
2340
2382
  const isWebpackProcessedTailwindEntryAsset = (isMainCssChunk) => {
2341
2383
  if (isMainCssChunk !== true || webpackProcessedCssSourceFiles.size === 0) return false;
2342
2384
  const tailwindOptions = require_v4_engine.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options);
2385
+ for (const entry of this.options.cssEntries ?? []) if (webpackProcessedCssSourceFiles.has(node_path.default.resolve(entry))) return true;
2343
2386
  for (const entry of tailwindOptions?.v4?.cssEntries ?? []) if (webpackProcessedCssSourceFiles.has(node_path.default.resolve(entry))) return true;
2344
2387
  for (const source of tailwindOptions?.v4?.cssSources ?? []) if (source.file && webpackProcessedCssSourceFiles.has(node_path.default.resolve(source.file))) return true;
2345
2388
  return false;
@@ -2420,6 +2463,7 @@ var WeappTailwindcss = class {
2420
2463
  prepareWebpackCssSources,
2421
2464
  debug
2422
2465
  });
2466
+ require_source_candidate_scan_signature.createBuiltinWebpackStyleInjectorPlugin(styleInjector, this.appType)?.apply(compiler);
2423
2467
  }
2424
2468
  };
2425
2469
  //#endregion
package/dist/webpack.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_webpack = require("./webpack-khSwkXP5.js");
2
+ const require_webpack = require("./webpack-DN3tgLbF.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-Bg6pefpb.mjs";
1
+ import { n as weappTailwindcssPackageDir, t as WeappTailwindcss } from "./webpack-DBhmJ-_P.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.4",
3
+ "version": "5.1.5",
4
4
  "description": "把 tailwindcss 原子化样式思想,带给小程序开发者们! bring tailwindcss to miniprogram developers!",
5
5
  "author": "ice breaker <1324318532@qq.com>",
6
6
  "license": "MIT",
@@ -172,16 +172,26 @@
172
172
  "engines": {
173
173
  "node": "^20.19.0 || >=22.12.0"
174
174
  },
175
+ "tsd": {
176
+ "compilerOptions": {
177
+ "module": "NodeNext",
178
+ "moduleResolution": "NodeNext",
179
+ "paths": {
180
+ "@/*": [
181
+ "./src/*"
182
+ ]
183
+ }
184
+ }
185
+ },
175
186
  "publishConfig": {
176
187
  "access": "public",
177
188
  "registry": "https://registry.npmjs.org"
178
189
  },
179
190
  "dependencies": {
180
- "@ast-core/escape": "~1.0.1",
181
191
  "@babel/parser": "~7.29.7",
182
192
  "@babel/traverse": "~7.29.7",
183
193
  "@babel/types": "~7.29.7",
184
- "@tailwindcss-mangle/engine": "0.1.1",
194
+ "@tailwindcss-mangle/engine": "0.1.2",
185
195
  "@vue/compiler-dom": "^3.5.39",
186
196
  "@weapp-core/escape": "~8.0.0",
187
197
  "comment-json": "^5.0.0",
@@ -194,10 +204,11 @@
194
204
  "semver": "~7.8.5",
195
205
  "yaml": "^2.9.0",
196
206
  "@weapp-tailwindcss/logger": "2.0.0",
197
- "@weapp-tailwindcss/postcss": "3.1.4",
207
+ "@weapp-tailwindcss/postcss": "3.1.5",
198
208
  "@weapp-tailwindcss/reset": "0.1.1",
199
209
  "@weapp-tailwindcss/shared": "2.0.0",
200
- "tailwindcss-config": "2.0.1"
210
+ "tailwindcss-config": "2.0.1",
211
+ "weapp-style-injector": "1.0.0"
201
212
  },
202
213
  "devDependencies": {
203
214
  "htmlparser2": "12.0.0"