weapp-tailwindcss 4.11.2 → 4.12.0-alpha.2

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 (73) hide show
  1. package/README.md +38 -0
  2. package/bin/weapp-tailwindcss.js +21 -1
  3. package/dist/{chunk-AV3XB6EQ.js → chunk-2A4NRLSY.js} +5 -5
  4. package/dist/{chunk-WJIRXC26.js → chunk-6JBFHYFM.js} +134 -128
  5. package/dist/{chunk-OMARW5NC.mjs → chunk-AYJ4HLWZ.mjs} +4 -2
  6. package/dist/{chunk-W3DXDWYC.mjs → chunk-CMNCGACY.mjs} +66 -60
  7. package/dist/{chunk-ZZ36BKM5.mjs → chunk-CQMHHQRN.mjs} +6 -2
  8. package/dist/{chunk-OYSABARD.js → chunk-E7I5TW5K.js} +3 -2
  9. package/dist/{chunk-7LKMJZD2.js → chunk-GMKSBLNY.js} +2 -2
  10. package/dist/{chunk-EFBQ4SQR.mjs → chunk-HL3US2OT.mjs} +1 -1
  11. package/dist/{chunk-AB2RGZQO.mjs → chunk-LWEVOVRD.mjs} +144 -76
  12. package/dist/{chunk-QK6VNNNL.js → chunk-NIS74SI6.js} +8 -6
  13. package/dist/{chunk-CRDOWYG4.js → chunk-ONLKZIRQ.js} +1 -1
  14. package/dist/{chunk-3QHYEMEW.js → chunk-PAAX4FDD.js} +45 -40
  15. package/dist/{chunk-JIERVBTX.mjs → chunk-SHDJA4GG.mjs} +1 -1
  16. package/dist/{chunk-SUKOZ6OG.js → chunk-SRAG3FST.js} +10 -6
  17. package/dist/{chunk-TT5WHNGS.js → chunk-YVRX3F6S.js} +149 -81
  18. package/dist/{chunk-2LH6PZH3.mjs → chunk-ZCH4YINE.mjs} +3 -2
  19. package/dist/{chunk-VGPAKLMZ.mjs → chunk-ZGIN2OAY.mjs} +12 -7
  20. package/dist/cli.js +2233 -158
  21. package/dist/cli.mjs +2238 -163
  22. package/dist/core.d.mts +1 -1
  23. package/dist/core.d.ts +1 -1
  24. package/dist/core.js +14 -9
  25. package/dist/core.mjs +10 -5
  26. package/dist/css-macro/postcss.js +4 -4
  27. package/dist/css-macro/postcss.mjs +2 -2
  28. package/dist/css-macro.js +5 -5
  29. package/dist/css-macro.mjs +2 -2
  30. package/dist/defaults.d.mts +1 -1
  31. package/dist/defaults.d.ts +1 -1
  32. package/dist/defaults.js +1 -1
  33. package/dist/defaults.mjs +1 -1
  34. package/dist/gulp.d.mts +1 -1
  35. package/dist/gulp.d.ts +1 -1
  36. package/dist/gulp.js +5 -5
  37. package/dist/gulp.mjs +4 -4
  38. package/dist/{index-CoXntW_P.d.mts → index-BXrmQelt.d.mts} +29 -1
  39. package/dist/{index-CoXntW_P.d.ts → index-BXrmQelt.d.ts} +29 -1
  40. package/dist/index.d.mts +1 -1
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.js +9 -9
  43. package/dist/index.mjs +7 -7
  44. package/dist/postcss-html-transform.js +1 -1
  45. package/dist/postcss-html-transform.mjs +1 -1
  46. package/dist/presets.d.mts +8 -1
  47. package/dist/presets.d.ts +8 -1
  48. package/dist/presets.js +7 -6
  49. package/dist/presets.mjs +3 -2
  50. package/dist/reset.d.mts +1 -31
  51. package/dist/reset.d.ts +3 -32
  52. package/dist/reset.js +3 -160
  53. package/dist/reset.mjs +3 -160
  54. package/dist/types.d.mts +2 -2
  55. package/dist/types.d.ts +2 -2
  56. package/dist/types.js +1 -1
  57. package/dist/types.mjs +1 -1
  58. package/dist/vite.d.mts +1 -1
  59. package/dist/vite.d.ts +1 -1
  60. package/dist/vite.js +6 -6
  61. package/dist/vite.mjs +4 -4
  62. package/dist/weapp-tw-css-import-rewrite-loader.js +10 -5
  63. package/dist/weapp-tw-runtime-classset-loader.js +9 -4
  64. package/dist/webpack.d.mts +1 -1
  65. package/dist/webpack.d.ts +1 -1
  66. package/dist/webpack.js +7 -7
  67. package/dist/webpack.mjs +5 -5
  68. package/dist/webpack4.d.mts +1 -1
  69. package/dist/webpack4.d.ts +1 -1
  70. package/dist/webpack4.js +65 -56
  71. package/dist/webpack4.mjs +35 -26
  72. package/package.json +12 -7
  73. package/scripts/postinstall.mjs +59 -0
package/dist/webpack4.js CHANGED
@@ -10,14 +10,14 @@
10
10
 
11
11
 
12
12
 
13
- var _chunkAV3XB6EQjs = require('./chunk-AV3XB6EQ.js');
13
+ var _chunk2A4NRLSYjs = require('./chunk-2A4NRLSY.js');
14
14
 
15
15
 
16
16
 
17
17
 
18
18
 
19
19
 
