weapp-tailwindcss 5.1.6 → 5.1.8
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/dist/bundlers/framework-selector.d.ts +26 -0
- package/dist/bundlers/gulp/frameworks/native/index.d.ts +6 -0
- package/dist/bundlers/gulp/index.d.ts +4 -4
- package/dist/bundlers/gulp/shared/create-native-framework-plugins.d.ts +6 -0
- package/dist/bundlers/vite/css-finalizer.d.ts +2 -0
- package/dist/bundlers/vite/frameworks/generic/index.d.ts +2 -0
- package/dist/bundlers/vite/frameworks/taro/index.d.ts +2 -0
- package/dist/bundlers/vite/frameworks/uni-app/index.d.ts +2 -0
- package/dist/bundlers/vite/frameworks/uni-app-x/index.d.ts +2 -0
- package/dist/bundlers/vite/frameworks/weapp-vite/index.d.ts +2 -0
- package/dist/bundlers/vite/generate-bundle/css-output-helpers.d.ts +5 -1
- package/dist/bundlers/vite/generate-bundle/finalize.d.ts +5 -1
- package/dist/bundlers/vite/generate-bundle/root-style-output.d.ts +2 -2
- package/dist/bundlers/vite/generate-bundle/sfc-style-source.d.ts +8 -0
- package/dist/bundlers/vite/generate-bundle/types.d.ts +2 -0
- package/dist/bundlers/vite/index.d.ts +2 -4
- package/dist/bundlers/vite/processed-css-assets.d.ts +5 -0
- package/dist/bundlers/vite/shared/create-framework-plugins.d.ts +35 -0
- package/dist/bundlers/vite/shared/framework-strategy.d.ts +88 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/shared.d.ts +1 -2
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets/pipeline-helpers.d.ts +11 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-loaders.d.ts +3 -0
- package/dist/bundlers/webpack/BaseUnifiedPlugin/v5.d.ts +1 -2
- package/dist/bundlers/webpack/frameworks/generic/index.d.ts +5 -0
- package/dist/bundlers/webpack/frameworks/index.d.ts +8 -0
- package/dist/bundlers/webpack/frameworks/mpx/index.d.ts +5 -0
- package/dist/bundlers/webpack/frameworks/taro/index.d.ts +5 -0
- package/dist/bundlers/webpack/frameworks/uni-app/index.d.ts +5 -0
- package/dist/bundlers/webpack/frameworks/weapp-vite/index.d.ts +5 -0
- package/dist/bundlers/webpack/shared/create-framework-plugin.d.ts +21 -0
- package/dist/bundlers/webpack/shared/loader-anchors.d.ts +4 -3
- package/dist/cli.js +8 -0
- package/dist/cli.mjs +8 -0
- package/dist/{context-BCSk_YnL.js → context-CRhUs_5e.js} +13 -4
- package/dist/{context-3GGqW9vw.mjs → context-CfXr3hWz.mjs} +13 -4
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/{generator-CqWzj2Z1.js → generator-DaaFxR5V.js} +1 -1
- package/dist/{generator-CoT5vu9w.mjs → generator-DugIHBgl.mjs} +1 -1
- package/dist/generator.js +2 -2
- package/dist/generator.mjs +2 -2
- package/dist/{gulp-Bss4wJ8t.mjs → gulp-CRjkPsbX.mjs} +22 -7
- package/dist/{gulp-hXE1U4Cu.js → gulp-JUfnhOOo.js} +22 -7
- package/dist/gulp.js +1 -1
- package/dist/gulp.mjs +1 -1
- package/dist/{hmr-timing-Cfu-4Bnf.mjs → hmr-timing-BecOXMd8.mjs} +13 -7
- package/dist/{hmr-timing-Df4203aI.js → hmr-timing-DcIEXnf8.js} +13 -7
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/postcss.js +2 -2
- package/dist/postcss.mjs +2 -2
- package/dist/presets.js +2 -2
- package/dist/presets.mjs +2 -2
- package/dist/rspack.js +1 -1
- package/dist/rspack.mjs +1 -1
- package/dist/{source-candidate-scan-signature-5Uk6U72B.js → source-candidate-scan-signature-10tvdJVC.js} +185 -98
- package/dist/{source-candidate-scan-signature-BbCmW975.mjs → source-candidate-scan-signature-DAg8QSgh.mjs} +162 -99
- package/dist/style-injector/internal.d.ts +18 -4
- package/dist/{tailwindcss-DYJ3HZD2.js → tailwindcss-BZjZZi60.js} +1 -1
- package/dist/{tailwindcss-Bjr3aphG.mjs → tailwindcss-PA2jHHpx.mjs} +1 -1
- package/dist/{transform-B6_y_yCB.js → transform-B0BxX3XB.js} +1 -1
- package/dist/{transform--155BmeJ.mjs → transform-wNEbcZeQ.mjs} +1 -1
- package/dist/uni-app-x/vite.d.ts +1 -0
- package/dist/uni-app-x/web-preflight-reset.d.ts +3 -0
- package/dist/{v4-engine-C9cmNlP8.js → v4-engine-BZP2462H.js} +44 -1
- package/dist/{v4-engine-DRQaCFMm.mjs → v4-engine-CjjWONB0.mjs} +45 -2
- package/dist/{vite-Baw9qNrc.js → vite-GdzlG_lx.js} +1332 -790
- package/dist/{vite-PdxjaqhO.mjs → vite-vf2-cDdk.mjs} +1330 -788
- package/dist/vite.js +1 -1
- package/dist/vite.mjs +1 -1
- package/dist/weapp-tw-css-import-rewrite-loader.js +162 -7
- package/dist/{webpack-BffTDmod.mjs → webpack-2s-TFhgm.mjs} +583 -238
- package/dist/{webpack-C9u7mfGE.js → webpack-BhM4Hqla.js} +582 -237
- package/dist/webpack.js +1 -1
- package/dist/webpack.mjs +1 -1
- package/package.json +3 -3
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
const require_rolldown_runtime = require("./rolldown-runtime-emK7D4bc.js");
|
|
2
|
-
const require_v4_engine = require("./v4-engine-
|
|
3
|
-
const require_generator = require("./generator-
|
|
2
|
+
const require_v4_engine = require("./v4-engine-BZP2462H.js");
|
|
3
|
+
const require_generator = require("./generator-DaaFxR5V.js");
|
|
4
4
|
const require_utils = require("./utils-D3h8j7Mk.js");
|
|
5
|
-
const require_context = require("./context-
|
|
6
|
-
const require_tailwindcss = require("./tailwindcss-
|
|
7
|
-
const require_hmr_timing = require("./hmr-timing-
|
|
8
|
-
const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-
|
|
5
|
+
const require_context = require("./context-CRhUs_5e.js");
|
|
6
|
+
const require_tailwindcss = require("./tailwindcss-BZjZZi60.js");
|
|
7
|
+
const require_hmr_timing = require("./hmr-timing-DcIEXnf8.js");
|
|
8
|
+
const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-10tvdJVC.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");
|
|
@@ -20,188 +20,7 @@ let node_module = require("node:module");
|
|
|
20
20
|
node_module = require_rolldown_runtime.__toESM(node_module);
|
|
21
21
|
let _weapp_core_escape = require("@weapp-core/escape");
|
|
22
22
|
let _weapp_tailwindcss_shared_node = require("@weapp-tailwindcss/shared/node");
|
|
23
|
-
//#region src/shared/tailwindcss-css-redirect.ts
|
|
24
|
-
const moduleWithMutableResolve = node_module.default;
|
|
25
|
-
const patched = /* @__PURE__ */ new WeakSet();
|
|
26
|
-
function installTailwindcssCssRedirect(pkgDir) {
|
|
27
|
-
const target = node_path.default.join(pkgDir, "index.css");
|
|
28
|
-
const original = moduleWithMutableResolve._resolveFilename;
|
|
29
|
-
if (patched.has(original)) return;
|
|
30
|
-
const replacements = /* @__PURE__ */ new Set(["tailwindcss", "tailwindcss$"]);
|
|
31
|
-
const resolveTailwindcssCss = (request, parent, isMain, options) => {
|
|
32
|
-
if (replacements.has(request)) return target;
|
|
33
|
-
if (request.startsWith("tailwindcss/")) return node_path.default.join(pkgDir, request.slice(12));
|
|
34
|
-
return original(request, parent, isMain, options);
|
|
35
|
-
};
|
|
36
|
-
moduleWithMutableResolve._resolveFilename = resolveTailwindcssCss;
|
|
37
|
-
patched.add(moduleWithMutableResolve._resolveFilename);
|
|
38
|
-
}
|
|
39
|
-
//#endregion
|
|
40
|
-
//#region src/shared/mpx.ts
|
|
41
|
-
const localRequire = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href);
|
|
42
|
-
const MPX_STYLE_RESOURCE_QUERY_RE$1 = /(?:^|[?&])type=styles(?:&|$)/;
|
|
43
|
-
const MPX_WEBPACK_PLUGIN_PACKAGE_RE = /@mpxjs[\\/]webpack-plugin[\\/]package\.json$/;
|
|
44
|
-
function isMpxStyleResourceQuery(query) {
|
|
45
|
-
if (typeof query !== "string") return false;
|
|
46
|
-
return MPX_STYLE_RESOURCE_QUERY_RE$1.test(query);
|
|
47
|
-
}
|
|
48
|
-
function isMpx(appType) {
|
|
49
|
-
return appType === "mpx";
|
|
50
|
-
}
|
|
51
|
-
function getTailwindcssCssEntry(pkgDir) {
|
|
52
|
-
return node_path.default.join(pkgDir, "index.css");
|
|
53
|
-
}
|
|
54
|
-
function resolveMpxWebpackPluginDir(compiler) {
|
|
55
|
-
const candidates = [
|
|
56
|
-
compiler?.context,
|
|
57
|
-
compiler?.options?.context,
|
|
58
|
-
node_process.default.cwd()
|
|
59
|
-
].filter((item) => typeof item === "string" && item.length > 0);
|
|
60
|
-
for (const candidate of candidates) try {
|
|
61
|
-
const projectRequire = (0, node_module.createRequire)(node_path.default.join(candidate, "package.json"));
|
|
62
|
-
return node_path.default.dirname(projectRequire.resolve("@mpxjs/webpack-plugin/package.json"));
|
|
63
|
-
} catch {}
|
|
64
|
-
const cachedPackageJson = Object.keys(localRequire.cache).find((file) => MPX_WEBPACK_PLUGIN_PACKAGE_RE.test(file));
|
|
65
|
-
if (cachedPackageJson) return node_path.default.dirname(cachedPackageJson);
|
|
66
|
-
try {
|
|
67
|
-
return node_path.default.dirname(localRequire.resolve("@mpxjs/webpack-plugin/package.json"));
|
|
68
|
-
} catch {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
function isMpxWebpackPluginRequest(request) {
|
|
73
|
-
return request === "@mpxjs/webpack-plugin" || Boolean(request?.startsWith("@mpxjs/webpack-plugin/"));
|
|
74
|
-
}
|
|
75
|
-
function resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir) {
|
|
76
|
-
if (request === "@mpxjs/webpack-plugin") return mpxWebpackPluginDir;
|
|
77
|
-
return node_path.default.join(mpxWebpackPluginDir, request.slice(22));
|
|
78
|
-
}
|
|
79
|
-
function addMpxWebpackPluginAlias(alias, pkgDir) {
|
|
80
|
-
const recordLoader = node_path.default.join(pkgDir, "lib/record-loader");
|
|
81
|
-
const styleCompiler = node_path.default.join(pkgDir, "lib/style-compiler/index");
|
|
82
|
-
const stripConditionalLoader = node_path.default.join(pkgDir, "lib/style-compiler/strip-conditional-loader");
|
|
83
|
-
if (Array.isArray(alias)) alias.push({
|
|
84
|
-
name: "@mpxjs/webpack-plugin/lib/record-loader",
|
|
85
|
-
alias: recordLoader
|
|
86
|
-
}, {
|
|
87
|
-
name: "@mpxjs/webpack-plugin/lib/style-compiler/index",
|
|
88
|
-
alias: styleCompiler
|
|
89
|
-
}, {
|
|
90
|
-
name: "@mpxjs/webpack-plugin/lib/style-compiler/strip-conditional-loader",
|
|
91
|
-
alias: stripConditionalLoader
|
|
92
|
-
}, {
|
|
93
|
-
name: /^@mpxjs\/webpack-plugin\//,
|
|
94
|
-
alias: pkgDir
|
|
95
|
-
});
|
|
96
|
-
else {
|
|
97
|
-
alias["@mpxjs/webpack-plugin"] = pkgDir;
|
|
98
|
-
alias["@mpxjs/webpack-plugin$"] = pkgDir;
|
|
99
|
-
alias["@mpxjs/webpack-plugin/lib/record-loader"] = recordLoader;
|
|
100
|
-
alias["@mpxjs/webpack-plugin/lib/style-compiler/index"] = styleCompiler;
|
|
101
|
-
alias["@mpxjs/webpack-plugin/lib/style-compiler/strip-conditional-loader"] = stripConditionalLoader;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
function ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir) {
|
|
105
|
-
compiler.options.resolveLoader = compiler.options.resolveLoader || {};
|
|
106
|
-
const alias = compiler.options.resolveLoader.alias ?? {};
|
|
107
|
-
compiler.options.resolveLoader.alias = alias;
|
|
108
|
-
addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
|
|
109
|
-
}
|
|
110
|
-
function resolveMpxWebpackPluginRequire(compiler) {
|
|
111
|
-
const candidates = [
|
|
112
|
-
compiler?.context,
|
|
113
|
-
compiler?.options?.context,
|
|
114
|
-
node_process.default.cwd()
|
|
115
|
-
].filter((item) => typeof item === "string" && item.length > 0);
|
|
116
|
-
for (const candidate of candidates) try {
|
|
117
|
-
const projectRequire = (0, node_module.createRequire)(node_path.default.join(candidate, "package.json"));
|
|
118
|
-
projectRequire.resolve("@mpxjs/webpack-plugin/package.json");
|
|
119
|
-
return projectRequire;
|
|
120
|
-
} catch {}
|
|
121
|
-
const cachedPackageJson = Object.keys(localRequire.cache).find((file) => MPX_WEBPACK_PLUGIN_PACKAGE_RE.test(file));
|
|
122
|
-
if (cachedPackageJson) return (0, node_module.createRequire)(cachedPackageJson);
|
|
123
|
-
return localRequire;
|
|
124
|
-
}
|
|
125
|
-
function patchMpxWebpackPluginNormalizeLib(compiler, mpxWebpackPluginDir) {
|
|
126
|
-
if (!mpxWebpackPluginDir) return false;
|
|
127
|
-
const projectRequire = resolveMpxWebpackPluginRequire(compiler);
|
|
128
|
-
let normalize;
|
|
129
|
-
try {
|
|
130
|
-
normalize = projectRequire("@mpxjs/webpack-plugin/lib/utils/normalize");
|
|
131
|
-
} catch {
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
if (typeof normalize.lib !== "function") return false;
|
|
135
|
-
if (normalize.lib.__weappTwPatched) return true;
|
|
136
|
-
const wrappedLib = (file) => node_path.default.join(mpxWebpackPluginDir, "lib", file);
|
|
137
|
-
wrappedLib.__weappTwPatched = true;
|
|
138
|
-
wrappedLib.__weappTwOriginal = normalize.lib;
|
|
139
|
-
normalize.lib = wrappedLib;
|
|
140
|
-
return true;
|
|
141
|
-
}
|
|
142
|
-
function ensureMpxTailwindcssAliases(compiler, pkgDir) {
|
|
143
|
-
const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
|
|
144
|
-
compiler.options = compiler.options || {};
|
|
145
|
-
compiler.options.resolve = compiler.options.resolve || {};
|
|
146
|
-
const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(compiler);
|
|
147
|
-
patchMpxWebpackPluginNormalizeLib(compiler, mpxWebpackPluginDir);
|
|
148
|
-
if (mpxWebpackPluginDir) ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir);
|
|
149
|
-
const alias = compiler.options.resolve.alias ?? {};
|
|
150
|
-
compiler.options.resolve.alias = alias;
|
|
151
|
-
if (Array.isArray(alias)) alias.push({
|
|
152
|
-
name: "tailwindcss",
|
|
153
|
-
alias: tailwindcssCssEntry
|
|
154
|
-
}, {
|
|
155
|
-
name: "tailwindcss$",
|
|
156
|
-
alias: tailwindcssCssEntry
|
|
157
|
-
});
|
|
158
|
-
else {
|
|
159
|
-
alias.tailwindcss = tailwindcssCssEntry;
|
|
160
|
-
alias.tailwindcss$ = tailwindcssCssEntry;
|
|
161
|
-
}
|
|
162
|
-
if (mpxWebpackPluginDir) addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
|
|
163
|
-
return tailwindcssCssEntry;
|
|
164
|
-
}
|
|
165
|
-
function patchMpxLoaderResolve(loaderContext, pkgDir, enabled) {
|
|
166
|
-
if (!enabled || typeof loaderContext.resolve !== "function") return;
|
|
167
|
-
const originalResolve = loaderContext.resolve;
|
|
168
|
-
if (originalResolve.__weappTwPatched) return;
|
|
169
|
-
const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
|
|
170
|
-
const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(loaderContext);
|
|
171
|
-
const wrappedResolve = function(context, request, callback) {
|
|
172
|
-
if (request === "tailwindcss" || request === "tailwindcss$") return callback(null, tailwindcssCssEntry);
|
|
173
|
-
if (request?.startsWith("tailwindcss/")) return callback(null, node_path.default.join(pkgDir, request.slice(12)));
|
|
174
|
-
if (mpxWebpackPluginDir && isMpxWebpackPluginRequest(request)) return callback(null, resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir));
|
|
175
|
-
return originalResolve.call(this, context, request, callback);
|
|
176
|
-
};
|
|
177
|
-
wrappedResolve.__weappTwPatched = true;
|
|
178
|
-
loaderContext.resolve = wrappedResolve;
|
|
179
|
-
}
|
|
180
|
-
function setupMpxTailwindcssRedirect(pkgDir, enabled) {
|
|
181
|
-
if (enabled) installTailwindcssCssRedirect(pkgDir);
|
|
182
|
-
}
|
|
183
|
-
const CSS_EXT_RE = /\.css$/i;
|
|
184
|
-
function injectMpxCssRewritePreRules(compiler, loader, loaderOptions) {
|
|
185
|
-
var _compiler$options;
|
|
186
|
-
if (!loader) return;
|
|
187
|
-
const moduleOptions = (_compiler$options = compiler.options).module ?? (_compiler$options.module = { rules: [] });
|
|
188
|
-
moduleOptions.rules = moduleOptions.rules || [];
|
|
189
|
-
const createRule = (match) => ({
|
|
190
|
-
...match,
|
|
191
|
-
enforce: "pre",
|
|
192
|
-
use: [{
|
|
193
|
-
loader,
|
|
194
|
-
options: loaderOptions
|
|
195
|
-
}]
|
|
196
|
-
});
|
|
197
|
-
moduleOptions.rules.unshift(createRule({ resourceQuery: (query) => isMpxStyleResourceQuery(query) }), createRule({
|
|
198
|
-
test: CSS_EXT_RE,
|
|
199
|
-
resourceQuery: (query) => !isMpxStyleResourceQuery(query)
|
|
200
|
-
}));
|
|
201
|
-
}
|
|
202
|
-
//#endregion
|
|
203
23
|
//#region src/bundlers/webpack/BaseUnifiedPlugin/shared.ts
|
|
204
|
-
const MPX_STYLE_RESOURCE_QUERY_RE = /(?:\?|&)type=styles\b/;
|
|
205
24
|
function getCacheKey(filename) {
|
|
206
25
|
return filename;
|
|
207
26
|
}
|
|
@@ -209,12 +28,11 @@ function stripResourceQuery(resource) {
|
|
|
209
28
|
if (typeof resource !== "string") return resource;
|
|
210
29
|
return require_source_candidate_scan_signature.stripRequestQuery(resource);
|
|
211
30
|
}
|
|
212
|
-
function isCssLikeModuleResource(resource, cssMatcher
|
|
31
|
+
function isCssLikeModuleResource(resource, cssMatcher) {
|
|
213
32
|
if (typeof resource !== "string") return false;
|
|
214
33
|
const normalizedResource = stripResourceQuery(resource);
|
|
215
34
|
if (normalizedResource && cssMatcher(normalizedResource)) return true;
|
|
216
35
|
if (require_source_candidate_scan_signature.isSourceStyleRequest(resource)) return true;
|
|
217
|
-
if (appType === "mpx") return MPX_STYLE_RESOURCE_QUERY_RE.test(resource);
|
|
218
36
|
return false;
|
|
219
37
|
}
|
|
220
38
|
function hasLoaderEntry(entries, target) {
|
|
@@ -358,6 +176,11 @@ function hasMissingRuntimeCandidates(classSet, candidates) {
|
|
|
358
176
|
for (const candidate of candidates) if (isRuntimeTransformCandidate(candidate) && !classSet.has(candidate)) return true;
|
|
359
177
|
return false;
|
|
360
178
|
}
|
|
179
|
+
function hasStaleRuntimeCandidates(classSet, candidates) {
|
|
180
|
+
if (!classSet || !candidates) return false;
|
|
181
|
+
for (const candidate of classSet) if (isRuntimeTransformCandidate(candidate) && !candidates.has(candidate)) return true;
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
361
184
|
function resolveGeneratedCssRuntimeCandidates(source, fallbackClassSet) {
|
|
362
185
|
const classSet = collectGeneratedCssRuntimeCandidates(source);
|
|
363
186
|
if (classSet.size > 0 || fallbackClassSet === void 0) return classSet;
|
|
@@ -396,6 +219,11 @@ function resolveWebpackGeneratorRawSource(rawSource, cssHandlerOptions) {
|
|
|
396
219
|
if (sourceCss && (require_v4_engine.hasTailwindRootDirectives(sourceCss, { importFallback: true }) || require_v4_engine.hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || require_v4_engine.hasTailwindApplyDirective(sourceCss) || require_v4_engine.hasTailwindGeneratedCss(sourceCss) || require_v4_engine.hasTailwindGeneratedCssMarkers(sourceCss))) return sourceCss;
|
|
397
220
|
return rawSource;
|
|
398
221
|
}
|
|
222
|
+
function shouldConsumeWebpackLoaderGeneratedCss(options) {
|
|
223
|
+
if (!options.shouldRegenerateExplicitTailwindV4CssSource) return true;
|
|
224
|
+
if (options.watchMode === true && options.loaderGeneratedClassSet && options.sourceCandidates && (hasMissingRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates) || hasStaleRuntimeCandidates(options.loaderGeneratedClassSet, options.sourceCandidates))) return false;
|
|
225
|
+
return options.hasBundlerGeneratedCssMarker;
|
|
226
|
+
}
|
|
399
227
|
function hasUsableWebpackGeneratorCssSources(cssSources) {
|
|
400
228
|
return Array.isArray(cssSources) && cssSources.some((source) => typeof source?.css === "string" && source.css.length > 0);
|
|
401
229
|
}
|
|
@@ -447,7 +275,8 @@ function hasProcessedCssAssetUrl(css) {
|
|
|
447
275
|
return /url\(\s*["']?data:/i.test(css);
|
|
448
276
|
}
|
|
449
277
|
function shouldUseWebpackAssetAsGeneratorUserCss(rawSource, generatorRawSource, options = {}) {
|
|
450
|
-
|
|
278
|
+
const rawMarkers = collectWebpackAssetUserCssMarkers(rawSource);
|
|
279
|
+
return rawSource !== generatorRawSource && (options.processed === true || !rawSource.includes("data:")) && !require_v4_engine.hasTailwindRootDirectives(rawSource, { importFallback: true }) && !require_v4_engine.hasTailwindSourceDirectives(rawSource, { importFallback: true }) && !require_v4_engine.hasTailwindApplyDirective(rawSource) && rawMarkers.size > 0 && !isOnlyWebpackTailwindGeneratedPreflightCss(rawSource) && (!require_v4_engine.hasTailwindGeneratedCssMarkers(rawSource) || hasAdditionalWebpackAssetUserCssMarkers(rawSource, generatorRawSource));
|
|
451
280
|
}
|
|
452
281
|
function collectWebpackAssetUserCssMarkers(source) {
|
|
453
282
|
const markers = /* @__PURE__ */ new Set();
|
|
@@ -469,6 +298,44 @@ function collectWebpackAssetUserCssMarkers(source) {
|
|
|
469
298
|
} catch {}
|
|
470
299
|
return markers;
|
|
471
300
|
}
|
|
301
|
+
function hasWebpackClassSelector(selector) {
|
|
302
|
+
return /(?:^|[^\w-])\.[_a-z\u00A0-\uFFFF\\-]/i.test(selector);
|
|
303
|
+
}
|
|
304
|
+
function isWebpackKeyframesRule(rule) {
|
|
305
|
+
let parent = rule.parent;
|
|
306
|
+
while (parent) {
|
|
307
|
+
if (parent.type === "atrule" && parent.name.endsWith("keyframes")) return true;
|
|
308
|
+
parent = parent.parent;
|
|
309
|
+
}
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
function collectWebpackBareSelectorUserCss(source) {
|
|
313
|
+
try {
|
|
314
|
+
const root = _weapp_tailwindcss_postcss.postcss.parse(require_v4_engine.removeTailwindSourceDirectives(require_v4_engine.stripTailwindSourceMediaFragments(require_v4_engine.removeTailwindV4GeneratorAtRules(source)), { importFallback: true }));
|
|
315
|
+
let changed = false;
|
|
316
|
+
root.walkAtRules((rule) => {
|
|
317
|
+
if (rule.name === "import" || rule.name === "font-face" || rule.name.endsWith("keyframes")) {
|
|
318
|
+
rule.remove();
|
|
319
|
+
changed = true;
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
root.walkRules((rule) => {
|
|
323
|
+
if (isWebpackKeyframesRule(rule) || rule.selectors.some((selector) => hasWebpackClassSelector(selector))) {
|
|
324
|
+
rule.remove();
|
|
325
|
+
changed = true;
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
root.walkAtRules((rule) => {
|
|
329
|
+
if (rule.nodes !== void 0 && rule.nodes.length === 0) {
|
|
330
|
+
rule.remove();
|
|
331
|
+
changed = true;
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
return changed ? root.toString() : source;
|
|
335
|
+
} catch {
|
|
336
|
+
return "";
|
|
337
|
+
}
|
|
338
|
+
}
|
|
472
339
|
const WEBPACK_TAILWIND_GENERATED_LAYER_NAMES = /* @__PURE__ */ new Set([
|
|
473
340
|
"theme",
|
|
474
341
|
"base",
|
|
@@ -477,6 +344,26 @@ const WEBPACK_TAILWIND_GENERATED_LAYER_NAMES = /* @__PURE__ */ new Set([
|
|
|
477
344
|
const WEBPACK_TAILWIND_UTILITY_RULE_MARKER_RE = /(?:^|[^\w-])\.[^,{]{0,512}(?:\\:|\\\[|\\#)/;
|
|
478
345
|
const WEBPACK_TAILWIND_UTILITY_PREFIX_RE = /^\.(?:-?(?:bg|text|border|ring|shadow|drop-shadow|[pmwhz]|px|py|pt|pr|pb|pl|mx|my|mt|mr|mb|ml|min-w|min-h|max-w|max-h|flex|grid|inline|block|hidden|rounded|opacity|translate|scale|rotate|skew|top|right|bottom|left|inset|gap|font|leading|tracking|underline|container)(?:[\-\\{]|$)|\\\[)/;
|
|
479
346
|
const WEBPACK_TAILWIND_BANNER_RE = /tailwindcss v4\./;
|
|
347
|
+
const WEBPACK_TAILWIND_PREFLIGHT_SELECTORS = /* @__PURE__ */ new Set([
|
|
348
|
+
"*",
|
|
349
|
+
":after",
|
|
350
|
+
":before",
|
|
351
|
+
"::after",
|
|
352
|
+
"::before",
|
|
353
|
+
"::backdrop",
|
|
354
|
+
"view",
|
|
355
|
+
"text"
|
|
356
|
+
]);
|
|
357
|
+
const WEBPACK_TAILWIND_PREFLIGHT_PROPS = /* @__PURE__ */ new Set([
|
|
358
|
+
"box-sizing",
|
|
359
|
+
"border",
|
|
360
|
+
"border-width",
|
|
361
|
+
"border-style",
|
|
362
|
+
"border-color",
|
|
363
|
+
"margin",
|
|
364
|
+
"padding"
|
|
365
|
+
]);
|
|
366
|
+
const WEBPACK_TAILWIND_THEME_TOKEN_RE = /^--(?:tw-|color-|spacing|breakpoint-|container-|text-|font-|tracking-|leading-|radius-|shadow-|inset-shadow-|drop-shadow-|ease-|animate-|blur-|perspective-|aspect-|default-)/;
|
|
480
367
|
function parseWebpackCssLayerNames(params) {
|
|
481
368
|
return params.split(",").map((name) => name.trim()).filter(Boolean);
|
|
482
369
|
}
|
|
@@ -512,18 +399,21 @@ function removeWebpackTailwindGeneratedAssetCss(source) {
|
|
|
512
399
|
return;
|
|
513
400
|
}
|
|
514
401
|
if (shouldRemoveLayer && !names.includes("utilities")) {
|
|
515
|
-
rule.
|
|
516
|
-
|
|
402
|
+
for (const child of [...rule.nodes ?? []]) if (isWebpackTailwindGeneratedLayerNode(child, names)) {
|
|
403
|
+
child.remove();
|
|
404
|
+
changed = true;
|
|
405
|
+
}
|
|
406
|
+
if (rule.nodes?.length === 0) {
|
|
407
|
+
rule.remove();
|
|
408
|
+
changed = true;
|
|
409
|
+
}
|
|
517
410
|
return;
|
|
518
411
|
}
|
|
519
412
|
if (shouldRemoveLayer) {
|
|
520
|
-
rule.
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
changed = true;
|
|
525
|
-
}
|
|
526
|
-
});
|
|
413
|
+
for (const child of [...rule.nodes ?? []]) if (isWebpackTailwindGeneratedLayerNode(child, names)) {
|
|
414
|
+
child.remove();
|
|
415
|
+
changed = true;
|
|
416
|
+
}
|
|
527
417
|
if (rule.nodes?.length === 0) {
|
|
528
418
|
rule.remove();
|
|
529
419
|
changed = true;
|
|
@@ -533,7 +423,7 @@ function removeWebpackTailwindGeneratedAssetCss(source) {
|
|
|
533
423
|
root.walkRules((rule) => {
|
|
534
424
|
if (rule.parent?.type === "atrule" && rule.parent.name === "layer") return;
|
|
535
425
|
const selector = rule.selector.trim();
|
|
536
|
-
if (WEBPACK_TAILWIND_UTILITY_RULE_MARKER_RE.test(selector)) {
|
|
426
|
+
if (WEBPACK_TAILWIND_UTILITY_RULE_MARKER_RE.test(selector) || isWebpackTailwindGeneratedPreflightRule(rule)) {
|
|
537
427
|
rule.remove();
|
|
538
428
|
changed = true;
|
|
539
429
|
}
|
|
@@ -556,14 +446,59 @@ function removeWebpackTailwindGeneratedAssetCss(source) {
|
|
|
556
446
|
}
|
|
557
447
|
}
|
|
558
448
|
function isWebpackTailwindGeneratedPrefixNode(node) {
|
|
559
|
-
if (node.type === "rule") return node
|
|
449
|
+
if (node.type === "rule") return isWebpackTailwindGeneratedRule(node, [
|
|
450
|
+
"theme",
|
|
451
|
+
"base",
|
|
452
|
+
"utilities"
|
|
453
|
+
], true);
|
|
560
454
|
if (node.type !== "atrule") return false;
|
|
561
455
|
const names = node.name === "layer" ? parseWebpackCssLayerNames(node.params) : [];
|
|
562
456
|
if (node.name === "property" && node.params.trim().startsWith("--tw-")) return true;
|
|
563
|
-
if (names.length > 0 && names.every((name) => WEBPACK_TAILWIND_GENERATED_LAYER_NAMES.has(name)))
|
|
457
|
+
if (names.length > 0 && names.every((name) => WEBPACK_TAILWIND_GENERATED_LAYER_NAMES.has(name))) {
|
|
458
|
+
if (node.nodes === void 0) return true;
|
|
459
|
+
return node.nodes.length > 0 && node.nodes.every((child) => isWebpackTailwindGeneratedLayerNode(child, names));
|
|
460
|
+
}
|
|
564
461
|
if (node.nodes === void 0 || node.nodes.length === 0) return false;
|
|
565
462
|
return node.nodes.every((child) => isWebpackTailwindGeneratedPrefixNode(child));
|
|
566
463
|
}
|
|
464
|
+
function isWebpackTailwindGeneratedLayerNode(node, layerNames) {
|
|
465
|
+
if (node.type === "rule") return isWebpackTailwindGeneratedRule(node, layerNames, false);
|
|
466
|
+
if (node.type !== "atrule") return false;
|
|
467
|
+
if (node.name === "property" && node.params.trim().startsWith("--tw-")) return true;
|
|
468
|
+
if (node.nodes === void 0 || node.nodes.length === 0) return false;
|
|
469
|
+
return node.nodes.every((child) => isWebpackTailwindGeneratedLayerNode(child, layerNames));
|
|
470
|
+
}
|
|
471
|
+
function isWebpackTailwindGeneratedRule(rule, layerNames, includePrefix) {
|
|
472
|
+
const selectors = rule.selectors ?? [rule.selector];
|
|
473
|
+
if (selectors.every((selector) => isWebpackTailwindGeneratedUtilitySelector(selector.trim(), includePrefix))) return true;
|
|
474
|
+
if (selectors.every((selector) => isWebpackTailwindGeneratedUtilitySelector(selector.trim(), true))) return true;
|
|
475
|
+
if (layerNames.includes("theme") && isWebpackTailwindGeneratedThemeRule(rule)) return true;
|
|
476
|
+
if (layerNames.includes("base") && isWebpackTailwindGeneratedPreflightRule(rule)) return true;
|
|
477
|
+
return false;
|
|
478
|
+
}
|
|
479
|
+
function isWebpackTailwindGeneratedThemeRule(rule) {
|
|
480
|
+
const declarations = (rule.nodes ?? []).filter((node) => node.type === "decl");
|
|
481
|
+
return declarations.length > 0 && declarations.every((decl) => WEBPACK_TAILWIND_THEME_TOKEN_RE.test(decl.prop) || decl.value.includes("--theme("));
|
|
482
|
+
}
|
|
483
|
+
function isWebpackTailwindGeneratedPreflightRule(rule) {
|
|
484
|
+
const selectors = rule.selectors ?? [rule.selector];
|
|
485
|
+
const declarations = (rule.nodes ?? []).filter((node) => node.type === "decl");
|
|
486
|
+
return selectors.length > 0 && declarations.length > 0 && selectors.every((selector) => {
|
|
487
|
+
const normalized = selector.trim().replace(/\s+/g, " ");
|
|
488
|
+
return WEBPACK_TAILWIND_PREFLIGHT_SELECTORS.has(normalized);
|
|
489
|
+
}) && declarations.every((decl) => WEBPACK_TAILWIND_PREFLIGHT_PROPS.has(decl.prop));
|
|
490
|
+
}
|
|
491
|
+
function isOnlyWebpackTailwindGeneratedPreflightCss(source) {
|
|
492
|
+
try {
|
|
493
|
+
const nodes = _weapp_tailwindcss_postcss.postcss.parse(source).nodes ?? [];
|
|
494
|
+
return nodes.length > 0 && nodes.every((node) => {
|
|
495
|
+
if (node.type === "rule") return isWebpackTailwindGeneratedPreflightRule(node);
|
|
496
|
+
return node.type === "atrule" && (node.nodes === void 0 || node.nodes.length === 0);
|
|
497
|
+
});
|
|
498
|
+
} catch {
|
|
499
|
+
return false;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
567
502
|
function isWebpackTailwindGeneratedUtilitySelector(selector, includePrefix) {
|
|
568
503
|
return WEBPACK_TAILWIND_UTILITY_RULE_MARKER_RE.test(selector) || includePrefix && WEBPACK_TAILWIND_UTILITY_PREFIX_RE.test(selector);
|
|
569
504
|
}
|
|
@@ -875,6 +810,26 @@ function stringifyWebpackSourceLike(source) {
|
|
|
875
810
|
}
|
|
876
811
|
//#endregion
|
|
877
812
|
//#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets/css-source-resolvers.ts
|
|
813
|
+
function normalizeWebpackCssSourceRef(file) {
|
|
814
|
+
return file.replaceAll("\\", "/");
|
|
815
|
+
}
|
|
816
|
+
function collectWebpackCssTokenSourceRefs(source) {
|
|
817
|
+
const refs = /* @__PURE__ */ new Set();
|
|
818
|
+
for (const line of source.split("\n")) {
|
|
819
|
+
if (!line.includes("/* tokens:") || !line.includes("<=")) continue;
|
|
820
|
+
const traceStart = line.indexOf("<=");
|
|
821
|
+
const traceEnd = line.indexOf("*/", traceStart);
|
|
822
|
+
const trace = line.slice(traceStart + 2, traceEnd >= 0 ? traceEnd : void 0);
|
|
823
|
+
for (const segment of trace.split("|")) {
|
|
824
|
+
const sourceList = segment.replace(/^[^<]*<=\s*/, "").split(",");
|
|
825
|
+
for (const ref of sourceList) {
|
|
826
|
+
const normalizedRef = ref.trim();
|
|
827
|
+
if (normalizedRef) refs.add(normalizeWebpackCssSourceRef(normalizedRef));
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
return refs;
|
|
832
|
+
}
|
|
878
833
|
function createWebpackCssSourceResolvers(options) {
|
|
879
834
|
const { activeWebpackAssetResourceFiles, appType, compilerOptions, compilation, cssAssetResources, cssHandlerOptionsCache, cssSources, cssUserHandlerOptionsCache, groupedCssEntriesLength, singleCssAssetFile, isWebGeneratorTarget, outputDir, runtimeState } = options;
|
|
880
835
|
const hasConfiguredTailwindV4SourceRoots = () => {
|
|
@@ -942,6 +897,19 @@ function createWebpackCssSourceResolvers(options) {
|
|
|
942
897
|
return activeAssetResource;
|
|
943
898
|
}
|
|
944
899
|
if (rawSource) {
|
|
900
|
+
const tokenSourceRefs = collectWebpackCssTokenSourceRefs(rawSource);
|
|
901
|
+
if (tokenSourceRefs.size > 0) {
|
|
902
|
+
const tokenSourceMatches = [...cssSources.keys()].filter((sourceFile) => {
|
|
903
|
+
const relativeSourceFile = normalizeWebpackCssSourceRef(node_path.default.relative(compilerOptions.tailwindcssBasedir, sourceFile));
|
|
904
|
+
const absoluteSourceFile = normalizeWebpackCssSourceRef(node_path.default.resolve(sourceFile));
|
|
905
|
+
return tokenSourceRefs.has(relativeSourceFile) || tokenSourceRefs.has(absoluteSourceFile);
|
|
906
|
+
}).sort();
|
|
907
|
+
if (tokenSourceMatches.length === 1) {
|
|
908
|
+
const sourceFile = tokenSourceMatches[0];
|
|
909
|
+
activeWebpackCssSourceFiles.add(sourceFile);
|
|
910
|
+
return sourceFile;
|
|
911
|
+
}
|
|
912
|
+
}
|
|
945
913
|
const representedTailwindSourceMatches = [...cssSources.entries()].filter(([, source]) => isWebpackCssSourceRepresentedInAsset(rawSource, source.css)).map(([sourceFile]) => ({
|
|
946
914
|
sourceFile,
|
|
947
915
|
score: require_hmr_timing.scoreTailwindV4CssSourceFileMatch(file, sourceFile, {
|
|
@@ -1702,7 +1670,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1702
1670
|
return rawSource;
|
|
1703
1671
|
};
|
|
1704
1672
|
const chunkHash = assetHashByChunk.get(file);
|
|
1705
|
-
const cssHandlerOptionsForProcessedAsset = getCssHandlerOptions(file);
|
|
1673
|
+
const cssHandlerOptionsForProcessedAsset = getCssHandlerOptions(file, readRawSource());
|
|
1706
1674
|
const processedCssAssetMetadata = { isMainCssChunk: cssHandlerOptionsForProcessedAsset.isMainChunk };
|
|
1707
1675
|
const processedSourceFile = cssHandlerOptionsForProcessedAsset.sourceOptions?.sourceFile;
|
|
1708
1676
|
const processedSourceCss = processedSourceFile ? cssSources.get(node_path.default.resolve(processedSourceFile))?.css : void 0;
|
|
@@ -1737,9 +1705,10 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1737
1705
|
...source,
|
|
1738
1706
|
file: sourceFile
|
|
1739
1707
|
})), readCurrentProcessedRawSource()) !== void 0;
|
|
1708
|
+
const hasProcessedLoaderGeneratedUserCss = cachedSkipProcessedCssAsset === void 0 && processedLoaderGeneratedCss !== void 0 && hasAdditionalWebpackAssetUserCssMarkers(processedLoaderGeneratedCss.css, readCurrentProcessedRawSource());
|
|
1740
1709
|
const shouldFinalizeProcessedWebCssAsset = isWebGeneratorTarget && !shouldForceConfiguredMainCssGeneration && !shouldRegenerateProcessedTailwindV4SourceCss && require_v4_engine.hasTailwindSourceDirectives(readCurrentProcessedRawSource(), { importFallback: true });
|
|
1741
1710
|
const shouldPreserveFinalWebCssAsset = isWebGeneratorTarget && processedSourceFile === void 0 && !shouldForceConfiguredMainCssGeneration && (hasGeneratedCssMarker || hasTailwindGeneratedAssetCss);
|
|
1742
|
-
const shouldSkipKnownProcessedCssAsset = !shouldForceConfiguredMainCssGeneration && !shouldRegenerateProcessedTailwindV4SourceCss && !shouldRegenerateStaleProcessedWebCssAsset && (processedCssAssetKnown || isWebpackProcessedCssAsset?.(file, readCurrentProcessedRawSource(), processedCssAssetMetadata)) && !hasProcessedMainAssetUserCss && (!cssHandlerOptionsForProcessedAsset.isMainChunk || hasGeneratedCssMarker || hasTailwindGeneratedAssetCss);
|
|
1711
|
+
const shouldSkipKnownProcessedCssAsset = !shouldForceConfiguredMainCssGeneration && !shouldRegenerateProcessedTailwindV4SourceCss && !shouldRegenerateStaleProcessedWebCssAsset && (processedCssAssetKnown || isWebpackProcessedCssAsset?.(file, readCurrentProcessedRawSource(), processedCssAssetMetadata)) && !hasProcessedMainAssetUserCss && !hasProcessedLoaderGeneratedUserCss && (!cssHandlerOptionsForProcessedAsset.isMainChunk || hasGeneratedCssMarker || hasTailwindGeneratedAssetCss);
|
|
1743
1712
|
const shouldSkipProcessedCssAsset = cachedSkipProcessedCssAsset ?? (shouldFinalizeProcessedWebCssAsset || shouldPreserveFinalWebCssAsset || shouldSkipKnownProcessedCssAsset);
|
|
1744
1713
|
if (processedCssAssetKnown && cachedSkipProcessedCssAsset === void 0 && !shouldFinalizeProcessedWebCssAsset && !shouldPreserveFinalWebCssAsset) processedCssAssetSkipDecisionCache.set(processedCssDecisionCacheKey, shouldSkipProcessedCssAsset === true);
|
|
1745
1714
|
if (shouldSkipProcessedCssAsset) {
|
|
@@ -1764,12 +1733,29 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1764
1733
|
},
|
|
1765
1734
|
transform: async () => {
|
|
1766
1735
|
const source = readCurrentProcessedRawSource();
|
|
1736
|
+
const processedBareSelectorSourceCss = processedSourceCss ?? (hasTailwindGeneratedAssetCss ? removeWebpackTailwindGeneratedAssetCss(source) : void 0);
|
|
1767
1737
|
const nextCss = stripTrailingLineWhitespace(finalizeCssAssetSource(hasTailwindGeneratedAssetCss && !hasGeneratedCssMarker ? isWebGeneratorTarget ? source : (await compilerOptions.styleHandler(source, cssHandlerOptionsForProcessedAsset)).css : source, {
|
|
1768
1738
|
cssPreflight: cssHandlerOptionsForProcessedAsset.isMainChunk,
|
|
1769
1739
|
generatedCss: hasGeneratedCssMarker || hasTailwindGeneratedAssetCss
|
|
1770
1740
|
}));
|
|
1741
|
+
const processedSourceBareUserCss = isWebGeneratorTarget || processedBareSelectorSourceCss === void 0 ? void 0 : createWebpackGeneratorUserCssSourceAppend({
|
|
1742
|
+
css: collectWebpackBareSelectorUserCss(processedBareSelectorSourceCss),
|
|
1743
|
+
processed: false
|
|
1744
|
+
});
|
|
1745
|
+
const finalizedProcessedSourceBareUserCss = processedSourceBareUserCss === void 0 ? "" : finalizeCssAssetSource(processedSourceBareUserCss.css, {
|
|
1746
|
+
cssPreflight: false,
|
|
1747
|
+
generatedCss: false
|
|
1748
|
+
});
|
|
1749
|
+
const missingProcessedSourceBareUserCss = finalizedProcessedSourceBareUserCss.trim().length === 0 ? "" : (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(nextCss, finalizedProcessedSourceBareUserCss);
|
|
1750
|
+
const css = missingProcessedSourceBareUserCss.trim().length === 0 ? nextCss : createWebpackGeneratorUserCssSourceAppend({
|
|
1751
|
+
css: nextCss,
|
|
1752
|
+
processed: true
|
|
1753
|
+
}, {
|
|
1754
|
+
css: missingProcessedSourceBareUserCss,
|
|
1755
|
+
processed: true
|
|
1756
|
+
}).css;
|
|
1771
1757
|
debug("css skip webpack-loader-pipeline asset: %s", file);
|
|
1772
|
-
return { result: new ConcatSource(finalizeTracedCss(
|
|
1758
|
+
return { result: new ConcatSource(finalizeTracedCss(css, cssHandlerOptionsForProcessedAsset)) };
|
|
1773
1759
|
}
|
|
1774
1760
|
});
|
|
1775
1761
|
}, cssTaskFactories);
|
|
@@ -1838,7 +1824,14 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1838
1824
|
const loaderGeneratedCss = sourceFile && !isWebGeneratorTarget ? generatedCssSources.get(node_path.default.resolve(sourceFile)) : void 0;
|
|
1839
1825
|
const sourceCss = sourceFile ? cssSources.get(node_path.default.resolve(sourceFile))?.css : void 0;
|
|
1840
1826
|
const shouldRegenerateExplicitTailwindV4CssSource = sourceCss !== void 0 && (require_v4_engine.hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config"));
|
|
1841
|
-
|
|
1827
|
+
const explicitTailwindV4SourceCandidates = shouldRegenerateExplicitTailwindV4CssSource && sourceCss && sourceFile && webpackSourceCandidates?.getSourceCandidatesForEntries ? await require_tailwindcss.resolveTailwindV4EntriesFromCssCached(sourceCss, node_path.default.dirname(sourceFile)).then((resolved) => resolved?.entries ? webpackSourceCandidates.getSourceCandidatesForEntries(resolved.entries) : void 0) : void 0;
|
|
1828
|
+
if (loaderGeneratedCss && shouldConsumeWebpackLoaderGeneratedCss({
|
|
1829
|
+
hasBundlerGeneratedCssMarker: require_source_candidate_scan_signature.hasBundlerGeneratedCssMarker(currentRawSource),
|
|
1830
|
+
loaderGeneratedClassSet: loaderGeneratedCss.classSet,
|
|
1831
|
+
sourceCandidates: explicitTailwindV4SourceCandidates,
|
|
1832
|
+
shouldRegenerateExplicitTailwindV4CssSource,
|
|
1833
|
+
watchMode
|
|
1834
|
+
})) {
|
|
1842
1835
|
for (const className of loaderGeneratedCss.classSet) {
|
|
1843
1836
|
generatorRuntimeSet.add(className);
|
|
1844
1837
|
transformRuntimeSet.add(className);
|
|
@@ -1847,16 +1840,49 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1847
1840
|
const currentRawSourceWithoutBundlerMarkers = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(currentRawSource);
|
|
1848
1841
|
const currentAssetHasProcessedUrl = hasProcessedCssAssetUrl(currentRawSourceWithoutBundlerMarkers) && currentRawSourceWithoutBundlerMarkers !== loaderGeneratedCss.css;
|
|
1849
1842
|
const currentAssetUserCss = currentAssetHasProcessedUrl ? currentRawSourceWithoutBundlerMarkers : shouldUseWebpackAssetAsGeneratorUserCss(currentRawSourceWithoutBundlerMarkers, loaderGeneratedCss.css, { processed: true }) ? require_hmr_timing.removeGeneratedSelectorCompatCss(currentRawSourceWithoutBundlerMarkers, loaderGeneratedCss.css) : void 0;
|
|
1850
|
-
const
|
|
1851
|
-
|
|
1843
|
+
const isConfiguredMainCssSource = configuredMainCssEntryFiles.some((entry) => node_path.default.resolve(entry) === node_path.default.resolve(sourceFile));
|
|
1844
|
+
const loaderGeneratedCssWithoutMarkers = require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(loaderGeneratedCss.css);
|
|
1845
|
+
const currentAssetUserCssWithoutMarkers = currentAssetUserCss === void 0 ? "" : require_source_candidate_scan_signature.stripBundlerGeneratedCssMarkers(currentAssetUserCss);
|
|
1846
|
+
const currentAssetMissingUserCss = !(currentAssetUserCssWithoutMarkers.trim().length > 0 && !require_v4_engine.isCommentOnlyCss(currentAssetUserCssWithoutMarkers)) ? "" : (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(currentAssetUserCssWithoutMarkers, loaderGeneratedCssWithoutMarkers);
|
|
1847
|
+
if (isConfiguredMainCssSource && !cssHandlerOptions.isMainChunk && (currentAssetMissingUserCss.trim().length === 0 || require_v4_engine.isCommentOnlyCss(currentAssetMissingUserCss))) {
|
|
1848
|
+
debug("css skip duplicate webpack loader main generation: %s <- %s", file, sourceFile);
|
|
1849
|
+
return { result: new ConcatSource(finalizeTracedCss("", cssHandlerOptions)) };
|
|
1850
|
+
}
|
|
1851
|
+
const finalizedLoaderCss = finalizeCssAssetSource(currentAssetUserCss === void 0 ? loaderGeneratedCss.css : createWebpackGeneratorUserCssSourceAppend({
|
|
1852
|
+
css: currentAssetUserCss === void 0 ? loaderGeneratedCss.css : currentAssetHasProcessedUrl ? require_hmr_timing.removeGeneratedSelectorCompatCss(loaderGeneratedCss.css, currentAssetUserCss) : (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(currentAssetUserCss, loaderGeneratedCss.css),
|
|
1852
1853
|
processed: true
|
|
1853
|
-
}, {
|
|
1854
|
+
}, currentAssetUserCss === void 0 ? void 0 : {
|
|
1854
1855
|
css: currentAssetUserCss,
|
|
1855
1856
|
processed: true
|
|
1856
1857
|
}).css, {
|
|
1857
1858
|
cssPreflight: cssHandlerOptions.isMainChunk,
|
|
1858
1859
|
generatedCss: true
|
|
1859
|
-
})
|
|
1860
|
+
});
|
|
1861
|
+
const loaderSourceBareUserCss = isWebGeneratorTarget ? void 0 : createWebpackGeneratorUserCssSourceAppend(...[currentAssetUserCss === void 0 ? void 0 : {
|
|
1862
|
+
css: currentAssetUserCss,
|
|
1863
|
+
processed: true
|
|
1864
|
+
}, sourceCss === void 0 ? void 0 : {
|
|
1865
|
+
css: sourceCss,
|
|
1866
|
+
processed: false
|
|
1867
|
+
}].map((source) => {
|
|
1868
|
+
if (source === void 0) return;
|
|
1869
|
+
return {
|
|
1870
|
+
css: collectWebpackBareSelectorUserCss(source.css),
|
|
1871
|
+
processed: source.processed
|
|
1872
|
+
};
|
|
1873
|
+
}));
|
|
1874
|
+
const finalizedLoaderSourceBareUserCss = loaderSourceBareUserCss === void 0 ? "" : finalizeCssAssetSource(loaderSourceBareUserCss.css, {
|
|
1875
|
+
cssPreflight: false,
|
|
1876
|
+
generatedCss: false
|
|
1877
|
+
});
|
|
1878
|
+
const missingLoaderSourceBareUserCss = finalizedLoaderSourceBareUserCss.trim().length === 0 ? "" : (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(finalizedLoaderCss, finalizedLoaderSourceBareUserCss);
|
|
1879
|
+
const css = finalizeTracedCss(missingLoaderSourceBareUserCss.trim().length === 0 ? finalizedLoaderCss : createWebpackGeneratorUserCssSourceAppend({
|
|
1880
|
+
css: finalizedLoaderCss,
|
|
1881
|
+
processed: true
|
|
1882
|
+
}, {
|
|
1883
|
+
css: missingLoaderSourceBareUserCss,
|
|
1884
|
+
processed: true
|
|
1885
|
+
}).css, cssHandlerOptions);
|
|
1860
1886
|
debug("css consume webpack loader generation: %s <- %s", file, sourceFile);
|
|
1861
1887
|
return { result: new ConcatSource(css) };
|
|
1862
1888
|
}
|
|
@@ -1947,7 +1973,7 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1947
1973
|
generated = void 0;
|
|
1948
1974
|
}
|
|
1949
1975
|
else debug("css generator skipped for unmatched webpack main css asset: %s", file);
|
|
1950
|
-
const
|
|
1976
|
+
const finalizedGeneratedCss = generated ? finalizeCssAssetSource(isWebGeneratorTarget && currentRawSource.includes("tailwindcss v4.") ? createWebpackGeneratorUserCssSourceAppend({
|
|
1951
1977
|
css: generated.css,
|
|
1952
1978
|
processed: true
|
|
1953
1979
|
}, {
|
|
@@ -1956,7 +1982,36 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
1956
1982
|
})?.css ?? generated.css : generated.css, {
|
|
1957
1983
|
cssPreflight: cssHandlerOptions.isMainChunk,
|
|
1958
1984
|
generatedCss: true
|
|
1959
|
-
}) : isWebGeneratorTarget ? finalizeCssAssetSource(generatorRawSource, { generatedCss: false }) : finalizeCssAssetSource((await compilerOptions.styleHandler(generatorRawSource, cssHandlerOptions)).css, { generatedCss: false })
|
|
1985
|
+
}) : isWebGeneratorTarget ? finalizeCssAssetSource(generatorRawSource, { generatedCss: false }) : finalizeCssAssetSource((await compilerOptions.styleHandler(generatorRawSource, cssHandlerOptions)).css, { generatedCss: false });
|
|
1986
|
+
const sourceBareUserCss = isWebGeneratorTarget ? void 0 : createWebpackGeneratorUserCssSourceAppend(...[
|
|
1987
|
+
userRawSource,
|
|
1988
|
+
sourceCss === void 0 ? void 0 : {
|
|
1989
|
+
css: sourceCss,
|
|
1990
|
+
processed: sourceCssProcessed
|
|
1991
|
+
},
|
|
1992
|
+
{
|
|
1993
|
+
css: generatorRawSource,
|
|
1994
|
+
processed: false
|
|
1995
|
+
}
|
|
1996
|
+
].map((source) => {
|
|
1997
|
+
if (source === void 0) return;
|
|
1998
|
+
return {
|
|
1999
|
+
css: collectWebpackBareSelectorUserCss(source.css),
|
|
2000
|
+
processed: source.processed
|
|
2001
|
+
};
|
|
2002
|
+
}));
|
|
2003
|
+
const finalizedSourceBareUserCss = sourceBareUserCss === void 0 ? "" : finalizeCssAssetSource(sourceBareUserCss.css, {
|
|
2004
|
+
cssPreflight: false,
|
|
2005
|
+
generatedCss: false
|
|
2006
|
+
});
|
|
2007
|
+
const missingSourceBareUserCss = finalizedSourceBareUserCss.trim().length === 0 ? "" : (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(finalizedGeneratedCss, finalizedSourceBareUserCss);
|
|
2008
|
+
const source = new ConcatSource(finalizeTracedCss(missingSourceBareUserCss.trim().length === 0 ? finalizedGeneratedCss : createWebpackGeneratorUserCssSourceAppend({
|
|
2009
|
+
css: finalizedGeneratedCss,
|
|
2010
|
+
processed: true
|
|
2011
|
+
}, {
|
|
2012
|
+
css: missingSourceBareUserCss,
|
|
2013
|
+
processed: true
|
|
2014
|
+
}).css, cssHandlerOptions));
|
|
1960
2015
|
if (generated) {
|
|
1961
2016
|
for (const className of generated.classSet) generatorRuntimeSet.add(className);
|
|
1962
2017
|
debug("css handle via tailwind v%s engine(%s): %s", runtimeState.tailwindRuntime.majorVersion, generated.target, file);
|
|
@@ -2004,6 +2059,183 @@ function setupWebpackV5ProcessAssetsHook(options) {
|
|
|
2004
2059
|
});
|
|
2005
2060
|
}
|
|
2006
2061
|
//#endregion
|
|
2062
|
+
//#region src/shared/tailwindcss-css-redirect.ts
|
|
2063
|
+
const moduleWithMutableResolve = node_module.default;
|
|
2064
|
+
const patched = /* @__PURE__ */ new WeakSet();
|
|
2065
|
+
function installTailwindcssCssRedirect(pkgDir) {
|
|
2066
|
+
const target = node_path.default.join(pkgDir, "index.css");
|
|
2067
|
+
const original = moduleWithMutableResolve._resolveFilename;
|
|
2068
|
+
if (patched.has(original)) return;
|
|
2069
|
+
const replacements = /* @__PURE__ */ new Set(["tailwindcss", "tailwindcss$"]);
|
|
2070
|
+
const resolveTailwindcssCss = (request, parent, isMain, options) => {
|
|
2071
|
+
if (replacements.has(request)) return target;
|
|
2072
|
+
if (request.startsWith("tailwindcss/")) return node_path.default.join(pkgDir, request.slice(12));
|
|
2073
|
+
return original(request, parent, isMain, options);
|
|
2074
|
+
};
|
|
2075
|
+
moduleWithMutableResolve._resolveFilename = resolveTailwindcssCss;
|
|
2076
|
+
patched.add(moduleWithMutableResolve._resolveFilename);
|
|
2077
|
+
}
|
|
2078
|
+
//#endregion
|
|
2079
|
+
//#region src/shared/mpx.ts
|
|
2080
|
+
const localRequire = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href);
|
|
2081
|
+
const MPX_STYLE_RESOURCE_QUERY_RE = /(?:^|[?&])type=styles(?:&|$)/;
|
|
2082
|
+
const MPX_WEBPACK_PLUGIN_PACKAGE_RE = /@mpxjs[\\/]webpack-plugin[\\/]package\.json$/;
|
|
2083
|
+
function isMpxStyleResourceQuery(query) {
|
|
2084
|
+
if (typeof query !== "string") return false;
|
|
2085
|
+
return MPX_STYLE_RESOURCE_QUERY_RE.test(query);
|
|
2086
|
+
}
|
|
2087
|
+
function getTailwindcssCssEntry(pkgDir) {
|
|
2088
|
+
return node_path.default.join(pkgDir, "index.css");
|
|
2089
|
+
}
|
|
2090
|
+
function resolveMpxWebpackPluginDir(compiler) {
|
|
2091
|
+
const candidates = [
|
|
2092
|
+
compiler?.context,
|
|
2093
|
+
compiler?.options?.context,
|
|
2094
|
+
node_process.default.cwd()
|
|
2095
|
+
].filter((item) => typeof item === "string" && item.length > 0);
|
|
2096
|
+
for (const candidate of candidates) try {
|
|
2097
|
+
const projectRequire = (0, node_module.createRequire)(node_path.default.join(candidate, "package.json"));
|
|
2098
|
+
return node_path.default.dirname(projectRequire.resolve("@mpxjs/webpack-plugin/package.json"));
|
|
2099
|
+
} catch {}
|
|
2100
|
+
const cachedPackageJson = Object.keys(localRequire.cache).find((file) => MPX_WEBPACK_PLUGIN_PACKAGE_RE.test(file));
|
|
2101
|
+
if (cachedPackageJson) return node_path.default.dirname(cachedPackageJson);
|
|
2102
|
+
try {
|
|
2103
|
+
return node_path.default.dirname(localRequire.resolve("@mpxjs/webpack-plugin/package.json"));
|
|
2104
|
+
} catch {
|
|
2105
|
+
return;
|
|
2106
|
+
}
|
|
2107
|
+
}
|
|
2108
|
+
function isMpxWebpackPluginRequest(request) {
|
|
2109
|
+
return request === "@mpxjs/webpack-plugin" || Boolean(request?.startsWith("@mpxjs/webpack-plugin/"));
|
|
2110
|
+
}
|
|
2111
|
+
function resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir) {
|
|
2112
|
+
if (request === "@mpxjs/webpack-plugin") return mpxWebpackPluginDir;
|
|
2113
|
+
return node_path.default.join(mpxWebpackPluginDir, request.slice(22));
|
|
2114
|
+
}
|
|
2115
|
+
function addMpxWebpackPluginAlias(alias, pkgDir) {
|
|
2116
|
+
const recordLoader = node_path.default.join(pkgDir, "lib/record-loader");
|
|
2117
|
+
const styleCompiler = node_path.default.join(pkgDir, "lib/style-compiler/index");
|
|
2118
|
+
const stripConditionalLoader = node_path.default.join(pkgDir, "lib/style-compiler/strip-conditional-loader");
|
|
2119
|
+
if (Array.isArray(alias)) alias.push({
|
|
2120
|
+
name: "@mpxjs/webpack-plugin/lib/record-loader",
|
|
2121
|
+
alias: recordLoader
|
|
2122
|
+
}, {
|
|
2123
|
+
name: "@mpxjs/webpack-plugin/lib/style-compiler/index",
|
|
2124
|
+
alias: styleCompiler
|
|
2125
|
+
}, {
|
|
2126
|
+
name: "@mpxjs/webpack-plugin/lib/style-compiler/strip-conditional-loader",
|
|
2127
|
+
alias: stripConditionalLoader
|
|
2128
|
+
}, {
|
|
2129
|
+
name: /^@mpxjs\/webpack-plugin\//,
|
|
2130
|
+
alias: pkgDir
|
|
2131
|
+
});
|
|
2132
|
+
else {
|
|
2133
|
+
alias["@mpxjs/webpack-plugin"] = pkgDir;
|
|
2134
|
+
alias["@mpxjs/webpack-plugin$"] = pkgDir;
|
|
2135
|
+
alias["@mpxjs/webpack-plugin/lib/record-loader"] = recordLoader;
|
|
2136
|
+
alias["@mpxjs/webpack-plugin/lib/style-compiler/index"] = styleCompiler;
|
|
2137
|
+
alias["@mpxjs/webpack-plugin/lib/style-compiler/strip-conditional-loader"] = stripConditionalLoader;
|
|
2138
|
+
}
|
|
2139
|
+
}
|
|
2140
|
+
function ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir) {
|
|
2141
|
+
compiler.options.resolveLoader = compiler.options.resolveLoader || {};
|
|
2142
|
+
const alias = compiler.options.resolveLoader.alias ?? {};
|
|
2143
|
+
compiler.options.resolveLoader.alias = alias;
|
|
2144
|
+
addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
|
|
2145
|
+
}
|
|
2146
|
+
function resolveMpxWebpackPluginRequire(compiler) {
|
|
2147
|
+
const candidates = [
|
|
2148
|
+
compiler?.context,
|
|
2149
|
+
compiler?.options?.context,
|
|
2150
|
+
node_process.default.cwd()
|
|
2151
|
+
].filter((item) => typeof item === "string" && item.length > 0);
|
|
2152
|
+
for (const candidate of candidates) try {
|
|
2153
|
+
const projectRequire = (0, node_module.createRequire)(node_path.default.join(candidate, "package.json"));
|
|
2154
|
+
projectRequire.resolve("@mpxjs/webpack-plugin/package.json");
|
|
2155
|
+
return projectRequire;
|
|
2156
|
+
} catch {}
|
|
2157
|
+
const cachedPackageJson = Object.keys(localRequire.cache).find((file) => MPX_WEBPACK_PLUGIN_PACKAGE_RE.test(file));
|
|
2158
|
+
if (cachedPackageJson) return (0, node_module.createRequire)(cachedPackageJson);
|
|
2159
|
+
return localRequire;
|
|
2160
|
+
}
|
|
2161
|
+
function patchMpxWebpackPluginNormalizeLib(compiler, mpxWebpackPluginDir) {
|
|
2162
|
+
if (!mpxWebpackPluginDir) return false;
|
|
2163
|
+
const projectRequire = resolveMpxWebpackPluginRequire(compiler);
|
|
2164
|
+
let normalize;
|
|
2165
|
+
try {
|
|
2166
|
+
normalize = projectRequire("@mpxjs/webpack-plugin/lib/utils/normalize");
|
|
2167
|
+
} catch {
|
|
2168
|
+
return false;
|
|
2169
|
+
}
|
|
2170
|
+
if (typeof normalize.lib !== "function") return false;
|
|
2171
|
+
if (normalize.lib.__weappTwPatched) return true;
|
|
2172
|
+
const wrappedLib = (file) => node_path.default.join(mpxWebpackPluginDir, "lib", file);
|
|
2173
|
+
wrappedLib.__weappTwPatched = true;
|
|
2174
|
+
wrappedLib.__weappTwOriginal = normalize.lib;
|
|
2175
|
+
normalize.lib = wrappedLib;
|
|
2176
|
+
return true;
|
|
2177
|
+
}
|
|
2178
|
+
function ensureMpxTailwindcssAliases(compiler, pkgDir) {
|
|
2179
|
+
const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
|
|
2180
|
+
compiler.options = compiler.options || {};
|
|
2181
|
+
compiler.options.resolve = compiler.options.resolve || {};
|
|
2182
|
+
const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(compiler);
|
|
2183
|
+
patchMpxWebpackPluginNormalizeLib(compiler, mpxWebpackPluginDir);
|
|
2184
|
+
if (mpxWebpackPluginDir) ensureResolveLoaderAlias(compiler, mpxWebpackPluginDir);
|
|
2185
|
+
const alias = compiler.options.resolve.alias ?? {};
|
|
2186
|
+
compiler.options.resolve.alias = alias;
|
|
2187
|
+
if (Array.isArray(alias)) alias.push({
|
|
2188
|
+
name: "tailwindcss",
|
|
2189
|
+
alias: tailwindcssCssEntry
|
|
2190
|
+
}, {
|
|
2191
|
+
name: "tailwindcss$",
|
|
2192
|
+
alias: tailwindcssCssEntry
|
|
2193
|
+
});
|
|
2194
|
+
else {
|
|
2195
|
+
alias.tailwindcss = tailwindcssCssEntry;
|
|
2196
|
+
alias.tailwindcss$ = tailwindcssCssEntry;
|
|
2197
|
+
}
|
|
2198
|
+
if (mpxWebpackPluginDir) addMpxWebpackPluginAlias(alias, mpxWebpackPluginDir);
|
|
2199
|
+
return tailwindcssCssEntry;
|
|
2200
|
+
}
|
|
2201
|
+
function patchMpxLoaderResolve(loaderContext, pkgDir, enabled) {
|
|
2202
|
+
if (!enabled || typeof loaderContext.resolve !== "function") return;
|
|
2203
|
+
const originalResolve = loaderContext.resolve;
|
|
2204
|
+
if (originalResolve.__weappTwPatched) return;
|
|
2205
|
+
const tailwindcssCssEntry = getTailwindcssCssEntry(pkgDir);
|
|
2206
|
+
const mpxWebpackPluginDir = resolveMpxWebpackPluginDir(loaderContext);
|
|
2207
|
+
const wrappedResolve = function(context, request, callback) {
|
|
2208
|
+
if (request === "tailwindcss" || request === "tailwindcss$") return callback(null, tailwindcssCssEntry);
|
|
2209
|
+
if (request?.startsWith("tailwindcss/")) return callback(null, node_path.default.join(pkgDir, request.slice(12)));
|
|
2210
|
+
if (mpxWebpackPluginDir && isMpxWebpackPluginRequest(request)) return callback(null, resolveMpxWebpackPluginRequest(request, mpxWebpackPluginDir));
|
|
2211
|
+
return originalResolve.call(this, context, request, callback);
|
|
2212
|
+
};
|
|
2213
|
+
wrappedResolve.__weappTwPatched = true;
|
|
2214
|
+
loaderContext.resolve = wrappedResolve;
|
|
2215
|
+
}
|
|
2216
|
+
function setupMpxTailwindcssRedirect(pkgDir, enabled) {
|
|
2217
|
+
if (enabled) installTailwindcssCssRedirect(pkgDir);
|
|
2218
|
+
}
|
|
2219
|
+
const CSS_EXT_RE = /\.css$/i;
|
|
2220
|
+
function injectMpxCssRewritePreRules(compiler, loader, loaderOptions) {
|
|
2221
|
+
var _compiler$options;
|
|
2222
|
+
if (!loader) return;
|
|
2223
|
+
const moduleOptions = (_compiler$options = compiler.options).module ?? (_compiler$options.module = { rules: [] });
|
|
2224
|
+
moduleOptions.rules = moduleOptions.rules || [];
|
|
2225
|
+
const createRule = (match) => ({
|
|
2226
|
+
...match,
|
|
2227
|
+
enforce: "pre",
|
|
2228
|
+
use: [{
|
|
2229
|
+
loader,
|
|
2230
|
+
options: loaderOptions
|
|
2231
|
+
}]
|
|
2232
|
+
});
|
|
2233
|
+
moduleOptions.rules.unshift(createRule({ resourceQuery: (query) => isMpxStyleResourceQuery(query) }), createRule({
|
|
2234
|
+
test: CSS_EXT_RE,
|
|
2235
|
+
resourceQuery: (query) => !isMpxStyleResourceQuery(query)
|
|
2236
|
+
}));
|
|
2237
|
+
}
|
|
2238
|
+
//#endregion
|
|
2007
2239
|
//#region src/bundlers/webpack/loaders/runtime-registry.ts
|
|
2008
2240
|
const runtimeRegistryHolder = globalThis;
|
|
2009
2241
|
const runtimeRegistry = runtimeRegistryHolder.__WEAPP_TW_WEBPACK_LOADER_RUNTIME_REGISTRY__ ?? (runtimeRegistryHolder.__WEAPP_TW_WEBPACK_LOADER_RUNTIME_REGISTRY__ = /* @__PURE__ */ new Map());
|
|
@@ -2030,11 +2262,13 @@ function createPrioritizedFinder(targets) {
|
|
|
2030
2262
|
return -1;
|
|
2031
2263
|
};
|
|
2032
2264
|
}
|
|
2033
|
-
function
|
|
2034
|
-
|
|
2265
|
+
function createMpxLoaderAnchorFinders() {
|
|
2266
|
+
return {
|
|
2035
2267
|
findRewriteAnchor: createPrioritizedFinder(MPX_REWRITE_PRECEDENCE_LOADERS),
|
|
2036
2268
|
findClassSetAnchor: createFinder([MPX_STYLE_COMPILER_LOADER])
|
|
2037
2269
|
};
|
|
2270
|
+
}
|
|
2271
|
+
function createDefaultLoaderAnchorFinders() {
|
|
2038
2272
|
const fallbackFinder = createFinder(["postcss-loader"]);
|
|
2039
2273
|
return {
|
|
2040
2274
|
findRewriteAnchor: fallbackFinder,
|
|
@@ -2044,8 +2278,7 @@ function createLoaderAnchorFinders(appType) {
|
|
|
2044
2278
|
//#endregion
|
|
2045
2279
|
//#region src/bundlers/webpack/BaseUnifiedPlugin/v5-loaders.ts
|
|
2046
2280
|
function setupWebpackV5Loaders(options) {
|
|
2047
|
-
const { compiler, options: compilerOptions, appType, weappTailwindcssPackageDir, shouldRewriteCssImports, runtimeLoaderPath, registerAutoCssSource, runtimeState, getClassSetInLoader, getRuntimeSetInLoader, markWebpackProcessedCssSource, markWebpackCssSourceModule, registerWebpackGeneratedCss, registerWebpackCssSourceFile, getRuntimeWatchDependencies, runtimeRegistryKey = `weapp-tailwindcss-${Date.now()}-${Math.random().toString(36).slice(2)}`, debug } = options;
|
|
2048
|
-
const isMpxApp = isMpx(appType);
|
|
2281
|
+
const { compiler, options: compilerOptions, appType, weappTailwindcssPackageDir, shouldRewriteCssImports, runtimeLoaderPath, registerAutoCssSource, runtimeState, getClassSetInLoader, getRuntimeSetInLoader, markWebpackProcessedCssSource, markWebpackCssSourceModule, registerWebpackGeneratedCss, registerWebpackCssSourceFile, getRuntimeWatchDependencies, loaderAnchorFinders = createDefaultLoaderAnchorFinders(), mpxCssImportRewrite = false, runtimeRegistryKey = `weapp-tailwindcss-${Date.now()}-${Math.random().toString(36).slice(2)}`, debug } = options;
|
|
2049
2282
|
const generatorTarget = compilerOptions.generator?.target ?? require_v4_engine.inferGeneratorTargetFromEnv();
|
|
2050
2283
|
const generatorBranch = require_generator.resolveRuntimeBranch({
|
|
2051
2284
|
appType: compilerOptions.appType,
|
|
@@ -2054,7 +2287,7 @@ function setupWebpackV5Loaders(options) {
|
|
|
2054
2287
|
tailwindcssMajorVersion: runtimeState.tailwindRuntime.majorVersion,
|
|
2055
2288
|
uniAppX: compilerOptions.uniAppX
|
|
2056
2289
|
});
|
|
2057
|
-
if (shouldRewriteCssImports &&
|
|
2290
|
+
if (shouldRewriteCssImports && mpxCssImportRewrite) ensureMpxTailwindcssAliases(compiler, weappTailwindcssPackageDir);
|
|
2058
2291
|
const runtimeClassSetLoader = runtimeLoaderPath ?? node_path.default.resolve(__dirname, "./weapp-tw-runtime-classset-loader.js");
|
|
2059
2292
|
const shouldInjectRuntimeClassSetLoader = !generatorBranch.isWeb;
|
|
2060
2293
|
const shouldInjectCssImportRewriteLoader = shouldRewriteCssImports || !generatorBranch.isWeb || runtimeState.tailwindRuntime.majorVersion === 4;
|
|
@@ -2085,9 +2318,9 @@ function setupWebpackV5Loaders(options) {
|
|
|
2085
2318
|
};
|
|
2086
2319
|
compiler.hooks.watchClose?.tap?.(require_context.pluginName, cleanupWebpackLoaderRuntime);
|
|
2087
2320
|
compiler.hooks.shutdown?.tap?.(require_context.pluginName, cleanupWebpackLoaderRuntime);
|
|
2088
|
-
const { findRewriteAnchor, findClassSetAnchor } =
|
|
2321
|
+
const { findRewriteAnchor, findClassSetAnchor } = loaderAnchorFinders;
|
|
2089
2322
|
const cssImportRewriteLoaderOptions = runtimeLoaderRewriteOptions ? { tailwindcssImportRewriteRuntimeKey: runtimeRegistryKey } : void 0;
|
|
2090
|
-
if (runtimeCssImportRewriteLoader && shouldRewriteCssImports && cssImportRewriteLoaderOptions &&
|
|
2323
|
+
if (runtimeCssImportRewriteLoader && shouldRewriteCssImports && cssImportRewriteLoaderOptions && mpxCssImportRewrite) injectMpxCssRewritePreRules(compiler, runtimeCssImportRewriteLoader, cssImportRewriteLoaderOptions);
|
|
2091
2324
|
const createRuntimeClassSetLoaderEntry = () => ({
|
|
2092
2325
|
loader: runtimeClassSetLoader,
|
|
2093
2326
|
options: { weappTailwindcssRuntimeKey: runtimeRegistryKey },
|
|
@@ -2107,7 +2340,7 @@ function setupWebpackV5Loaders(options) {
|
|
|
2107
2340
|
compiler.hooks.compilation.tap(require_context.pluginName, (compilation) => {
|
|
2108
2341
|
NormalModule.getCompilationHooks(compilation).loader.tap(require_context.pluginName, (_loaderContext, module) => {
|
|
2109
2342
|
if (!(runtimeClassSetLoaderExists || runtimeCssImportRewriteLoaderExists)) return;
|
|
2110
|
-
patchMpxLoaderResolve(_loaderContext, weappTailwindcssPackageDir, shouldRewriteCssImports &&
|
|
2343
|
+
patchMpxLoaderResolve(_loaderContext, weappTailwindcssPackageDir, shouldRewriteCssImports && mpxCssImportRewrite);
|
|
2111
2344
|
const loaderEntries = module.loaders || [];
|
|
2112
2345
|
let rewriteAnchorIdx = findRewriteAnchor(loaderEntries);
|
|
2113
2346
|
const classSetAnchorIdx = findClassSetAnchor(loaderEntries);
|
|
@@ -2153,10 +2386,13 @@ function setupWebpackV5Loaders(options) {
|
|
|
2153
2386
|
});
|
|
2154
2387
|
}
|
|
2155
2388
|
//#endregion
|
|
2156
|
-
//#region src/bundlers/webpack/
|
|
2389
|
+
//#region src/bundlers/webpack/shared/create-framework-plugin.ts
|
|
2157
2390
|
const debug = require_context.createDebug();
|
|
2158
2391
|
const weappTailwindcssPackageDir = require_source_candidate_scan_signature.resolvePackageDir("weapp-tailwindcss");
|
|
2159
2392
|
const outputIgnoredPredicatePath = Symbol("weapp-tailwindcss.outputIgnoredPredicatePath");
|
|
2393
|
+
function shouldKeepPreviousWebpackCssSource(previous, next) {
|
|
2394
|
+
return next.processed === true && previous.processed === false;
|
|
2395
|
+
}
|
|
2160
2396
|
function normalizeIgnoredList(ignored) {
|
|
2161
2397
|
return (Array.isArray(ignored) ? [...ignored] : [ignored]).filter((item) => typeof item === "string" || item instanceof RegExp || typeof item === "function");
|
|
2162
2398
|
}
|
|
@@ -2216,32 +2452,40 @@ function setupWebpackWatchOutputIgnore(compiler) {
|
|
|
2216
2452
|
}
|
|
2217
2453
|
});
|
|
2218
2454
|
}
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
var WeappTailwindcss = class {
|
|
2225
|
-
constructor(options = {}) {
|
|
2455
|
+
function isInternalUserDefinedOptions(options) {
|
|
2456
|
+
return typeof options.onLoad === "function" && typeof options.mainCssChunkMatcher === "function" && typeof options.tailwindRuntime === "object" && typeof options.refreshTailwindcssRuntime === "function";
|
|
2457
|
+
}
|
|
2458
|
+
var WebpackFrameworkPlugin = class {
|
|
2459
|
+
constructor(options = {}, frameworkBranch) {
|
|
2226
2460
|
require_context._defineProperty(this, "options", void 0);
|
|
2227
2461
|
require_context._defineProperty(this, "appType", void 0);
|
|
2228
2462
|
require_context._defineProperty(this, "hasInitialTailwindCssRoots", void 0);
|
|
2463
|
+
require_context._defineProperty(this, "frameworkBranch", void 0);
|
|
2464
|
+
this.frameworkBranch = frameworkBranch;
|
|
2229
2465
|
this.hasInitialTailwindCssRoots = require_v4_engine.hasConfiguredTailwindV4CssRoots(options);
|
|
2230
|
-
this.options = require_context.getCompilerContext({
|
|
2466
|
+
this.options = isInternalUserDefinedOptions(options) ? options : require_context.getCompilerContext({
|
|
2231
2467
|
...options,
|
|
2232
2468
|
__internalDeferMissingCssEntriesWarning: true
|
|
2233
2469
|
});
|
|
2234
2470
|
this.appType = this.options.appType;
|
|
2235
2471
|
}
|
|
2236
2472
|
apply(compiler) {
|
|
2473
|
+
debug("apply webpack framework plugin framework=%s", this.frameworkBranch.frameworkName);
|
|
2237
2474
|
compiler.options = compiler.options || {};
|
|
2238
2475
|
const { disabled, onLoad, runtimeLoaderPath, tailwindRuntime, refreshTailwindcssRuntime, styleInjector } = this.options;
|
|
2239
2476
|
const initialTailwindRuntime = tailwindRuntime;
|
|
2240
2477
|
const refreshTailwindRuntime = refreshTailwindcssRuntime;
|
|
2241
2478
|
const disabledOptions = require_source_candidate_scan_signature.resolvePluginDisabledState(disabled);
|
|
2242
2479
|
const shouldRewriteCssImports = this.options.rewriteCssImports === true;
|
|
2243
|
-
const
|
|
2244
|
-
|
|
2480
|
+
const frameworkProfile = require_source_candidate_scan_signature.resolveWebpackFrameworkProfile({
|
|
2481
|
+
appType: this.appType,
|
|
2482
|
+
detectEnv: true,
|
|
2483
|
+
env: node_process.default.env,
|
|
2484
|
+
root: compiler.options.context ?? compiler.context,
|
|
2485
|
+
uniAppX: this.options.uniAppX
|
|
2486
|
+
});
|
|
2487
|
+
this.appType = frameworkProfile.appType ?? this.appType;
|
|
2488
|
+
if (shouldRewriteCssImports) this.frameworkBranch.setupCssImportRewriteRedirect?.(weappTailwindcssPackageDir);
|
|
2245
2489
|
if (disabledOptions.plugin) return;
|
|
2246
2490
|
if (initialTailwindRuntime.majorVersion !== 4) throw new Error("weapp-tailwindcss/webpack 新生成管线仅支持 Tailwind CSS v4,请升级 tailwindcss 或停留在旧版 weapp-tailwindcss。");
|
|
2247
2491
|
setupWebpackWatchOutputIgnore(compiler);
|
|
@@ -2334,14 +2578,15 @@ var WeappTailwindcss = class {
|
|
|
2334
2578
|
const registerWebpackCssSourceFile = (source) => {
|
|
2335
2579
|
const file = node_path.default.resolve(source.file);
|
|
2336
2580
|
const previous = webpackCssSources.get(file);
|
|
2337
|
-
|
|
2581
|
+
const next = {
|
|
2582
|
+
css: typeof source.css === "string" ? require_v4_engine.normalizeTailwindConfigDirectives(source.css, node_path.default.dirname(file)) : source.css,
|
|
2583
|
+
processed: source.processed
|
|
2584
|
+
};
|
|
2585
|
+
if (previous && shouldKeepPreviousWebpackCssSource(previous, next)) {
|
|
2338
2586
|
currentWebpackCssSourceFiles.add(file);
|
|
2339
2587
|
return;
|
|
2340
2588
|
}
|
|
2341
|
-
webpackCssSources.set(file,
|
|
2342
|
-
css: typeof source.css === "string" ? require_v4_engine.normalizeTailwindConfigDirectives(source.css, node_path.default.dirname(file)) : source.css,
|
|
2343
|
-
processed: source.processed
|
|
2344
|
-
});
|
|
2589
|
+
webpackCssSources.set(file, next);
|
|
2345
2590
|
currentWebpackCssSourceFiles.add(file);
|
|
2346
2591
|
};
|
|
2347
2592
|
const registerWebpackGeneratedCss = (source) => {
|
|
@@ -2435,6 +2680,8 @@ var WeappTailwindcss = class {
|
|
|
2435
2680
|
contexts: runtimeWatchDependencyContexts
|
|
2436
2681
|
};
|
|
2437
2682
|
},
|
|
2683
|
+
loaderAnchorFinders: this.frameworkBranch.loaderAnchorFinders,
|
|
2684
|
+
mpxCssImportRewrite: this.frameworkBranch.mpxCssImportRewrite,
|
|
2438
2685
|
debug
|
|
2439
2686
|
});
|
|
2440
2687
|
setupWebpackV5ProcessAssetsHook({
|
|
@@ -2462,7 +2709,105 @@ var WeappTailwindcss = class {
|
|
|
2462
2709
|
prepareWebpackCssSources,
|
|
2463
2710
|
debug
|
|
2464
2711
|
});
|
|
2465
|
-
require_source_candidate_scan_signature.createBuiltinWebpackStyleInjectorPlugin(styleInjector, this.
|
|
2712
|
+
require_source_candidate_scan_signature.createBuiltinWebpackStyleInjectorPlugin(styleInjector, this.frameworkBranch.styleInjectorDelegate)?.apply(compiler);
|
|
2713
|
+
}
|
|
2714
|
+
};
|
|
2715
|
+
//#endregion
|
|
2716
|
+
//#region src/bundlers/webpack/frameworks/generic/index.ts
|
|
2717
|
+
var GenericWebpackPlugin = class extends WebpackFrameworkPlugin {
|
|
2718
|
+
constructor(options = {}) {
|
|
2719
|
+
super(options, {
|
|
2720
|
+
frameworkName: "generic",
|
|
2721
|
+
loaderAnchorFinders: createDefaultLoaderAnchorFinders(),
|
|
2722
|
+
styleInjectorDelegate: require_source_candidate_scan_signature.webpackStyleInjectorDelegates.generic
|
|
2723
|
+
});
|
|
2724
|
+
}
|
|
2725
|
+
};
|
|
2726
|
+
//#endregion
|
|
2727
|
+
//#region src/bundlers/webpack/frameworks/mpx/index.ts
|
|
2728
|
+
var MpxWebpackPlugin = class extends WebpackFrameworkPlugin {
|
|
2729
|
+
constructor(options = {}) {
|
|
2730
|
+
super(options, {
|
|
2731
|
+
frameworkName: "mpx",
|
|
2732
|
+
loaderAnchorFinders: createMpxLoaderAnchorFinders(),
|
|
2733
|
+
mpxCssImportRewrite: true,
|
|
2734
|
+
setupCssImportRewriteRedirect: (packageDir) => setupMpxTailwindcssRedirect(packageDir, true),
|
|
2735
|
+
styleInjectorDelegate: require_source_candidate_scan_signature.webpackStyleInjectorDelegates.mpx
|
|
2736
|
+
});
|
|
2737
|
+
}
|
|
2738
|
+
};
|
|
2739
|
+
//#endregion
|
|
2740
|
+
//#region src/bundlers/webpack/frameworks/taro/index.ts
|
|
2741
|
+
var TaroWebpackPlugin = class extends WebpackFrameworkPlugin {
|
|
2742
|
+
constructor(options = {}) {
|
|
2743
|
+
super(options, {
|
|
2744
|
+
frameworkName: "taro",
|
|
2745
|
+
loaderAnchorFinders: createDefaultLoaderAnchorFinders(),
|
|
2746
|
+
styleInjectorDelegate: require_source_candidate_scan_signature.webpackStyleInjectorDelegates.taro
|
|
2747
|
+
});
|
|
2748
|
+
}
|
|
2749
|
+
};
|
|
2750
|
+
//#endregion
|
|
2751
|
+
//#region src/bundlers/webpack/frameworks/uni-app/index.ts
|
|
2752
|
+
var UniAppWebpackPlugin = class extends WebpackFrameworkPlugin {
|
|
2753
|
+
constructor(options = {}) {
|
|
2754
|
+
super(options, {
|
|
2755
|
+
frameworkName: "uni-app",
|
|
2756
|
+
loaderAnchorFinders: createDefaultLoaderAnchorFinders(),
|
|
2757
|
+
styleInjectorDelegate: require_source_candidate_scan_signature.webpackStyleInjectorDelegates.uniApp
|
|
2758
|
+
});
|
|
2759
|
+
}
|
|
2760
|
+
};
|
|
2761
|
+
//#endregion
|
|
2762
|
+
//#region src/bundlers/webpack/frameworks/weapp-vite/index.ts
|
|
2763
|
+
var WeappViteWebpackPlugin = class extends WebpackFrameworkPlugin {
|
|
2764
|
+
constructor(options = {}) {
|
|
2765
|
+
super(options, {
|
|
2766
|
+
frameworkName: "weapp-vite",
|
|
2767
|
+
loaderAnchorFinders: createDefaultLoaderAnchorFinders(),
|
|
2768
|
+
styleInjectorDelegate: require_source_candidate_scan_signature.webpackStyleInjectorDelegates.generic
|
|
2769
|
+
});
|
|
2770
|
+
}
|
|
2771
|
+
};
|
|
2772
|
+
//#endregion
|
|
2773
|
+
//#region src/bundlers/webpack/frameworks/index.ts
|
|
2774
|
+
function createWebpackFrameworkPlugin(frameworkName, options = {}) {
|
|
2775
|
+
switch (frameworkName) {
|
|
2776
|
+
case "mpx": return new MpxWebpackPlugin(options);
|
|
2777
|
+
case "taro": return new TaroWebpackPlugin(options);
|
|
2778
|
+
case "uni-app": return new UniAppWebpackPlugin(options);
|
|
2779
|
+
case "generic": return new GenericWebpackPlugin(options);
|
|
2780
|
+
default: return new WeappViteWebpackPlugin(options);
|
|
2781
|
+
}
|
|
2782
|
+
}
|
|
2783
|
+
//#endregion
|
|
2784
|
+
//#region src/bundlers/webpack/BaseUnifiedPlugin/v5.ts
|
|
2785
|
+
/**
|
|
2786
|
+
* @name WeappTailwindcss
|
|
2787
|
+
* @description Webpack 入口只负责早期识别框架分支,具体 hook 由 framework 目录下的插件拥有。
|
|
2788
|
+
* @link https://tw.icebreaker.top/docs/intro
|
|
2789
|
+
*/
|
|
2790
|
+
var WeappTailwindcss = class {
|
|
2791
|
+
constructor(options = {}) {
|
|
2792
|
+
require_context._defineProperty(this, "options", void 0);
|
|
2793
|
+
require_context._defineProperty(this, "appType", void 0);
|
|
2794
|
+
this.options = require_context.getCompilerContext({
|
|
2795
|
+
...options,
|
|
2796
|
+
__internalDeferMissingCssEntriesWarning: true
|
|
2797
|
+
});
|
|
2798
|
+
this.appType = this.options.appType;
|
|
2799
|
+
}
|
|
2800
|
+
apply(compiler) {
|
|
2801
|
+
const plugin = createWebpackFrameworkPlugin(require_source_candidate_scan_signature.resolveWebpackFrameworkProfile({
|
|
2802
|
+
appType: this.appType,
|
|
2803
|
+
detectEnv: true,
|
|
2804
|
+
env: node_process.default.env,
|
|
2805
|
+
root: compiler.options?.context ?? compiler.context,
|
|
2806
|
+
uniAppX: this.options.uniAppX
|
|
2807
|
+
}).frameworkName, this.options);
|
|
2808
|
+
plugin.apply(compiler);
|
|
2809
|
+
this.options = plugin.options;
|
|
2810
|
+
this.appType = plugin.appType;
|
|
2466
2811
|
}
|
|
2467
2812
|
};
|
|
2468
2813
|
//#endregion
|