weapp-tailwindcss 5.0.0-next.3 → 5.0.0-next.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.
- package/README.md +4 -5
- package/bin/weapp-tailwindcss.js +1 -21
- package/dist/bundlers/shared/generator-css.d.ts +5 -2
- package/dist/bundlers/vite/generate-bundle.d.ts +1 -0
- package/dist/bundlers/vite/index.d.ts +1 -1
- package/dist/bundlers/vite/rewrite-css-imports.d.ts +1 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-loaders.d.ts +0 -1
- package/dist/bundlers/webpack/loaders/weapp-tw-css-import-rewrite-loader.d.ts +1 -1
- package/dist/cli/context.d.ts +0 -3
- package/dist/cli/mount-options.d.ts +2 -0
- package/dist/cli.js +8 -2
- package/dist/cli.mjs +8 -2
- package/dist/constants.d.ts +1 -1
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/css-macro.d.ts +1 -0
- package/dist/defaults.js +5 -7
- package/dist/defaults.mjs +5 -7
- package/dist/generator/index.d.ts +1 -1
- package/dist/generator/options.d.ts +3 -4
- package/dist/{generator-mmhXzZnv.js → generator-9UEp8OoQ.js} +259 -21
- package/dist/{generator-Y-Ikv4Fu.mjs → generator-Dpp-5s8z.mjs} +260 -22
- package/dist/{generator-css-CRLrHW4F.js → generator-css-CGueCYbX.js} +173 -32
- package/dist/{generator-css-Bwy_Uz89.mjs → generator-css-MyjZhF0z.mjs} +173 -32
- package/dist/generator.js +1 -1
- package/dist/generator.mjs +1 -1
- package/dist/gulp.js +15 -11
- package/dist/gulp.mjs +15 -11
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/js/index.d.ts +1 -0
- package/dist/js/literal-transform.d.ts +2 -0
- package/dist/{logger-BoVx1Dbt.mjs → logger-1gx9UllH.mjs} +21 -51
- package/dist/{logger-BZ45DZJT.js → logger-D9clu_3f.js} +21 -51
- package/dist/patcher-options-DnqazL9E.js +34 -0
- package/dist/patcher-options-GuOwX0-k.mjs +17 -0
- package/dist/postcss.d.ts +2 -2
- package/dist/postcss.js +37 -28
- package/dist/postcss.mjs +37 -28
- package/dist/presets.js +1 -1
- package/dist/presets.mjs +1 -1
- package/dist/{recorder-XdFvVASS.mjs → recorder-BIW3Kuke.mjs} +5 -12
- package/dist/{recorder-GdTJ3QqX.js → recorder-D4BKt75Q.js} +5 -12
- package/dist/reset.d.ts +1 -0
- package/dist/{css-imports-BbrbluP9.js → run-tasks-Cq5A5nVD.js} +6 -55
- package/dist/{css-imports-CSdPq_Sc.mjs → run-tasks-DUVrDJGl.mjs} +5 -42
- package/dist/tailwindcss/miniprogram.d.ts +5 -1
- package/dist/tailwindcss/patcher-options.d.ts +3 -51
- package/dist/tailwindcss/patcher.d.ts +1 -2
- package/dist/tailwindcss/v4/patcher-options.d.ts +1 -23
- package/dist/tailwindcss/v4/patcher.d.ts +1 -0
- package/dist/tailwindcss/v4-engine/types.d.ts +1 -1
- package/dist/tailwindcss/version.d.ts +4 -0
- package/dist/typedoc.export.d.ts +0 -2
- package/dist/types/index.d.ts +1 -3
- package/dist/types/shared.d.ts +3 -0
- package/dist/types/user-defined-options/general.d.ts +0 -2
- package/dist/types/user-defined-options/important.d.ts +3 -3
- package/dist/utils/disabled.d.ts +2 -3
- package/dist/version-CWBxRFPB.js +56 -0
- package/dist/version-WNz3MwRv.mjs +49 -0
- package/dist/{vite-DgRh_GXn.js → vite-BkMGwDeH.js} +106 -39
- package/dist/{vite-BDywuCjn.mjs → vite-fDM-UQpR.mjs} +89 -22
- package/dist/vite.d.ts +1 -2
- package/dist/vite.js +3 -4
- package/dist/vite.mjs +2 -2
- package/dist/weapp-tw-css-import-rewrite-loader.js +1 -1
- package/dist/{webpack-CAJR4hhP.js → webpack-CICGEKT9.js} +225 -43
- package/dist/{webpack-CiHqVZTg.mjs → webpack-D2Wdk28V.mjs} +214 -27
- package/dist/webpack.js +1 -1
- package/dist/webpack.mjs +1 -1
- package/package.json +21 -30
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v4-assets.d.ts +0 -14
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v4-loaders.d.ts +0 -15
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v4.d.ts +0 -9
- package/dist/experimental/index.d.ts +0 -2
- package/dist/experimental/oxc/ast-utils.d.ts +0 -30
- package/dist/experimental/oxc/index.d.ts +0 -2
- package/dist/experimental/oxc/module-specifiers.d.ts +0 -2
- package/dist/experimental/shared/cache.d.ts +0 -3
- package/dist/experimental/shared/transform.d.ts +0 -3
- package/dist/experimental/shared.d.ts +0 -8
- package/dist/experimental/swc/ast-utils.d.ts +0 -30
- package/dist/experimental/swc/index.d.ts +0 -2
- package/dist/experimental/swc/module-specifiers.d.ts +0 -2
- package/dist/loader-anchors-1MumTAtA.mjs +0 -205
- package/dist/loader-anchors-TrFvT6g1.js +0 -273
- package/dist/patcher-options-6gJN2EXy.js +0 -115
- package/dist/patcher-options-DQfR5xxT.mjs +0 -92
- package/dist/types/disabled-options.d.ts +0 -4
- package/dist/webpack4.d.ts +0 -4
- package/dist/webpack4.js +0 -387
- package/dist/webpack4.mjs +0 -379
- package/scripts/postinstall.mjs +0 -59
|
@@ -1,22 +1,184 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-8l464Juk.js");
|
|
2
|
-
const require_patcher_options = require("./patcher-options-
|
|
3
|
-
const require_recorder = require("./recorder-
|
|
2
|
+
const require_patcher_options = require("./patcher-options-DnqazL9E.js");
|
|
3
|
+
const require_recorder = require("./recorder-D4BKt75Q.js");
|
|
4
4
|
const require_utils = require("./utils-DmC9_In3.js");
|
|
5
|
-
const require_logger = require("./logger-
|
|
6
|
-
const require_generator_css = require("./generator-css-
|
|
7
|
-
const
|
|
8
|
-
|
|
5
|
+
const require_logger = require("./logger-D9clu_3f.js");
|
|
6
|
+
const require_generator_css = require("./generator-css-CGueCYbX.js");
|
|
7
|
+
const require_run_tasks = require("./run-tasks-Cq5A5nVD.js");
|
|
8
|
+
let node_module = require("node:module");
|
|
9
|
+
node_module = require_chunk.__toESM(node_module);
|
|
9
10
|
let node_path = require("node:path");
|
|
10
11
|
node_path = require_chunk.__toESM(node_path);
|
|
11
12
|
let node_process = require("node:process");
|
|
12
13
|
node_process = require_chunk.__toESM(node_process);
|
|
13
14
|
let node_fs = require("node:fs");
|
|
14
15
|
node_fs = require_chunk.__toESM(node_fs);
|
|
15
|
-
//#region src/
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
//#region src/shared/tailwindcss-css-redirect.ts
|
|
17
|
+
const moduleWithMutableResolve = node_module.default;
|
|
18
|
+
const patched = /* @__PURE__ */ new WeakSet();
|
|
19
|
+
function installTailwindcssCssRedirect(pkgDir) {
|
|
20
|
+
const target = node_path.default.join(pkgDir, "index.css");
|
|
21
|
+
const original = moduleWithMutableResolve._resolveFilename;
|
|
22
|
+
if (patched.has(original)) return;
|
|
23
|
+
const replacements = new Set(["tailwindcss", "tailwindcss$"]);
|
|
24
|
+
const resolveTailwindcssCss = (request, parent, isMain, options) => {
|
|
25
|
+
if (replacements.has(request)) return target;
|
|
26
|
+
if (request.startsWith("tailwindcss/")) return node_path.default.join(pkgDir, request.slice(12));
|
|
27
|
+
return original(request, parent, isMain, options);
|
|
28
|
+
};
|
|
29
|
+
moduleWithMutableResolve._resolveFilename = resolveTailwindcssCss;
|
|
30
|
+
patched.add(moduleWithMutableResolve._resolveFilename);
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/shared/mpx.ts
|
|
34
|
+
const require$1 = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href);
|
|
35
|
+
const MPX_STYLE_RESOURCE_QUERY_RE$1 = /(?:^|[?&])type=styles(?:&|$)/;
|
|
36
|
+
function isMpxStyleResourceQuery(query) {
|
|
37
|
+
if (typeof query !== "string") return false;
|
|
38
|
+
return MPX_STYLE_RESOURCE_QUERY_RE$1.test(query);
|
|
39
|
+
}
|
|
40
|
+
function isMpx(appType) {
|
|
41
|
+
return appType === "mpx";
|
|
42
|
+
}
|
|
43
|
+
function getTailwindcssCssEntry(pkgDir) {
|
|
44
|
+
return node_path.default.join(pkgDir, "index.css");
|
|
45
|
+
}
|
|
46
|
+
function isMpxWebpackPluginRequest(request) {
|
|
47
|
+
return request === "@mpxjs/webpack-plugin" || Boolean(request?.startsWith("@mpxjs/webpack-plugin/"));
|
|
48
|
+
}
|
|
49
|
+
function addMpxWebpackPluginAlias(alias, pkgDir) {
|
|
50
|
+
if (Array.isArray(alias)) alias.push({
|
|
51
|
+
name: /^@mpxjs\/webpack-plugin\//,
|
|
52
|
+
alias: pkgDir
|
|
53
|
+
});
|
|
54
|
+
else {
|
|
55
|
+
alias["@mpxjs/webpack-plugin"] = pkgDir;
|
|
56
|
+
alias["@mpxjs/webpack-plugin$"] = pkgDir;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir) {
|
|
60
|
+
compiler.options.resolveLoader = compiler.options.resolveLoader || {};
|
|
61
|
+
const alias = compiler.options.resolveLoader.alias ?? {};
|
|
62
|
+
compiler.options.resolveLoader.alias = alias;
|
|
63
|
+
addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
|
|
64
|
+
}
|
|
65
|
+
function ensureMpxTailwindcssAliases(compiler, pkgDir) {
|
|
66
|
+
const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
|
|
67
|
+
const mpxWebpackPluginDir = node_path.default.dirname(require$1.resolve("@mpxjs/webpack-plugin/package.json"));
|
|
68
|
+
compiler.options = compiler.options || {};
|
|
69
|
+
compiler.options.resolve = compiler.options.resolve || {};
|
|
70
|
+
ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir);
|
|
71
|
+
const alias = compiler.options.resolve.alias ?? {};
|
|
72
|
+
compiler.options.resolve.alias = alias;
|
|
73
|
+
if (Array.isArray(alias)) alias.push({
|
|
74
|
+
name: /^@mpxjs\/webpack-plugin\//,
|
|
75
|
+
alias: mpxWebpackPluginDir
|
|
76
|
+
}, {
|
|
77
|
+
name: "tailwindcss",
|
|
78
|
+
alias: tailwindcssCssEntry
|
|
79
|
+
}, {
|
|
80
|
+
name: "tailwindcss$",
|
|
81
|
+
alias: tailwindcssCssEntry
|
|
82
|
+
});
|
|
83
|
+
else {
|
|
84
|
+
alias["@mpxjs/webpack-plugin"] = mpxWebpackPluginDir;
|
|
85
|
+
alias["@mpxjs/webpack-plugin$"] = mpxWebpackPluginDir;
|
|
86
|
+
alias.tailwindcss = tailwindcssCssEntry;
|
|
87
|
+
alias.tailwindcss$ = tailwindcssCssEntry;
|
|
88
|
+
}
|
|
89
|
+
return tailwindcssCssEntry;
|
|
90
|
+
}
|
|
91
|
+
function patchMpxLoaderResolve(loaderContext, pkgDir, enabled) {
|
|
92
|
+
if (!enabled || typeof loaderContext.resolve !== "function") return;
|
|
93
|
+
const originalResolve = loaderContext.resolve;
|
|
94
|
+
if (originalResolve.__weappTwPatched) return;
|
|
95
|
+
const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
|
|
96
|
+
const wrappedResolve = function(context, request, callback) {
|
|
97
|
+
if (request === "tailwindcss" || request === "tailwindcss$") return callback(null, tailwindcssCssEntry);
|
|
98
|
+
if (request?.startsWith("tailwindcss/")) return callback(null, node_path.default.join(pkgDir, request.slice(12)));
|
|
99
|
+
if (isMpxWebpackPluginRequest(request)) return originalResolve.call(this, node_process.default.cwd(), request, callback);
|
|
100
|
+
return originalResolve.call(this, context, request, callback);
|
|
101
|
+
};
|
|
102
|
+
wrappedResolve.__weappTwPatched = true;
|
|
103
|
+
loaderContext.resolve = wrappedResolve;
|
|
104
|
+
}
|
|
105
|
+
function setupMpxTailwindcssRedirect(pkgDir, enabled) {
|
|
106
|
+
if (enabled) installTailwindcssCssRedirect(pkgDir);
|
|
107
|
+
}
|
|
108
|
+
const CSS_EXT_RE = /\.css$/i;
|
|
109
|
+
function injectMpxCssRewritePreRules(compiler, loader, loaderOptions) {
|
|
110
|
+
var _compiler$options;
|
|
111
|
+
if (!loader) return;
|
|
112
|
+
const moduleOptions = (_compiler$options = compiler.options).module ?? (_compiler$options.module = { rules: [] });
|
|
113
|
+
moduleOptions.rules = moduleOptions.rules || [];
|
|
114
|
+
const createRule = (match) => ({
|
|
115
|
+
...match,
|
|
116
|
+
enforce: "pre",
|
|
117
|
+
use: [{
|
|
118
|
+
loader,
|
|
119
|
+
options: loaderOptions
|
|
120
|
+
}]
|
|
121
|
+
});
|
|
122
|
+
moduleOptions.rules.unshift(createRule({ resourceQuery: (query) => isMpxStyleResourceQuery(query) }), createRule({
|
|
123
|
+
test: CSS_EXT_RE,
|
|
124
|
+
resourceQuery: (query) => !isMpxStyleResourceQuery(query)
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
//#endregion
|
|
128
|
+
//#region src/bundlers/webpack/BaseUnifiedPlugin/shared.ts
|
|
129
|
+
const MPX_STYLE_RESOURCE_QUERY_RE = /(?:\?|&)type=styles\b/;
|
|
130
|
+
function getCacheKey(filename) {
|
|
131
|
+
return filename;
|
|
132
|
+
}
|
|
133
|
+
function stripResourceQuery(resource) {
|
|
134
|
+
if (typeof resource !== "string") return resource;
|
|
135
|
+
const queryIndex = resource.indexOf("?");
|
|
136
|
+
if (queryIndex !== -1) return resource.slice(0, queryIndex);
|
|
137
|
+
const hashIndex = resource.indexOf("#");
|
|
138
|
+
if (hashIndex !== -1) return resource.slice(0, hashIndex);
|
|
139
|
+
return resource;
|
|
140
|
+
}
|
|
141
|
+
function isCssLikeModuleResource(resource, cssMatcher, appType) {
|
|
142
|
+
if (typeof resource !== "string") return false;
|
|
143
|
+
const normalizedResource = stripResourceQuery(resource);
|
|
144
|
+
if (normalizedResource && cssMatcher(normalizedResource)) return true;
|
|
145
|
+
if (appType === "mpx") return MPX_STYLE_RESOURCE_QUERY_RE.test(resource);
|
|
18
146
|
return false;
|
|
19
147
|
}
|
|
148
|
+
function hasLoaderEntry(entries, target) {
|
|
149
|
+
if (!target) return false;
|
|
150
|
+
return entries.some((entry) => entry.loader?.includes?.(target));
|
|
151
|
+
}
|
|
152
|
+
function toChunkFiles(files) {
|
|
153
|
+
if (!files) return [];
|
|
154
|
+
if (Array.isArray(files)) return files;
|
|
155
|
+
return [...files];
|
|
156
|
+
}
|
|
157
|
+
function createAssetHashByChunkMap(chunks) {
|
|
158
|
+
const partsByFile = /* @__PURE__ */ new Map();
|
|
159
|
+
for (const chunk of chunks) {
|
|
160
|
+
const hash = typeof chunk.hash === "string" ? chunk.hash : void 0;
|
|
161
|
+
if (!hash) continue;
|
|
162
|
+
const chunkId = String(chunk.id ?? chunk.name ?? "");
|
|
163
|
+
for (const file of toChunkFiles(chunk.files)) {
|
|
164
|
+
if (!file) continue;
|
|
165
|
+
let parts = partsByFile.get(file);
|
|
166
|
+
if (!parts) {
|
|
167
|
+
parts = [];
|
|
168
|
+
partsByFile.set(file, parts);
|
|
169
|
+
}
|
|
170
|
+
parts.push(`${chunkId}:${hash}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const hashByFile = /* @__PURE__ */ new Map();
|
|
174
|
+
for (const [file, parts] of partsByFile.entries()) hashByFile.set(file, parts.sort().join("|"));
|
|
175
|
+
return hashByFile;
|
|
176
|
+
}
|
|
177
|
+
function hasWatchChanges(compiler) {
|
|
178
|
+
return (compiler.modifiedFiles?.size ?? 0) > 0 || (compiler.removedFiles?.size ?? 0) > 0;
|
|
179
|
+
}
|
|
180
|
+
//#endregion
|
|
181
|
+
//#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets.ts
|
|
20
182
|
function setupWebpackV5ProcessAssetsHook(options) {
|
|
21
183
|
const { compiler, options: compilerOptions, appType, runtimeState, getRuntimeRefreshRequirement, refreshRuntimeMetadata, consumeRuntimeRefreshRequirement, debug } = options;
|
|
22
184
|
const { Compilation, sources } = compiler.webpack;
|
|
@@ -32,18 +194,18 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
32
194
|
debug("start");
|
|
33
195
|
await runtimeState.patchPromise;
|
|
34
196
|
for (const chunk of compilation.chunks) if (chunk.id && chunk.hash) compilerOptions.cache.calcHashValueChanged(chunk.id, chunk.hash);
|
|
35
|
-
const assetHashByChunk =
|
|
197
|
+
const assetHashByChunk = createAssetHashByChunkMap(compilation.chunks);
|
|
36
198
|
const entries = Object.entries(assets);
|
|
37
199
|
const compilerOutputPath = compilation.compiler?.outputPath ?? compiler.outputPath;
|
|
38
200
|
const outputDir = compilerOutputPath ? node_path.default.resolve(compilerOutputPath) : compilation.outputOptions?.path ?? node_process.default.cwd();
|
|
39
201
|
const jsAssets = /* @__PURE__ */ new Map();
|
|
40
202
|
for (const [file] of entries) if (compilerOptions.jsMatcher(file) || compilerOptions.wxsMatcher(file)) {
|
|
41
|
-
const absolute =
|
|
203
|
+
const absolute = require_run_tasks.toAbsoluteOutputPath(file, outputDir);
|
|
42
204
|
jsAssets.set(absolute, file);
|
|
43
205
|
}
|
|
44
206
|
const moduleGraphOptions = {
|
|
45
207
|
resolve(specifier, importer) {
|
|
46
|
-
return
|
|
208
|
+
return require_run_tasks.resolveOutputSpecifier(specifier, importer, outputDir, (candidate) => jsAssets.has(candidate));
|
|
47
209
|
},
|
|
48
210
|
load: (id) => {
|
|
49
211
|
const assetName = jsAssets.get(id);
|
|
@@ -99,7 +261,6 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
99
261
|
cssUserHandlerOptionsCache.set(cacheKey, created);
|
|
100
262
|
return created;
|
|
101
263
|
};
|
|
102
|
-
const staleClassNameFallback = resolveWebpackStaleClassNameFallback(compilerOptions.staleClassNameFallback, compiler);
|
|
103
264
|
const forceRuntimeRefresh = getRuntimeRefreshRequirement();
|
|
104
265
|
debug("processAssets ensure runtime set forceRefresh=%s major=%s", forceRuntimeRefresh, runtimeState.twPatcher.majorVersion ?? "unknown");
|
|
105
266
|
const runtimeSet = await require_recorder.ensureRuntimeClassSet(runtimeState, {
|
|
@@ -110,6 +271,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
110
271
|
});
|
|
111
272
|
await refreshRuntimeMetadata(forceRuntimeRefresh);
|
|
112
273
|
consumeRuntimeRefreshRequirement();
|
|
274
|
+
const runtimeSetHash = compilerOptions.cache.computeHash([require_logger.getRuntimeClassSetSignature(runtimeState.twPatcher), [...runtimeSet].sort().join("\n")].join("\n\n"));
|
|
113
275
|
const defaultTemplateHandlerOptions = { runtimeSet };
|
|
114
276
|
debug("get runtimeSet, class count: %d", runtimeSet.size);
|
|
115
277
|
const tasks = [];
|
|
@@ -141,10 +303,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
141
303
|
}
|
|
142
304
|
const jsTaskFactories = [];
|
|
143
305
|
if (Array.isArray(groupedEntries.js)) for (const [file] of groupedEntries.js) {
|
|
144
|
-
const cacheKey =
|
|
306
|
+
const cacheKey = getCacheKey(file);
|
|
145
307
|
const asset = compilation.getAsset(file);
|
|
146
308
|
if (!asset) continue;
|
|
147
|
-
const absoluteFile =
|
|
309
|
+
const absoluteFile = require_run_tasks.toAbsoluteOutputPath(file, outputDir);
|
|
148
310
|
const initialSource = asset.source.source();
|
|
149
311
|
const initialRawSource = typeof initialSource === "string" ? initialSource : initialSource.toString();
|
|
150
312
|
const chunkHash = assetHashByChunk.get(file);
|
|
@@ -165,7 +327,6 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
165
327
|
const currentSourceValue = compilation.getAsset(file)?.source.source();
|
|
166
328
|
const currentSource = typeof currentSourceValue === "string" ? currentSourceValue : currentSourceValue?.toString() ?? "";
|
|
167
329
|
const handlerOptions = {
|
|
168
|
-
staleClassNameFallback,
|
|
169
330
|
tailwindcssMajorVersion: runtimeState.twPatcher.majorVersion,
|
|
170
331
|
filename: absoluteFile,
|
|
171
332
|
moduleGraph: moduleGraphOptions,
|
|
@@ -187,12 +348,13 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
187
348
|
const rawSource = originalSource.source().toString();
|
|
188
349
|
const cacheKey = file;
|
|
189
350
|
const chunkHash = assetHashByChunk.get(file);
|
|
351
|
+
const runtimeAwareHash = chunkHash ? `${chunkHash}:${runtimeSetHash}` : void 0;
|
|
190
352
|
tasks.push(require_generator_css.processCachedTask({
|
|
191
353
|
cache: compilerOptions.cache,
|
|
192
354
|
cacheKey,
|
|
193
355
|
hashKey: `${file}:asset`,
|
|
194
356
|
rawSource,
|
|
195
|
-
hash:
|
|
357
|
+
hash: runtimeAwareHash,
|
|
196
358
|
applyResult(source) {
|
|
197
359
|
compilation.updateAsset(file, source);
|
|
198
360
|
},
|
|
@@ -222,7 +384,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
222
384
|
}
|
|
223
385
|
}));
|
|
224
386
|
}
|
|
225
|
-
|
|
387
|
+
require_run_tasks.pushConcurrentTaskFactories(tasks, jsTaskFactories);
|
|
226
388
|
await Promise.all(tasks);
|
|
227
389
|
debug("end");
|
|
228
390
|
compilerOptions.onEnd();
|
|
@@ -230,13 +392,41 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
230
392
|
});
|
|
231
393
|
}
|
|
232
394
|
//#endregion
|
|
395
|
+
//#region src/bundlers/webpack/shared/loader-anchors.ts
|
|
396
|
+
const MPX_STRIP_CONDITIONAL_LOADER = "@mpxjs/webpack-plugin/lib/style-compiler/strip-conditional-loader";
|
|
397
|
+
const MPX_STYLE_COMPILER_LOADER = "@mpxjs/webpack-plugin/lib/style-compiler/index";
|
|
398
|
+
const MPX_REWRITE_PRECEDENCE_LOADERS = [MPX_STYLE_COMPILER_LOADER, MPX_STRIP_CONDITIONAL_LOADER];
|
|
399
|
+
function createFinder(targets) {
|
|
400
|
+
return (entries) => entries.findIndex((entry) => targets.some((target) => entry?.loader?.includes?.(target)));
|
|
401
|
+
}
|
|
402
|
+
function createPrioritizedFinder(targets) {
|
|
403
|
+
return (entries) => {
|
|
404
|
+
for (const target of targets) {
|
|
405
|
+
const idx = entries.findIndex((entry) => entry?.loader?.includes?.(target));
|
|
406
|
+
if (idx !== -1) return idx;
|
|
407
|
+
}
|
|
408
|
+
return -1;
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
function createLoaderAnchorFinders(appType) {
|
|
412
|
+
if (isMpx(appType)) return {
|
|
413
|
+
findRewriteAnchor: createPrioritizedFinder(MPX_REWRITE_PRECEDENCE_LOADERS),
|
|
414
|
+
findClassSetAnchor: createFinder([MPX_STYLE_COMPILER_LOADER])
|
|
415
|
+
};
|
|
416
|
+
const fallbackFinder = createFinder(["postcss-loader"]);
|
|
417
|
+
return {
|
|
418
|
+
findRewriteAnchor: fallbackFinder,
|
|
419
|
+
findClassSetAnchor: fallbackFinder
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
//#endregion
|
|
233
423
|
//#region src/bundlers/webpack/BaseUnifiedPlugin/v5-loaders.ts
|
|
234
424
|
function setupWebpackV5Loaders(options) {
|
|
235
|
-
const { compiler, options: compilerOptions, appType, weappTailwindcssPackageDir, shouldRewriteCssImports, runtimeLoaderPath,
|
|
236
|
-
const isMpxApp =
|
|
237
|
-
if (shouldRewriteCssImports && isMpxApp)
|
|
425
|
+
const { compiler, options: compilerOptions, appType, weappTailwindcssPackageDir, shouldRewriteCssImports, runtimeLoaderPath, getClassSetInLoader, getRuntimeWatchDependencies, debug } = options;
|
|
426
|
+
const isMpxApp = isMpx(appType);
|
|
427
|
+
if (shouldRewriteCssImports && isMpxApp) ensureMpxTailwindcssAliases(compiler, weappTailwindcssPackageDir);
|
|
238
428
|
const runtimeClassSetLoader = runtimeLoaderPath ?? node_path.default.resolve(__dirname, "./weapp-tw-runtime-classset-loader.js");
|
|
239
|
-
const runtimeCssImportRewriteLoader = shouldRewriteCssImports ?
|
|
429
|
+
const runtimeCssImportRewriteLoader = shouldRewriteCssImports ? node_path.default.resolve(__dirname, "./weapp-tw-css-import-rewrite-loader.js") : void 0;
|
|
240
430
|
const runtimeClassSetLoaderExists = node_fs.default.existsSync(runtimeClassSetLoader);
|
|
241
431
|
const runtimeCssImportRewriteLoaderExists = runtimeCssImportRewriteLoader ? node_fs.default.existsSync(runtimeCssImportRewriteLoader) : false;
|
|
242
432
|
const runtimeLoaderRewriteOptions = shouldRewriteCssImports ? {
|
|
@@ -247,9 +437,9 @@ function setupWebpackV5Loaders(options) {
|
|
|
247
437
|
getClassSet: getClassSetInLoader,
|
|
248
438
|
getWatchDependencies: getRuntimeWatchDependencies
|
|
249
439
|
};
|
|
250
|
-
const { findRewriteAnchor, findClassSetAnchor } =
|
|
251
|
-
const cssImportRewriteLoaderOptions = runtimeLoaderRewriteOptions ? {
|
|
252
|
-
if (runtimeCssImportRewriteLoader && shouldRewriteCssImports && cssImportRewriteLoaderOptions && isMpxApp)
|
|
440
|
+
const { findRewriteAnchor, findClassSetAnchor } = createLoaderAnchorFinders(appType);
|
|
441
|
+
const cssImportRewriteLoaderOptions = runtimeLoaderRewriteOptions ? { tailwindcssImportRewrite: runtimeLoaderRewriteOptions } : void 0;
|
|
442
|
+
if (runtimeCssImportRewriteLoader && shouldRewriteCssImports && cssImportRewriteLoaderOptions && isMpxApp) injectMpxCssRewritePreRules(compiler, runtimeCssImportRewriteLoader, cssImportRewriteLoaderOptions);
|
|
253
443
|
const createRuntimeClassSetLoaderEntry = () => ({
|
|
254
444
|
loader: runtimeClassSetLoader,
|
|
255
445
|
options: classSetLoaderOptions,
|
|
@@ -269,11 +459,11 @@ function setupWebpackV5Loaders(options) {
|
|
|
269
459
|
compiler.hooks.compilation.tap(require_recorder.pluginName, (compilation) => {
|
|
270
460
|
NormalModule.getCompilationHooks(compilation).loader.tap(require_recorder.pluginName, (_loaderContext, module) => {
|
|
271
461
|
if (!(runtimeClassSetLoaderExists || runtimeCssImportRewriteLoaderExists)) return;
|
|
272
|
-
|
|
462
|
+
patchMpxLoaderResolve(_loaderContext, weappTailwindcssPackageDir, shouldRewriteCssImports && isMpxApp);
|
|
273
463
|
const loaderEntries = module.loaders || [];
|
|
274
464
|
let rewriteAnchorIdx = findRewriteAnchor(loaderEntries);
|
|
275
465
|
const classSetAnchorIdx = findClassSetAnchor(loaderEntries);
|
|
276
|
-
const isCssModule =
|
|
466
|
+
const isCssModule = isCssLikeModuleResource(module.resource, compilerOptions.cssMatcher, appType);
|
|
277
467
|
if (node_process.default.env.WEAPP_TW_LOADER_DEBUG && isCssModule) debug("loader hook css module: %s loaders=%o anchors=%o", module.resource, loaderEntries.map((x) => x.loader), {
|
|
278
468
|
rewriteAnchorIdx,
|
|
279
469
|
classSetAnchorIdx
|
|
@@ -301,7 +491,7 @@ function setupWebpackV5Loaders(options) {
|
|
|
301
491
|
rewriteAnchorIdx = findRewriteAnchor(loaderEntries);
|
|
302
492
|
}
|
|
303
493
|
}
|
|
304
|
-
if (runtimeClassSetLoaderExists && !
|
|
494
|
+
if (runtimeClassSetLoaderExists && !hasLoaderEntry(loaderEntries, runtimeClassSetLoader)) {
|
|
305
495
|
const classSetLoaderEntry = createRuntimeClassSetLoaderEntry();
|
|
306
496
|
const anchorIndex = findClassSetAnchor(loaderEntries);
|
|
307
497
|
if (anchorIndex === -1) anchorlessInsert(classSetLoaderEntry, "before");
|
|
@@ -316,7 +506,7 @@ function setupWebpackV5Loaders(options) {
|
|
|
316
506
|
//#endregion
|
|
317
507
|
//#region src/bundlers/webpack/BaseUnifiedPlugin/v5.ts
|
|
318
508
|
const debug = require_recorder.createDebug();
|
|
319
|
-
const weappTailwindcssPackageDir =
|
|
509
|
+
const weappTailwindcssPackageDir = require_run_tasks.resolvePackageDir("weapp-tailwindcss");
|
|
320
510
|
/**
|
|
321
511
|
* @name UnifiedWebpackPluginV5
|
|
322
512
|
* @description webpack5 核心转义插件
|
|
@@ -329,18 +519,11 @@ var UnifiedWebpackPluginV5 = class {
|
|
|
329
519
|
}
|
|
330
520
|
apply(compiler) {
|
|
331
521
|
compiler.options = compiler.options || {};
|
|
332
|
-
const { disabled, onLoad, runtimeLoaderPath,
|
|
333
|
-
const disabledOptions =
|
|
334
|
-
const shouldRewriteCssImports = (initialTwPatcher.majorVersion ?? 0) >= 4
|
|
335
|
-
const isMpxApp =
|
|
336
|
-
if (shouldRewriteCssImports)
|
|
337
|
-
require_loader_anchors.applyTailwindcssCssImportRewrite(compiler, {
|
|
338
|
-
pkgDir: weappTailwindcssPackageDir,
|
|
339
|
-
enabled: true,
|
|
340
|
-
appType: this.appType
|
|
341
|
-
});
|
|
342
|
-
require_loader_anchors.setupMpxTailwindcssRedirect(weappTailwindcssPackageDir, isMpxApp);
|
|
343
|
-
}
|
|
522
|
+
const { disabled, onLoad, runtimeLoaderPath, twPatcher: initialTwPatcher, refreshTailwindcssPatcher } = this.options;
|
|
523
|
+
const disabledOptions = require_run_tasks.resolvePluginDisabledState(disabled);
|
|
524
|
+
const shouldRewriteCssImports = (initialTwPatcher.majorVersion ?? 0) >= 4;
|
|
525
|
+
const isMpxApp = isMpx(this.appType);
|
|
526
|
+
if (shouldRewriteCssImports) setupMpxTailwindcssRedirect(weappTailwindcssPackageDir, isMpxApp);
|
|
344
527
|
if (disabledOptions.plugin) return;
|
|
345
528
|
const patchRecorderState = require_recorder.setupPatchRecorder(initialTwPatcher, this.options.tailwindcssBasedir, {
|
|
346
529
|
source: "runtime",
|
|
@@ -380,7 +563,7 @@ var UnifiedWebpackPluginV5 = class {
|
|
|
380
563
|
runtimeMetadataPrepared = true;
|
|
381
564
|
};
|
|
382
565
|
const syncRuntimeRefreshRequirement = () => {
|
|
383
|
-
runtimeRefreshRequiredForCompilation = runtimeRefreshRequiredForCompilation ||
|
|
566
|
+
runtimeRefreshRequiredForCompilation = runtimeRefreshRequiredForCompilation || hasWatchChanges(compiler);
|
|
384
567
|
};
|
|
385
568
|
const resetRuntimePreparation = () => {
|
|
386
569
|
runtimeSetPrepared = false;
|
|
@@ -417,7 +600,6 @@ var UnifiedWebpackPluginV5 = class {
|
|
|
417
600
|
weappTailwindcssPackageDir,
|
|
418
601
|
shouldRewriteCssImports,
|
|
419
602
|
runtimeLoaderPath,
|
|
420
|
-
runtimeCssImportRewriteLoaderPath,
|
|
421
603
|
getClassSetInLoader,
|
|
422
604
|
getRuntimeWatchDependencies() {
|
|
423
605
|
return {
|