20
- var _chunk7LKMJZD2js = require('./chunk-7LKMJZD2.js');
20
+ var _chunkGMKSBLNYjs = require('./chunk-GMKSBLNY.js');
21
21
 
22
22
 
23
23
  var _chunkOF6MFURRjs = require('./chunk-OF6MFURR.js');
@@ -27,15 +27,16 @@ var _chunkOF6MFURRjs = require('./chunk-OF6MFURR.js');
27
27
 
28
28
 
29
29
 
30
- var _chunkTT5WHNGSjs = require('./chunk-TT5WHNGS.js');
31
30
 
31
+ var _chunkYVRX3F6Sjs = require('./chunk-YVRX3F6S.js');
32
32
 
33
- var _chunkQK6VNNNLjs = require('./chunk-QK6VNNNL.js');
33
+
34
+ var _chunkNIS74SI6js = require('./chunk-NIS74SI6.js');
34
35
  require('./chunk-A5PB4KZT.js');
35
36
 
36
37
 
37
38
  var _chunkDYLQ6UOIjs = require('./chunk-DYLQ6UOI.js');
38
- require('./chunk-CRDOWYG4.js');
39
+ require('./chunk-ONLKZIRQ.js');
39
40
 
40
41
  // src/bundlers/webpack/BaseUnifiedPlugin/v4.ts
41
42
  var _process = require('process'); var _process2 = _interopRequireDefault(_process);
@@ -50,6 +51,13 @@ function resolveWebpackStaleClassNameFallback(option, _compiler) {
50
51
  }
51
52
  return false;
52
53
  }
54
+ function toWebpackV4AssetCompilation(compilation) {
55
+ return compilation;
56
+ }
57
+ function readWebpackV4AssetSource(asset) {
58
+ const source = asset.source();
59
+ return typeof source === "string" ? source : source.toString();
60
+ }
53
61
  function setupWebpackV4EmitHook(options) {
54
62
  const {
55
63
  compiler,
@@ -59,7 +67,7 @@ function setupWebpackV4EmitHook(options) {
59
67
  debug: debug2
60
68
  } = options;
61
69
  const cssHandlerOptionsCache = /* @__PURE__ */ new Map();
62
- compiler.hooks.emit.tapPromise(_chunkTT5WHNGSjs.pluginName, async (compilation) => {
70
+ compiler.hooks.emit.tapPromise(_chunkYVRX3F6Sjs.pluginName, async (compilation) => {
63
71
  await runtimeState.patchPromise;
64
72
  compilerOptions.onStart();
65
73
  debug2("start");
@@ -68,32 +76,32 @@ function setupWebpackV4EmitHook(options) {
68
76
  compilerOptions.cache.calcHashValueChanged(chunk.id, chunk.hash);
69
77
  }
70
78
  }
71
- const assetHashByChunk = _chunkAV3XB6EQjs.createAssetHashByChunkMap.call(void 0, compilation.chunks);
72
- const assets = compilation.assets;
79
+ const assetCompilation = toWebpackV4AssetCompilation(compilation);
80
+ const assetHashByChunk = _chunk2A4NRLSYjs.createAssetHashByChunkMap.call(void 0, compilation.chunks);
81
+ const assets = assetCompilation.assets;
73
82
  const entries = Object.entries(assets);
74
83
  const outputDir = _optionalChain([compiler, 'access', _ => _.options, 'optionalAccess', _2 => _2.output, 'optionalAccess', _3 => _3.path]) ? _path2.default.resolve(compiler.options.output.path) : _process2.default.cwd();
75
84
  const jsAssets = /* @__PURE__ */ new Map();
76
85
  for (const [file] of entries) {
77
86
  if (compilerOptions.jsMatcher(file) || compilerOptions.wxsMatcher(file)) {
78
- const absolute = _chunk7LKMJZD2js.toAbsoluteOutputPath.call(void 0, file, outputDir);
87
+ const absolute = _chunkGMKSBLNYjs.toAbsoluteOutputPath.call(void 0, file, outputDir);
79
88
  jsAssets.set(absolute, file);
80
89
  }
81
90
  }
82
91
  const moduleGraphOptions = {
83
92
  resolve(specifier, importer) {
84
- return _chunk7LKMJZD2js.resolveOutputSpecifier.call(void 0, specifier, importer, outputDir, (candidate) => jsAssets.has(candidate));
93
+ return _chunkGMKSBLNYjs.resolveOutputSpecifier.call(void 0, specifier, importer, outputDir, (candidate) => jsAssets.has(candidate));
85
94
  },
86
95
  load: (id) => {
87
96
  const assetName = jsAssets.get(id);
88
97
  if (!assetName) {
89
98
  return void 0;
90
99
  }
91
- const assetSource = compilation.assets[assetName];
100
+ const assetSource = assetCompilation.assets[assetName];
92
101
  if (!assetSource) {
93
102
  return void 0;
94
103
  }
95
- const source = assetSource.source();
96
- return typeof source === "string" ? source : source.toString();
104
+ return readWebpackV4AssetSource(assetSource);
97
105
  },
98
106
  filter(id) {
99
107
  return jsAssets.has(id);
@@ -108,17 +116,16 @@ function setupWebpackV4EmitHook(options) {
108
116
  if (!assetName) {
109
117
  continue;
110
118
  }
111
- const assetSource = compilation.assets[assetName];
119
+ const assetSource = assetCompilation.assets[assetName];
112
120
  if (!assetSource) {
113
121
  continue;
114
122
  }
115
- const previousSource = assetSource.source();
116
- const previous = typeof previousSource === "string" ? previousSource : previousSource.toString();
123
+ const previous = readWebpackV4AssetSource(assetSource);
117
124
  if (previous === code) {
118
125
  continue;
119
126
  }
120
127
  const source = new (0, _webpacksources.ConcatSource)(code);
121
- compilation.updateAsset(assetName, source);
128
+ assetCompilation.updateAsset(assetName, source);
122
129
  compilerOptions.onUpdate(assetName, previous, code);
123
130
  debug2("js linked handle: %s", assetName);
124
131
  }
@@ -145,7 +152,7 @@ function setupWebpackV4EmitHook(options) {
145
152
  return created;
146
153
  };
147
154
  const staleClassNameFallback = resolveWebpackStaleClassNameFallback(compilerOptions.staleClassNameFallback, compiler);
148
- const runtimeSet = await _chunkTT5WHNGSjs.ensureRuntimeClassSet.call(void 0, runtimeState, {
155
+ const runtimeSet = await _chunkYVRX3F6Sjs.ensureRuntimeClassSet.call(void 0, runtimeState, {
149
156
  // webpack 的 script-only 热更新可能不会触发 runtime classset loader,
150
157
  // 这里强制收集可避免沿用上轮 class set,保证 JS 仅按最新集合精确命中。
151
158
  forceCollect: true,
@@ -159,7 +166,7 @@ function setupWebpackV4EmitHook(options) {
159
166
  if (Array.isArray(groupedEntries.html)) {
160
167
  for (const element of groupedEntries.html) {
161
168
  const [file, originalSource] = element;
162
- const rawSource = originalSource.source().toString();
169
+ const rawSource = readWebpackV4AssetSource(originalSource);
163
170
  const cacheKey = file;
164
171
  const chunkHash = assetHashByChunk.get(file);
165
172
  tasks.push(
@@ -170,7 +177,7 @@ function setupWebpackV4EmitHook(options) {
170
177
  rawSource,
171
178
  hash: chunkHash,
172
179
  applyResult(source) {
173
- compilation.updateAsset(file, source);
180
+ assetCompilation.updateAsset(file, source);
174
181
  },
175
182
  onCacheHit() {
176
183
  debug2("html cache hit: %s", file);
@@ -191,14 +198,13 @@ function setupWebpackV4EmitHook(options) {
191
198
  const jsTaskFactories = [];
192
199
  if (Array.isArray(groupedEntries.js)) {
193
200
  for (const [file] of groupedEntries.js) {
194
- const cacheKey = _chunkAV3XB6EQjs.getCacheKey.call(void 0, file);
195
- const assetSource = compilation.assets[file];
201
+ const cacheKey = _chunk2A4NRLSYjs.getCacheKey.call(void 0, file);
202
+ const assetSource = assetCompilation.assets[file];
196
203
  if (!assetSource) {
197
204
  continue;
198
205
  }
199
- const initialValue = assetSource.source();
200
- const initialRawSource = typeof initialValue === "string" ? initialValue : initialValue.toString();
201
- const absoluteFile = _chunk7LKMJZD2js.toAbsoluteOutputPath.call(void 0, file, outputDir);
206
+ const initialRawSource = readWebpackV4AssetSource(assetSource);
207
+ const absoluteFile = _chunkGMKSBLNYjs.toAbsoluteOutputPath.call(void 0, file, outputDir);
202
208
  const chunkHash = assetHashByChunk.get(file);
203
209
  const sourceAwareHash = chunkHash ? `${chunkHash}:${compilerOptions.cache.computeHash(initialRawSource)}` : void 0;
204
210
  jsTaskFactories.push(async () => {
@@ -209,16 +215,15 @@ function setupWebpackV4EmitHook(options) {
209
215
  rawSource: initialRawSource,
210
216
  hash: sourceAwareHash,
211
217
  applyResult(source) {
212
- compilation.updateAsset(file, source);
218
+ assetCompilation.updateAsset(file, source);
213
219
  },
214
220
  onCacheHit() {
215
221
  debug2("js cache hit: %s", file);
216
222
  },
217
223
  transform: async () => {
218
- const currentAsset = compilation.assets[file];
219
- const currentValue = _optionalChain([currentAsset, 'optionalAccess', _4 => _4.source, 'call', _5 => _5()]);
220
- const currentSource = typeof currentValue === "string" ? currentValue : _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _6 => _6.toString, 'call', _7 => _7()]), () => ( ""));
221
- const { code, linked } = await compilerOptions.jsHandler(currentSource, runtimeSet, {
224
+ const currentAsset = assetCompilation.assets[file];
225
+ const currentSource = currentAsset ? readWebpackV4AssetSource(currentAsset) : "";
226
+ const handlerOptions = {
222
227
  staleClassNameFallback,
223
228
  tailwindcssMajorVersion: runtimeState.twPatcher.majorVersion,
224
229
  filename: absoluteFile,
@@ -226,7 +231,11 @@ function setupWebpackV4EmitHook(options) {
226
231
  babelParserOptions: {
227
232
  sourceFilename: absoluteFile
228
233
  }
229
- });
234
+ };
235
+ if (_chunkYVRX3F6Sjs.shouldSkipJsTransform.call(void 0, currentSource, handlerOptions)) {
236
+ return { result: new (0, _webpacksources.ConcatSource)(currentSource) };
237
+ }
238
+ const { code, linked } = await compilerOptions.jsHandler(currentSource, runtimeSet, handlerOptions);
230
239
  const source = new (0, _webpacksources.ConcatSource)(code);
231
240
  compilerOptions.onUpdate(file, currentSource, code);
232
241
  debug2("js handle: %s", file);
@@ -242,7 +251,7 @@ function setupWebpackV4EmitHook(options) {
242
251
  if (Array.isArray(groupedEntries.css)) {
243
252
  for (const element of groupedEntries.css) {
244
253
  const [file, originalSource] = element;
245
- const rawSource = originalSource.source().toString();
254
+ const rawSource = readWebpackV4AssetSource(originalSource);
246
255
  const cacheKey = file;
247
256
  const chunkHash = assetHashByChunk.get(file);
248
257
  tasks.push(
@@ -253,7 +262,7 @@ function setupWebpackV4EmitHook(options) {
253
262
  rawSource,
254
263
  hash: chunkHash,
255
264
  applyResult(source) {
256
- compilation.updateAsset(file, source);
265
+ assetCompilation.updateAsset(file, source);
257
266
  },
258
267
  onCacheHit() {
259
268
  debug2("css cache hit: %s", file);
@@ -272,7 +281,7 @@ function setupWebpackV4EmitHook(options) {
272
281
  );
273
282
  }
274
283
  }
275
- _chunk7LKMJZD2js.pushConcurrentTaskFactories.call(void 0, tasks, jsTaskFactories);
284
+ _chunkGMKSBLNYjs.pushConcurrentTaskFactories.call(void 0, tasks, jsTaskFactories);
276
285
  await Promise.all(tasks);
277
286
  debug2("end");
278
287
  compilerOptions.onEnd();
@@ -295,9 +304,9 @@ function setupWebpackV4Loaders(options) {
295
304
  getClassSetInLoader,
296
305
  debug: debug2
297
306
  } = options;
298
- const isMpxApp = _chunkAV3XB6EQjs.isMpx.call(void 0, appType);
307
+ const isMpxApp = _chunk2A4NRLSYjs.isMpx.call(void 0, appType);
299
308
  if (shouldRewriteCssImports && isMpxApp) {
300
- _chunkAV3XB6EQjs.ensureMpxTailwindcssAliases.call(void 0, compiler, weappTailwindcssPackageDir2);
309
+ _chunk2A4NRLSYjs.ensureMpxTailwindcssAliases.call(void 0, compiler, weappTailwindcssPackageDir2);
301
310
  }
302
311
  const runtimeClassSetLoader = _nullishCoalesce(runtimeLoaderPath, () => ( _path2.default.resolve(__dirname, "./weapp-tw-runtime-classset-loader.js")));
303
312
  const runtimeCssImportRewriteLoader = shouldRewriteCssImports ? _nullishCoalesce(runtimeCssImportRewriteLoaderPath, () => ( _path2.default.resolve(__dirname, "./weapp-tw-css-import-rewrite-loader.js"))) : void 0;
@@ -310,12 +319,12 @@ function setupWebpackV4Loaders(options) {
310
319
  const classSetLoaderOptions = {
311
320
  getClassSet: getClassSetInLoader
312
321
  };
313
- const { findRewriteAnchor, findClassSetAnchor } = _chunkAV3XB6EQjs.createLoaderAnchorFinders.call(void 0, appType);
322
+ const { findRewriteAnchor, findClassSetAnchor } = _chunk2A4NRLSYjs.createLoaderAnchorFinders.call(void 0, appType);
314
323
  const cssImportRewriteLoaderOptions = runtimeLoaderRewriteOptions ? {
315
324
  rewriteCssImports: runtimeLoaderRewriteOptions
316
325
  } : void 0;
317
326
  if (runtimeCssImportRewriteLoader && shouldRewriteCssImports && cssImportRewriteLoaderOptions && isMpxApp) {
318
- _chunkAV3XB6EQjs.injectMpxCssRewritePreRules.call(void 0, compiler, runtimeCssImportRewriteLoader, cssImportRewriteLoaderOptions);
327
+ _chunk2A4NRLSYjs.injectMpxCssRewritePreRules.call(void 0, compiler, runtimeCssImportRewriteLoader, cssImportRewriteLoaderOptions);
319
328
  }
320
329
  const createRuntimeClassSetLoaderEntry = () => ({
321
330
  loader: runtimeClassSetLoader,
@@ -334,19 +343,19 @@ function setupWebpackV4Loaders(options) {
334
343
  type: null
335
344
  };
336
345
  };
337
- compiler.hooks.compilation.tap(_chunkTT5WHNGSjs.pluginName, (compilation) => {
338
- compilation.hooks.normalModuleLoader.tap(_chunkTT5WHNGSjs.pluginName, (_loaderContext, module) => {
346
+ compiler.hooks.compilation.tap(_chunkYVRX3F6Sjs.pluginName, (compilation) => {
347
+ compilation.hooks.normalModuleLoader.tap(_chunkYVRX3F6Sjs.pluginName, (_loaderContext, module) => {
339
348
  const hasRuntimeLoader = runtimeClassSetLoaderExists || runtimeCssImportRewriteLoaderExists;
340
349
  if (!hasRuntimeLoader) {
341
350
  return;
342
351
  }
343
- if (shouldRewriteCssImports && _chunkAV3XB6EQjs.isMpx.call(void 0, appType) && typeof _loaderContext.resolve === "function") {
344
- _chunkAV3XB6EQjs.patchMpxLoaderResolve.call(void 0, _loaderContext, weappTailwindcssPackageDir2, true);
352
+ if (shouldRewriteCssImports && _chunk2A4NRLSYjs.isMpx.call(void 0, appType) && typeof _loaderContext.resolve === "function") {
353
+ _chunk2A4NRLSYjs.patchMpxLoaderResolve.call(void 0, _loaderContext, weappTailwindcssPackageDir2, true);
345
354
  }
346
355
  const loaderEntries = module.loaders || [];
347
356
  let rewriteAnchorIdx = findRewriteAnchor(loaderEntries);
348
357
  const classSetAnchorIdx = findClassSetAnchor(loaderEntries);
349
- const isCssModule = _chunkAV3XB6EQjs.isCssLikeModuleResource.call(void 0, module.resource, compilerOptions.cssMatcher, appType);
358
+ const isCssModule = _chunk2A4NRLSYjs.isCssLikeModuleResource.call(void 0, module.resource, compilerOptions.cssMatcher, appType);
350
359
  if (_process2.default.env.WEAPP_TW_LOADER_DEBUG && isCssModule) {
351
360
  debug2("loader hook css module: %s loaders=%o anchors=%o", module.resource, loaderEntries.map((x) => x.loader), { rewriteAnchorIdx, classSetAnchorIdx });
352
361
  }
@@ -367,7 +376,7 @@ function setupWebpackV4Loaders(options) {
367
376
  };
368
377
  if (runtimeLoaderRewriteOptions && runtimeCssImportRewriteLoaderExists && cssImportRewriteLoaderOptions && runtimeCssImportRewriteLoader) {
369
378
  const existingIndex = loaderEntries.findIndex(
370
- (entry) => _optionalChain([entry, 'access', _8 => _8.loader, 'optionalAccess', _9 => _9.includes, 'optionalCall', _10 => _10(runtimeCssImportRewriteLoader)])
379
+ (entry) => _optionalChain([entry, 'access', _4 => _4.loader, 'optionalAccess', _5 => _5.includes, 'optionalCall', _6 => _6(runtimeCssImportRewriteLoader)])
371
380
  );
372
381
  const rewriteEntry = existingIndex !== -1 ? loaderEntries.splice(existingIndex, 1)[0] : createCssImportRewriteLoaderEntry();
373
382
  if (rewriteEntry) {
@@ -380,7 +389,7 @@ function setupWebpackV4Loaders(options) {
380
389
  rewriteAnchorIdx = findRewriteAnchor(loaderEntries);
381
390
  }
382
391
  }
383
- if (runtimeClassSetLoaderExists && !_chunkAV3XB6EQjs.hasLoaderEntry.call(void 0, loaderEntries, runtimeClassSetLoader)) {
392
+ if (runtimeClassSetLoaderExists && !_chunk2A4NRLSYjs.hasLoaderEntry.call(void 0, loaderEntries, runtimeClassSetLoader)) {
384
393
  const anchorIndex = findClassSetAnchor(loaderEntries);
385
394
  if (anchorIndex === -1) {
386
395
  anchorlessInsert(createRuntimeClassSetLoaderEntry(), "before");
@@ -394,11 +403,11 @@ function setupWebpackV4Loaders(options) {
394
403
  }
395
404
 
396
405
  // src/bundlers/webpack/BaseUnifiedPlugin/v4.ts
397
- var debug = _chunkTT5WHNGSjs.createDebug.call(void 0, );
398
- var weappTailwindcssPackageDir = _chunk7LKMJZD2js.resolvePackageDir.call(void 0, "weapp-tailwindcss");
406
+ var debug = _chunkYVRX3F6Sjs.createDebug.call(void 0, );
407
+ var weappTailwindcssPackageDir = _chunkGMKSBLNYjs.resolvePackageDir.call(void 0, "weapp-tailwindcss");
399
408
  var UnifiedWebpackPluginV4 = class {
400
409
  constructor(options = {}) {
401
- this.options = _chunkTT5WHNGSjs.getCompilerContext.call(void 0, options);
410
+ this.options = _chunkYVRX3F6Sjs.getCompilerContext.call(void 0, options);
402
411
  this.appType = this.options.appType;
403
412
  }
404
413
  apply(compiler) {
@@ -411,22 +420,22 @@ var UnifiedWebpackPluginV4 = class {
411
420
  twPatcher: initialTwPatcher,
412
421
  refreshTailwindcssPatcher
413
422
  } = this.options;
414
- const disabledOptions = _chunk7LKMJZD2js.resolveDisabledOptions.call(void 0, disabled);
423
+ const disabledOptions = _chunkGMKSBLNYjs.resolveDisabledOptions.call(void 0, disabled);
415
424
  const isTailwindcssV4 = (_nullishCoalesce(initialTwPatcher.majorVersion, () => ( 0))) >= 4;
416
425
  const shouldRewriteCssImports = isTailwindcssV4 && this.options.rewriteCssImports !== false && !disabledOptions.rewriteCssImports;
417
- const isMpxApp = _chunkAV3XB6EQjs.isMpx.call(void 0, this.appType);
426
+ const isMpxApp = _chunk2A4NRLSYjs.isMpx.call(void 0, this.appType);
418
427
  if (shouldRewriteCssImports) {
419
- _chunkAV3XB6EQjs.applyTailwindcssCssImportRewrite.call(void 0, compiler, {
428
+ _chunk2A4NRLSYjs.applyTailwindcssCssImportRewrite.call(void 0, compiler, {
420
429
  pkgDir: weappTailwindcssPackageDir,
421
430
  enabled: true,
422
431
  appType: this.appType
423
432
  });
424
- _chunkAV3XB6EQjs.setupMpxTailwindcssRedirect.call(void 0, weappTailwindcssPackageDir, isMpxApp);
433
+ _chunk2A4NRLSYjs.setupMpxTailwindcssRedirect.call(void 0, weappTailwindcssPackageDir, isMpxApp);
425
434
  }
426
435
  if (disabledOptions.plugin) {
427
436
  return;
428
437
  }
429
- const patchRecorderState = _chunkTT5WHNGSjs.setupPatchRecorder.call(void 0, initialTwPatcher, this.options.tailwindcssBasedir, {
438
+ const patchRecorderState = _chunkYVRX3F6Sjs.setupPatchRecorder.call(void 0, initialTwPatcher, this.options.tailwindcssBasedir, {
430
439
  source: "runtime",
431
440
  cwd: _nullishCoalesce(this.options.tailwindcssBasedir, () => ( _process2.default.cwd()))
432
441
  });
@@ -438,17 +447,17 @@ var UnifiedWebpackPluginV4 = class {
438
447
  };
439
448
  let runtimeSetPrepared = false;
440
449
  let runtimeSetSignature;
441
- compiler.hooks.compilation.tap(_chunkTT5WHNGSjs.pluginName, () => {
450
+ compiler.hooks.compilation.tap(_chunkYVRX3F6Sjs.pluginName, () => {
442
451
  runtimeSetPrepared = false;
443
452
  });
444
453
  async function getClassSetInLoader() {
445
454
  if (runtimeSetPrepared) {
446
455
  return;
447
456
  }
448
- const signature = _chunkQK6VNNNLjs.getRuntimeClassSetSignature.call(void 0, runtimeState.twPatcher);
457
+ const signature = _chunkNIS74SI6js.getRuntimeClassSetSignature.call(void 0, runtimeState.twPatcher);
449
458
  const forceRefresh = signature !== runtimeSetSignature;
450
459
  runtimeSetPrepared = true;
451
- await _chunkTT5WHNGSjs.ensureRuntimeClassSet.call(void 0, runtimeState, {
460
+ await _chunkYVRX3F6Sjs.ensureRuntimeClassSet.call(void 0, runtimeState, {
452
461
  forceRefresh,
453
462
  forceCollect: true,
454
463
  clearCache: forceRefresh,
package/dist/webpack4.mjs CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  isMpx,
11
11
  patchMpxLoaderResolve,
12
12
  setupMpxTailwindcssRedirect
13
- } from "./chunk-JIERVBTX.mjs";
13
+ } from "./chunk-SHDJA4GG.mjs";
14
14
  import {
15
15
  pushConcurrentTaskFactories,
16
16
  resolveDisabledOptions,
@@ -26,18 +26,19 @@ import {
26
26
  ensureRuntimeClassSet,
27
27
  getCompilerContext,
28
28
  pluginName,
29
- setupPatchRecorder
30
- } from "./chunk-AB2RGZQO.mjs";
29
+ setupPatchRecorder,
30
+ shouldSkipJsTransform
31
+ } from "./chunk-LWEVOVRD.mjs";
31
32
  import {
32
33
  getRuntimeClassSetSignature
33
- } from "./chunk-OMARW5NC.mjs";
34
+ } from "./chunk-AYJ4HLWZ.mjs";
34
35
  import "./chunk-XAKAD2CR.mjs";
35
36
  import {
36
37
  getGroupedEntries
37
38
  } from "./chunk-OOHJLO5M.mjs";
38
39
  import {
39
40
  __dirname
40
- } from "./chunk-EFBQ4SQR.mjs";
41
+ } from "./chunk-HL3US2OT.mjs";
41
42
 
42
43
  // src/bundlers/webpack/BaseUnifiedPlugin/v4.ts
43
44
  import process3 from "process";
@@ -52,6 +53,13 @@ function resolveWebpackStaleClassNameFallback(option, _compiler) {
52
53
  }
53
54
  return false;
54
55
  }
56
+ function toWebpackV4AssetCompilation(compilation) {
57
+ return compilation;
58
+ }
59
+ function readWebpackV4AssetSource(asset) {
60
+ const source = asset.source();
61
+ return typeof source === "string" ? source : source.toString();
62
+ }
55
63
  function setupWebpackV4EmitHook(options) {
56
64
  const {
57
65
  compiler,
@@ -70,8 +78,9 @@ function setupWebpackV4EmitHook(options) {
70
78
  compilerOptions.cache.calcHashValueChanged(chunk.id, chunk.hash);
71
79
  }
72
80
  }
81
+ const assetCompilation = toWebpackV4AssetCompilation(compilation);
73
82
  const assetHashByChunk = createAssetHashByChunkMap(compilation.chunks);
74
- const assets = compilation.assets;
83
+ const assets = assetCompilation.assets;
75
84
  const entries = Object.entries(assets);
76
85
  const outputDir = compiler.options?.output?.path ? path.resolve(compiler.options.output.path) : process.cwd();
77
86
  const jsAssets = /* @__PURE__ */ new Map();
@@ -90,12 +99,11 @@ function setupWebpackV4EmitHook(options) {
90
99
  if (!assetName) {
91
100
  return void 0;
92
101
  }
93
- const assetSource = compilation.assets[assetName];
102
+ const assetSource = assetCompilation.assets[assetName];
94
103
  if (!assetSource) {
95
104
  return void 0;
96
105
  }
97
- const source = assetSource.source();
98
- return typeof source === "string" ? source : source.toString();
106
+ return readWebpackV4AssetSource(assetSource);
99
107
  },
100
108
  filter(id) {
101
109
  return jsAssets.has(id);
@@ -110,17 +118,16 @@ function setupWebpackV4EmitHook(options) {
110
118
  if (!assetName) {
111
119
  continue;
112
120
  }
113
- const assetSource = compilation.assets[assetName];
121
+ const assetSource = assetCompilation.assets[assetName];
114
122
  if (!assetSource) {
115
123
  continue;
116
124
  }
117
- const previousSource = assetSource.source();
118
- const previous = typeof previousSource === "string" ? previousSource : previousSource.toString();
125
+ const previous = readWebpackV4AssetSource(assetSource);
119
126
  if (previous === code) {
120
127
  continue;
121
128
  }
122
129
  const source = new ConcatSource(code);
123
- compilation.updateAsset(assetName, source);
130
+ assetCompilation.updateAsset(assetName, source);
124
131
  compilerOptions.onUpdate(assetName, previous, code);
125
132
  debug2("js linked handle: %s", assetName);
126
133
  }
@@ -161,7 +168,7 @@ function setupWebpackV4EmitHook(options) {
161
168
  if (Array.isArray(groupedEntries.html)) {
162
169
  for (const element of groupedEntries.html) {
163
170
  const [file, originalSource] = element;
164
- const rawSource = originalSource.source().toString();
171
+ const rawSource = readWebpackV4AssetSource(originalSource);
165
172
  const cacheKey = file;
166
173
  const chunkHash = assetHashByChunk.get(file);
167
174
  tasks.push(
@@ -172,7 +179,7 @@ function setupWebpackV4EmitHook(options) {
172
179
  rawSource,
173
180
  hash: chunkHash,
174
181
  applyResult(source) {
175
- compilation.updateAsset(file, source);
182
+ assetCompilation.updateAsset(file, source);
176
183
  },
177
184
  onCacheHit() {
178
185
  debug2("html cache hit: %s", file);
@@ -194,12 +201,11 @@ function setupWebpackV4EmitHook(options) {
194
201
  if (Array.isArray(groupedEntries.js)) {
195
202
  for (const [file] of groupedEntries.js) {
196
203
  const cacheKey = getCacheKey(file);
197
- const assetSource = compilation.assets[file];
204
+ const assetSource = assetCompilation.assets[file];
198
205
  if (!assetSource) {
199
206
  continue;
200
207
  }
201
- const initialValue = assetSource.source();
202
- const initialRawSource = typeof initialValue === "string" ? initialValue : initialValue.toString();
208
+ const initialRawSource = readWebpackV4AssetSource(assetSource);
203
209
  const absoluteFile = toAbsoluteOutputPath(file, outputDir);
204
210
  const chunkHash = assetHashByChunk.get(file);
205
211
  const sourceAwareHash = chunkHash ? `${chunkHash}:${compilerOptions.cache.computeHash(initialRawSource)}` : void 0;
@@ -211,16 +217,15 @@ function setupWebpackV4EmitHook(options) {
211
217
  rawSource: initialRawSource,
212
218
  hash: sourceAwareHash,
213
219
  applyResult(source) {
214
- compilation.updateAsset(file, source);
220
+ assetCompilation.updateAsset(file, source);
215
221
  },
216
222
  onCacheHit() {
217
223
  debug2("js cache hit: %s", file);
218
224
  },
219
225
  transform: async () => {
220
- const currentAsset = compilation.assets[file];
221
- const currentValue = currentAsset?.source();
222
- const currentSource = typeof currentValue === "string" ? currentValue : currentValue?.toString() ?? "";
223
- const { code, linked } = await compilerOptions.jsHandler(currentSource, runtimeSet, {
226
+ const currentAsset = assetCompilation.assets[file];
227
+ const currentSource = currentAsset ? readWebpackV4AssetSource(currentAsset) : "";
228
+ const handlerOptions = {
224
229
  staleClassNameFallback,
225
230
  tailwindcssMajorVersion: runtimeState.twPatcher.majorVersion,
226
231
  filename: absoluteFile,
@@ -228,7 +233,11 @@ function setupWebpackV4EmitHook(options) {
228
233
  babelParserOptions: {
229
234
  sourceFilename: absoluteFile
230
235
  }
231
- });
236
+ };
237
+ if (shouldSkipJsTransform(currentSource, handlerOptions)) {
238
+ return { result: new ConcatSource(currentSource) };
239
+ }
240
+ const { code, linked } = await compilerOptions.jsHandler(currentSource, runtimeSet, handlerOptions);
232
241
  const source = new ConcatSource(code);
233
242
  compilerOptions.onUpdate(file, currentSource, code);
234
243
  debug2("js handle: %s", file);
@@ -244,7 +253,7 @@ function setupWebpackV4EmitHook(options) {
244
253
  if (Array.isArray(groupedEntries.css)) {
245
254
  for (const element of groupedEntries.css) {
246
255
  const [file, originalSource] = element;
247
- const rawSource = originalSource.source().toString();
256
+ const rawSource = readWebpackV4AssetSource(originalSource);
248
257
  const cacheKey = file;
249
258
  const chunkHash = assetHashByChunk.get(file);
250
259
  tasks.push(
@@ -255,7 +264,7 @@ function setupWebpackV4EmitHook(options) {
255
264
  rawSource,
256
265
  hash: chunkHash,
257
266
  applyResult(source) {
258
- compilation.updateAsset(file, source);
267
+ assetCompilation.updateAsset(file, source);
259
268
  },
260
269
  onCacheHit() {
261
270
  debug2("css cache hit: %s", file);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "weapp-tailwindcss",
3
- "version": "4.11.2",
3
+ "version": "4.12.0-alpha.2",
4
4
  "description": "把 tailwindcss 原子化样式思想,带给小程序开发者们! bring tailwindcss to miniprogram developers!",
5
5
  "author": "ice breaker <1324318532@qq.com>",
6
6
  "license": "MIT",
@@ -150,13 +150,14 @@
150
150
  "dist",
151
151
  "index.css",
152
152
  "preflight.css",
153
+ "scripts/postinstall.mjs",
153
154
  "theme.css",
154
155
  "uni-app-x.css",
155
156
  "utilities.css",
156
157
  "with-layer.css"
157
158
  ],
158
159
  "engines": {
159
- "node": "^18.17.0 || >=20.5.0"
160
+ "node": "^20.19.0 || >=22.12.0"
160
161
  },
161
162
  "publishConfig": {
162
163
  "access": "public",
@@ -168,8 +169,8 @@
168
169
  "@babel/traverse": "~7.29.0",
169
170
  "@babel/types": "~7.29.0",
170
171
  "@tailwindcss-mangle/config": "^7.0.0",
171
- "@vue/compiler-dom": "^3.5.31",
172
- "@vue/compiler-sfc": "^3.5.31",
172
+ "@vue/compiler-dom": "^3.5.33",
173
+ "@vue/compiler-sfc": "^3.5.33",
173
174
  "@weapp-core/escape": "~7.0.0",
174
175
  "@weapp-core/regex": "~1.0.1",
175
176
  "cac": "6.7.14",
@@ -185,10 +186,14 @@
185
186
  "tailwindcss-patch": "9.0.0",
186
187
  "webpack-sources": "3.3.4",
187
188
  "yaml": "^2.8.3",
189
+ "@weapp-tailwindcss/postcss": "2.2.0-alpha.1",
188
190
  "@weapp-tailwindcss/logger": "1.1.0",
189
- "@weapp-tailwindcss/postcss": "2.1.7",
191
+ "@weapp-tailwindcss/reset": "0.1.0-next.0",
190
192
  "@weapp-tailwindcss/shared": "1.1.3"
191
193
  },
194
+ "devDependencies": {
195
+ "fast-check": "^4.7.0"
196
+ },
192
197
  "scripts": {
193
198
  "dev": "tsup --watch --sourcemap",
194
199
  "build": "tsup && node scripts/ensure-escape-dts.mjs",
@@ -196,7 +201,7 @@
196
201
  "build:cli": "cd plugins/cli && pnpm run build",
197
202
  "build:css": "tsx scripts/build-css.ts",
198
203
  "build:weapp-theme": "tsx scripts/build-weapp-theme.ts",
199
- "test": "npm run postinstall && vitest run",
204
+ "test": "pnpm run cli:patch && vitest run",
200
205
  "test:dev": "vitest",
201
206
  "test:ui": "vitest --ui",
202
207
  "bench": "vitest bench --config ./vitest.config.ts",
@@ -213,7 +218,7 @@
213
218
  "release": "tsx scripts/release.ts",
214
219
  "lint": "eslint .",
215
220
  "lint:fix": "eslint ./src --fix",
216
- "postinstall": "node bin/weapp-tailwindcss.js patch",
221
+ "postinstall": "node scripts/postinstall.mjs",
217
222
  "bench:vite-dev-hmr": "tsx scripts/vite-dev-hmr-bench.ts",
218
223
  "test:watch-hmr": "node --import tsx scripts/watch-hmr-regression/index.ts"
219
224
  }
@@ -0,0 +1,59 @@
1
+ import { spawnSync } from 'node:child_process'
2
+ import process from 'node:process'
3
+ import { fileURLToPath, pathToFileURL } from 'node:url'
4
+
5
+ const cliPath = fileURLToPath(new URL('../bin/weapp-tailwindcss.js', import.meta.url))
6
+ const missingRuntimeModuleMessage = `${[
7
+ '[weapp-tailwindcss] postinstall patch skipped because a runtime module is missing.',
8
+ 'Run `pnpm --filter weapp-tailwindcss build` before strict CLI validation.',
9
+ ].join(' ')}\n`
10
+
11
+ export function isMissingRuntimeModuleOutput(output) {
12
+ return /MODULE_NOT_FOUND|Cannot find module/.test(output)
13
+ }
14
+
15
+ export function resolvePostinstallPatchExitCode(result) {
16
+ if (result.error) {
17
+ return {
18
+ code: 0,
19
+ message: `[weapp-tailwindcss] postinstall patch skipped: ${result.error.message}\n`,
20
+ }
21
+ }
22
+
23
+ if (result.status && isMissingRuntimeModuleOutput(`${result.stderr ?? ''}\n${result.stdout ?? ''}`)) {
24
+ return {
25
+ code: 0,
26
+ message: missingRuntimeModuleMessage,
27
+ }
28
+ }
29
+
30
+ return {
31
+ code: result.status ?? 0,
32
+ }
33
+ }
34
+
35
+ export function runPostinstallPatch() {
36
+ const result = spawnSync(process.execPath, [cliPath, 'patch'], {
37
+ encoding: 'utf8',
38
+ })
39
+
40
+ if (result.stdout) {
41
+ process.stdout.write(result.stdout)
42
+ }
43
+
44
+ if (result.stderr) {
45
+ process.stderr.write(result.stderr)
46
+ }
47
+
48
+ const resolved = resolvePostinstallPatchExitCode(result)
49
+ if (resolved.message) {
50
+ process.stderr.write(resolved.message)
51
+ }
52
+
53
+ process.exitCode = resolved.code
54
+ }
55
+
56
+ const entryPoint = process.argv[1] ? pathToFileURL(process.argv[1]).href : undefined
57
+ if (import.meta.url === entryPoint) {
58
+ runPostinstallPatch()
59
+ }