@meng-xi/vite-plugin 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-en.md +264 -533
- package/README.md +253 -522
- package/dist/common/format/index.cjs +1 -0
- package/dist/common/format/index.d.cts +156 -0
- package/dist/common/format/index.d.mts +156 -0
- package/dist/common/format/index.d.ts +156 -0
- package/dist/common/format/index.mjs +1 -0
- package/dist/common/fs/index.cjs +1 -0
- package/dist/common/fs/index.d.cts +150 -0
- package/dist/common/fs/index.d.mts +150 -0
- package/dist/common/fs/index.d.ts +150 -0
- package/dist/common/fs/index.mjs +1 -0
- package/dist/common/html/index.cjs +2 -0
- package/dist/common/html/index.d.cts +109 -0
- package/dist/common/html/index.d.mts +109 -0
- package/dist/common/html/index.d.ts +109 -0
- package/dist/common/html/index.mjs +2 -0
- package/dist/common/index.cjs +1 -1
- package/dist/common/index.d.cts +7 -417
- package/dist/common/index.d.mts +7 -417
- package/dist/common/index.d.ts +7 -417
- package/dist/common/index.mjs +1 -1
- package/dist/common/object/index.cjs +1 -0
- package/dist/common/object/index.d.cts +30 -0
- package/dist/common/object/index.d.mts +30 -0
- package/dist/common/object/index.d.ts +30 -0
- package/dist/common/object/index.mjs +1 -0
- package/dist/common/script/index.cjs +1 -0
- package/dist/common/script/index.d.cts +54 -0
- package/dist/common/script/index.d.mts +54 -0
- package/dist/common/script/index.d.ts +54 -0
- package/dist/common/script/index.mjs +1 -0
- package/dist/common/validation/index.cjs +1 -0
- package/dist/common/validation/index.d.cts +93 -0
- package/dist/common/validation/index.d.mts +93 -0
- package/dist/common/validation/index.d.ts +93 -0
- package/dist/common/validation/index.mjs +1 -0
- package/dist/factory/index.cjs +1 -1
- package/dist/factory/index.d.cts +1 -1
- package/dist/factory/index.d.mts +1 -1
- package/dist/factory/index.d.ts +1 -1
- package/dist/factory/index.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +16 -3
- package/dist/index.d.mts +16 -3
- package/dist/index.d.ts +16 -3
- package/dist/index.mjs +1 -1
- package/dist/plugins/buildProgress/index.cjs +2 -0
- package/dist/plugins/buildProgress/index.d.cts +187 -0
- package/dist/plugins/buildProgress/index.d.mts +187 -0
- package/dist/plugins/buildProgress/index.d.ts +187 -0
- package/dist/plugins/buildProgress/index.mjs +2 -0
- package/dist/plugins/compressAssets/index.cjs +1 -0
- package/dist/plugins/compressAssets/index.d.cts +132 -0
- package/dist/plugins/compressAssets/index.d.mts +132 -0
- package/dist/plugins/compressAssets/index.d.ts +132 -0
- package/dist/plugins/compressAssets/index.mjs +1 -0
- package/dist/plugins/copyFile/index.cjs +1 -0
- package/dist/plugins/copyFile/index.d.cts +78 -0
- package/dist/plugins/copyFile/index.d.mts +78 -0
- package/dist/plugins/copyFile/index.d.ts +78 -0
- package/dist/plugins/copyFile/index.mjs +1 -0
- package/dist/plugins/faviconManager/index.cjs +1 -0
- package/dist/plugins/faviconManager/index.d.cts +143 -0
- package/dist/plugins/faviconManager/index.d.mts +143 -0
- package/dist/plugins/faviconManager/index.d.ts +143 -0
- package/dist/plugins/faviconManager/index.mjs +1 -0
- package/dist/plugins/generateRouter/index.cjs +35 -0
- package/dist/plugins/generateRouter/index.d.cts +215 -0
- package/dist/plugins/generateRouter/index.d.mts +215 -0
- package/dist/plugins/generateRouter/index.d.ts +215 -0
- package/dist/plugins/generateRouter/index.mjs +35 -0
- package/dist/plugins/generateVersion/index.cjs +1 -0
- package/dist/plugins/generateVersion/index.d.cts +184 -0
- package/dist/plugins/generateVersion/index.d.mts +184 -0
- package/dist/plugins/generateVersion/index.d.ts +184 -0
- package/dist/plugins/generateVersion/index.mjs +1 -0
- package/dist/plugins/htmlInject/index.cjs +7 -0
- package/dist/plugins/htmlInject/index.d.cts +278 -0
- package/dist/plugins/htmlInject/index.d.mts +278 -0
- package/dist/plugins/htmlInject/index.d.ts +278 -0
- package/dist/plugins/htmlInject/index.mjs +7 -0
- package/dist/plugins/index.cjs +1 -1
- package/dist/plugins/index.d.cts +11 -1714
- package/dist/plugins/index.d.mts +11 -1714
- package/dist/plugins/index.d.ts +11 -1714
- package/dist/plugins/index.mjs +1 -1
- package/dist/plugins/loadingManager/index.cjs +487 -0
- package/dist/plugins/loadingManager/index.d.cts +769 -0
- package/dist/plugins/loadingManager/index.d.mts +769 -0
- package/dist/plugins/loadingManager/index.d.ts +769 -0
- package/dist/plugins/loadingManager/index.mjs +487 -0
- package/dist/plugins/versionUpdateChecker/index.cjs +185 -0
- package/dist/plugins/versionUpdateChecker/index.d.cts +200 -0
- package/dist/plugins/versionUpdateChecker/index.d.mts +200 -0
- package/dist/plugins/versionUpdateChecker/index.d.ts +200 -0
- package/dist/plugins/versionUpdateChecker/index.mjs +185 -0
- package/dist/shared/vite-plugin.Bcg6RW2N.cjs +3 -0
- package/dist/shared/{vite-plugin.CiHfwMiN.d.ts → vite-plugin.DRRlWY8P.d.cts} +50 -0
- package/dist/shared/{vite-plugin.CiHfwMiN.d.cts → vite-plugin.DRRlWY8P.d.mts} +50 -0
- package/dist/shared/{vite-plugin.CiHfwMiN.d.mts → vite-plugin.DRRlWY8P.d.ts} +50 -0
- package/dist/shared/{vite-plugin.B88RyRN8.mjs → vite-plugin.DcExl6jd.mjs} +2 -2
- package/package.json +80 -3
- package/dist/shared/vite-plugin.CawoITTT.cjs +0 -1
- package/dist/shared/vite-plugin.D6Law9Ke.mjs +0 -706
- package/dist/shared/vite-plugin.D8L9KzuW.cjs +0 -706
- package/dist/shared/vite-plugin.DFjf9wFM.mjs +0 -2
- package/dist/shared/vite-plugin.DSb6XzBn.mjs +0 -1
- package/dist/shared/vite-plugin.IGZeStMa.cjs +0 -3
- package/dist/shared/vite-plugin.Tab4qcIM.cjs +0 -2
package/dist/plugins/index.d.cts
CHANGED
|
@@ -1,1716 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
export { BuildPhase, BuildProgressOptions, ProgressFormat, ProgressTheme, buildProgress } from './buildProgress/index.cjs';
|
|
2
|
+
export { CompressAlgorithm, CompressAssetsOptions, CompressStats, CompressSummary, compressAssets } from './compressAssets/index.cjs';
|
|
3
|
+
export { CopyFileOptions, copyFile } from './copyFile/index.cjs';
|
|
4
|
+
export { FaviconManagerOptions, Icon, faviconManager } from './faviconManager/index.cjs';
|
|
5
|
+
export { GenerateRouterOptions, NameStrategy, OutputFormat, RouteConfig, RouteMeta, UniAppPageConfig, UniAppPagesJson, UniAppTabBarConfig, generateRouter } from './generateRouter/index.cjs';
|
|
6
|
+
export { GenerateVersionOptions, OutputType, VersionFormat, VersionInfo, generateVersion } from './generateVersion/index.cjs';
|
|
7
|
+
export { ConditionType, HtmlInjectOptions, InjectCondition, InjectPosition, InjectRule, InjectionLogEntry, SecurityConfig, SelectorMatch, htmlInject } from './htmlInject/index.cjs';
|
|
8
|
+
export { AutoBindMode, AutoHideOn, DebounceHide, DelayShow, LoadingCallbacks, LoadingManager, LoadingManagerOptions, LoadingPosition, LoadingStyle, MinDisplayTime, RequestFilter, SpinnerType, TransitionConfig, loadingManager } from './loadingManager/index.cjs';
|
|
9
|
+
export { PromptStyle, VersionSource, VersionUpdateCheckerOptions, versionUpdateChecker } from './versionUpdateChecker/index.cjs';
|
|
10
|
+
import '../factory/index.cjs';
|
|
2
11
|
import 'vite';
|
|
3
12
|
import '../shared/vite-plugin.CLr0ttuO.cjs';
|
|
4
|
-
import '../shared/vite-plugin.
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* 进度条显示格式类型
|
|
8
|
-
*
|
|
9
|
-
* @description
|
|
10
|
-
* - 'bar': 完整进度条模式,显示旋转动画 + 阶段标签 + 进度条 + 百分比 + 模块名
|
|
11
|
-
* - 'spinner': 旋转动画模式,显示旋转动画 + 阶段标签 + 百分比
|
|
12
|
-
* - 'minimal': 精简模式,仅显示阶段标签 + 百分比
|
|
13
|
-
*/
|
|
14
|
-
type ProgressFormat = 'bar' | 'spinner' | 'minimal';
|
|
15
|
-
/**
|
|
16
|
-
* 构建进度插件的配置选项接口
|
|
17
|
-
*
|
|
18
|
-
* @interface BuildProgressOptions
|
|
19
|
-
*/
|
|
20
|
-
interface BuildProgressOptions extends BasePluginOptions {
|
|
21
|
-
/**
|
|
22
|
-
* 进度条宽度(字符数)
|
|
23
|
-
*
|
|
24
|
-
* @default 30
|
|
25
|
-
*/
|
|
26
|
-
width?: number;
|
|
27
|
-
/**
|
|
28
|
-
* 进度条显示格式
|
|
29
|
-
*
|
|
30
|
-
* @default 'bar'
|
|
31
|
-
*/
|
|
32
|
-
format?: ProgressFormat;
|
|
33
|
-
/**
|
|
34
|
-
* 已完成部分的填充字符
|
|
35
|
-
*
|
|
36
|
-
* @default '█'
|
|
37
|
-
* @example '█'、'■'、'='
|
|
38
|
-
*/
|
|
39
|
-
completeChar?: string;
|
|
40
|
-
/**
|
|
41
|
-
* 未完成部分的填充字符
|
|
42
|
-
*
|
|
43
|
-
* @default '░'
|
|
44
|
-
* @example '░'、'□'、'-'
|
|
45
|
-
*/
|
|
46
|
-
incompleteChar?: string;
|
|
47
|
-
/**
|
|
48
|
-
* 构建完成后是否清除进度条
|
|
49
|
-
*
|
|
50
|
-
* @default true
|
|
51
|
-
* @description 设为 false 时,构建完成后保留 100% 进度条在终端中
|
|
52
|
-
*/
|
|
53
|
-
clearOnComplete?: boolean;
|
|
54
|
-
/**
|
|
55
|
-
* 是否显示当前正在处理的模块名称
|
|
56
|
-
*
|
|
57
|
-
* @default true
|
|
58
|
-
* @description 仅在 transform 阶段显示,模块名超长时自动截断
|
|
59
|
-
*/
|
|
60
|
-
showModuleName?: boolean;
|
|
61
|
-
/**
|
|
62
|
-
* 自定义颜色主题
|
|
63
|
-
*
|
|
64
|
-
* @remarks
|
|
65
|
-
* 每个属性是一个接受字符串并返回带 ANSI 颜色码字符串的函数。
|
|
66
|
-
* 未提供的属性将使用默认主题。
|
|
67
|
-
*/
|
|
68
|
-
theme?: ProgressTheme;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* 进度条颜色主题接口
|
|
72
|
-
*
|
|
73
|
-
* @interface ProgressTheme
|
|
74
|
-
* @description 定义进度条各部分的颜色渲染函数,每个函数接受文本并返回带 ANSI 颜色码的字符串
|
|
75
|
-
*/
|
|
76
|
-
interface ProgressTheme {
|
|
77
|
-
/**
|
|
78
|
-
* 已完成部分的颜色渲染函数
|
|
79
|
-
*
|
|
80
|
-
* @param text - 需要着色的文本
|
|
81
|
-
* @returns 带 ANSI 颜色码的字符串
|
|
82
|
-
*/
|
|
83
|
-
completeColor: (text: string) => string;
|
|
84
|
-
/**
|
|
85
|
-
* 未完成部分的颜色渲染函数
|
|
86
|
-
*
|
|
87
|
-
* @param text - 需要着色的文本
|
|
88
|
-
* @returns 带 ANSI 颜色码的字符串
|
|
89
|
-
*/
|
|
90
|
-
incompleteColor: (text: string) => string;
|
|
91
|
-
/**
|
|
92
|
-
* 百分比数字的颜色渲染函数
|
|
93
|
-
*
|
|
94
|
-
* @param text - 需要着色的文本
|
|
95
|
-
* @returns 带 ANSI 颜色码的字符串
|
|
96
|
-
*/
|
|
97
|
-
percentageColor: (text: string) => string;
|
|
98
|
-
/**
|
|
99
|
-
* 阶段标签的颜色渲染函数
|
|
100
|
-
*
|
|
101
|
-
* @param text - 需要着色的文本
|
|
102
|
-
* @returns 带 ANSI 颜色码的字符串
|
|
103
|
-
*/
|
|
104
|
-
phaseColor: (text: string) => string;
|
|
105
|
-
/**
|
|
106
|
-
* 模块名称的颜色渲染函数
|
|
107
|
-
*
|
|
108
|
-
* @param text - 需要着色的文本
|
|
109
|
-
* @returns 带 ANSI 颜色码的字符串
|
|
110
|
-
*/
|
|
111
|
-
moduleColor: (text: string) => string;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* 构建阶段类型
|
|
115
|
-
*
|
|
116
|
-
* @description
|
|
117
|
-
* - 'idle': 空闲状态,插件尚未开始工作
|
|
118
|
-
* - 'config': 读取配置阶段
|
|
119
|
-
* - 'resolve': 解析模块依赖阶段
|
|
120
|
-
* - 'transform': 转换模块阶段
|
|
121
|
-
* - 'bundle': 打包阶段(仅生产构建)
|
|
122
|
-
* - 'write': 写入文件阶段
|
|
123
|
-
* - 'done': 构建完成
|
|
124
|
-
*/
|
|
125
|
-
type BuildPhase = 'idle' | 'config' | 'resolve' | 'transform' | 'bundle' | 'write' | 'done';
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* 构建进度条插件
|
|
129
|
-
*
|
|
130
|
-
* @param {BuildProgressOptions} options - 插件配置选项
|
|
131
|
-
* @returns {Plugin} 一个 Vite 插件实例
|
|
132
|
-
*
|
|
133
|
-
* @example
|
|
134
|
-
* ```typescript
|
|
135
|
-
* // 基本使用 - 默认进度条格式
|
|
136
|
-
* buildProgress()
|
|
137
|
-
*
|
|
138
|
-
* // 旋转动画格式
|
|
139
|
-
* buildProgress({
|
|
140
|
-
* format: 'spinner'
|
|
141
|
-
* })
|
|
142
|
-
*
|
|
143
|
-
* // 精简格式
|
|
144
|
-
* buildProgress({
|
|
145
|
-
* format: 'minimal'
|
|
146
|
-
* })
|
|
147
|
-
*
|
|
148
|
-
* // 自定义进度条外观
|
|
149
|
-
* buildProgress({
|
|
150
|
-
* width: 40,
|
|
151
|
-
* completeChar: '■',
|
|
152
|
-
* incompleteChar: '□',
|
|
153
|
-
* clearOnComplete: false
|
|
154
|
-
* })
|
|
155
|
-
*
|
|
156
|
-
* // 自定义颜色主题
|
|
157
|
-
* buildProgress({
|
|
158
|
-
* theme: {
|
|
159
|
-
* completeColor: (t) => `\x1b[32m${t}\x1b[39m`,
|
|
160
|
-
* incompleteColor: (t) => `\x1b[90m${t}\x1b[39m`,
|
|
161
|
-
* percentageColor: (t) => `\x1b[1m${t}\x1b[22m`,
|
|
162
|
-
* phaseColor: (t) => `\x1b[36m${t}\x1b[39m`,
|
|
163
|
-
* moduleColor: (t) => `\x1b[90m${t}\x1b[39m`
|
|
164
|
-
* }
|
|
165
|
-
* })
|
|
166
|
-
*
|
|
167
|
-
* // 禁用模块名显示
|
|
168
|
-
* buildProgress({
|
|
169
|
-
* showModuleName: false
|
|
170
|
-
* })
|
|
171
|
-
* ```
|
|
172
|
-
*
|
|
173
|
-
* @remarks
|
|
174
|
-
* 该插件在 Vite 构建过程中实时显示终端进度条,支持三种显示格式:
|
|
175
|
-
* - bar: 完整进度条(默认),包含旋转动画、阶段标签、进度条和百分比
|
|
176
|
-
* - spinner: 旋转动画模式,仅显示动画、阶段标签和百分比
|
|
177
|
-
* - minimal: 精简模式,仅显示阶段标签和百分比
|
|
178
|
-
*
|
|
179
|
-
* 进度计算基于 Vite 构建生命周期:
|
|
180
|
-
* 1. config 阶段(5%)→ resolve 阶段(10%)→ transform 阶段(15%-85%)→ bundle 阶段(+10%)→ write 阶段(+5%)→ 完成(100%)
|
|
181
|
-
*
|
|
182
|
-
* 在非 TTY 终端环境下(如 CI/CD),自动降级为日志输出模式。
|
|
183
|
-
*/
|
|
184
|
-
declare const buildProgress: PluginFactory<BuildProgressOptions, BuildProgressOptions>;
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* 复制文件插件的配置选项接口
|
|
188
|
-
*
|
|
189
|
-
* @interface CopyFileOptions
|
|
190
|
-
*/
|
|
191
|
-
interface CopyFileOptions extends BasePluginOptions {
|
|
192
|
-
/**
|
|
193
|
-
* 源文件目录的路径
|
|
194
|
-
*
|
|
195
|
-
* @example 'src/assets'
|
|
196
|
-
*/
|
|
197
|
-
sourceDir: string;
|
|
198
|
-
/**
|
|
199
|
-
* 目标文件目录的路径
|
|
200
|
-
*
|
|
201
|
-
* @example 'dist/assets'
|
|
202
|
-
*/
|
|
203
|
-
targetDir: string;
|
|
204
|
-
/**
|
|
205
|
-
* 是否覆盖同名文件
|
|
206
|
-
*
|
|
207
|
-
* @default true
|
|
208
|
-
*/
|
|
209
|
-
overwrite?: boolean;
|
|
210
|
-
/**
|
|
211
|
-
* 是否支持递归复制
|
|
212
|
-
*
|
|
213
|
-
* @default true
|
|
214
|
-
*/
|
|
215
|
-
recursive?: boolean;
|
|
216
|
-
/**
|
|
217
|
-
* 是否启用增量复制
|
|
218
|
-
*
|
|
219
|
-
* @default true
|
|
220
|
-
*/
|
|
221
|
-
incremental?: boolean;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* 复制文件插件
|
|
226
|
-
*
|
|
227
|
-
* @param {CopyFileOptions} options - 插件配置选项
|
|
228
|
-
* @returns {Plugin} 一个 Vite 插件实例
|
|
229
|
-
*
|
|
230
|
-
* @example
|
|
231
|
-
* ```typescript
|
|
232
|
-
* // 基本使用
|
|
233
|
-
* copyFile({
|
|
234
|
-
* sourceDir: 'src/assets',
|
|
235
|
-
* targetDir: 'dist/assets'
|
|
236
|
-
* })
|
|
237
|
-
*
|
|
238
|
-
* // 高级配置
|
|
239
|
-
* copyFile({
|
|
240
|
-
* sourceDir: 'src/static',
|
|
241
|
-
* targetDir: 'dist/static',
|
|
242
|
-
* overwrite: false,
|
|
243
|
-
* recursive: true,
|
|
244
|
-
* incremental: true,
|
|
245
|
-
* enabled: true,
|
|
246
|
-
* verbose: true,
|
|
247
|
-
* errorStrategy: 'throw'
|
|
248
|
-
* })
|
|
249
|
-
* ```
|
|
250
|
-
*
|
|
251
|
-
* @remarks
|
|
252
|
-
* 该插件会在 Vite 构建完成后执行,将指定源目录的所有文件和子目录复制到目标目录。
|
|
253
|
-
* 支持增量复制、递归复制和覆盖控制等功能。
|
|
254
|
-
*/
|
|
255
|
-
declare const copyFile: PluginFactory<CopyFileOptions, CopyFileOptions>;
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* 图标配置项接口
|
|
259
|
-
*
|
|
260
|
-
* @interface Icon
|
|
261
|
-
*/
|
|
262
|
-
interface Icon {
|
|
263
|
-
/**
|
|
264
|
-
* 图标关系类型
|
|
265
|
-
*/
|
|
266
|
-
rel: string;
|
|
267
|
-
/**
|
|
268
|
-
* 图标 URL
|
|
269
|
-
*/
|
|
270
|
-
href: string;
|
|
271
|
-
/**
|
|
272
|
-
* 图标尺寸
|
|
273
|
-
*/
|
|
274
|
-
sizes?: string;
|
|
275
|
-
/**
|
|
276
|
-
* 图标 MIME 类型
|
|
277
|
-
*/
|
|
278
|
-
type?: string;
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* 图标文件复制配置选项接口
|
|
282
|
-
*
|
|
283
|
-
* @interface CopyOptions
|
|
284
|
-
*/
|
|
285
|
-
interface CopyOptions {
|
|
286
|
-
/**
|
|
287
|
-
* 图标源文件目录,用于复制图标到打包目录
|
|
288
|
-
*
|
|
289
|
-
* @example 'src/assets/icons'
|
|
290
|
-
*/
|
|
291
|
-
sourceDir: string;
|
|
292
|
-
/**
|
|
293
|
-
* 图标目标目录(打包目录),用于复制图标到打包目录
|
|
294
|
-
*
|
|
295
|
-
* @example 'dist/assets/icons'
|
|
296
|
-
*/
|
|
297
|
-
targetDir: string;
|
|
298
|
-
/**
|
|
299
|
-
* 是否覆盖同名文件
|
|
300
|
-
*
|
|
301
|
-
* @default true
|
|
302
|
-
*/
|
|
303
|
-
overwrite?: boolean;
|
|
304
|
-
/**
|
|
305
|
-
* 是否支持递归复制
|
|
306
|
-
*
|
|
307
|
-
* @default true
|
|
308
|
-
*/
|
|
309
|
-
recursive?: boolean;
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* 网站图标管理插件的配置选项接口
|
|
313
|
-
*
|
|
314
|
-
* @interface FaviconManagerOptions
|
|
315
|
-
*/
|
|
316
|
-
interface FaviconManagerOptions extends BasePluginOptions {
|
|
317
|
-
/**
|
|
318
|
-
* 图标文件的基础路径,默认为根路径 '/'
|
|
319
|
-
*
|
|
320
|
-
* @default '/'
|
|
321
|
-
* @example '/assets'
|
|
322
|
-
*/
|
|
323
|
-
base?: string;
|
|
324
|
-
/**
|
|
325
|
-
* 图标的完整 URL,如果提供则优先使用(覆盖 base + favicon.ico)
|
|
326
|
-
*
|
|
327
|
-
* @example 'https://example.com/favicon.ico'
|
|
328
|
-
*/
|
|
329
|
-
url?: string;
|
|
330
|
-
/**
|
|
331
|
-
* 自定义的完整 link 标签 HTML,如果提供则优先使用(覆盖 url 和 base)
|
|
332
|
-
*
|
|
333
|
-
* @example '<link rel="icon" href="/favicon.svg" type="image/svg+xml" />'
|
|
334
|
-
*/
|
|
335
|
-
link?: string;
|
|
336
|
-
/**
|
|
337
|
-
* 自定义图标数组,支持多种图标格式和尺寸
|
|
338
|
-
*
|
|
339
|
-
* @example
|
|
340
|
-
* [
|
|
341
|
-
* { rel: 'icon', href: '/favicon.svg', type: 'image/svg+xml' },
|
|
342
|
-
* { rel: 'icon', href: '/favicon-32x32.png', sizes: '32x32', type: 'image/png' },
|
|
343
|
-
* { rel: 'icon', href: '/favicon-16x16.png', sizes: '16x16', type: 'image/png' }
|
|
344
|
-
* ]
|
|
345
|
-
*/
|
|
346
|
-
icons?: Icon[];
|
|
347
|
-
/**
|
|
348
|
-
* 图标文件复制配置选项
|
|
349
|
-
*
|
|
350
|
-
* @remarks
|
|
351
|
-
* 当此对象存在时,才会开启图标文件复制功能
|
|
352
|
-
*/
|
|
353
|
-
copyOptions?: CopyOptions;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* 网站图标管理插件
|
|
358
|
-
*
|
|
359
|
-
* @param options - 插件配置选项,可以是字符串形式的 base 路径或完整的配置对象
|
|
360
|
-
* @returns Vite 插件实例
|
|
361
|
-
*
|
|
362
|
-
* @example
|
|
363
|
-
* ```typescript
|
|
364
|
-
* // 基本使用
|
|
365
|
-
* faviconManager() // 使用默认配置
|
|
366
|
-
*
|
|
367
|
-
* // 使用字符串配置 base 路径
|
|
368
|
-
* faviconManager('/assets')
|
|
369
|
-
*
|
|
370
|
-
* // 使用完整配置
|
|
371
|
-
* faviconManager({
|
|
372
|
-
* base: '/assets',
|
|
373
|
-
* icons: [
|
|
374
|
-
* { rel: 'icon', href: '/favicon.svg', type: 'image/svg+xml' },
|
|
375
|
-
* { rel: 'icon', href: '/favicon-32x32.png', sizes: '32x32', type: 'image/png' }
|
|
376
|
-
* ],
|
|
377
|
-
* copyOptions: {
|
|
378
|
-
* sourceDir: 'src/assets/icons',
|
|
379
|
-
* targetDir: 'dist/assets/icons'
|
|
380
|
-
* }
|
|
381
|
-
* })
|
|
382
|
-
* ```
|
|
383
|
-
*
|
|
384
|
-
* @remarks
|
|
385
|
-
* 该插件在构建过程中:
|
|
386
|
-
* 1. 将网站图标(favicon)的 link 标签注入到 HTML 文件的 `<head>` 中
|
|
387
|
-
* 2. 如果配置了 copyOptions,将图标文件复制到目标目录
|
|
388
|
-
*
|
|
389
|
-
* 支持自定义图标链接、图标数组配置以及图标文件复制功能。
|
|
390
|
-
*/
|
|
391
|
-
declare const faviconManager: PluginFactory<FaviconManagerOptions, string | FaviconManagerOptions>;
|
|
392
|
-
|
|
393
|
-
/**
|
|
394
|
-
* 路由元信息
|
|
395
|
-
*/
|
|
396
|
-
interface RouteMeta {
|
|
397
|
-
/** 页面标题 */
|
|
398
|
-
title?: string;
|
|
399
|
-
/** 是否为TabBar页面 */
|
|
400
|
-
isTab?: boolean;
|
|
401
|
-
/** 是否需要登录 */
|
|
402
|
-
requireAuth?: boolean;
|
|
403
|
-
/** 自定义扩展字段 */
|
|
404
|
-
[key: string]: unknown;
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* 路由配置项
|
|
408
|
-
*/
|
|
409
|
-
interface RouteConfig {
|
|
410
|
-
/** 路由路径 */
|
|
411
|
-
path: string;
|
|
412
|
-
/** 路由名称(用于命名路由导航) */
|
|
413
|
-
name?: string;
|
|
414
|
-
/** 路由元信息 */
|
|
415
|
-
meta?: RouteMeta;
|
|
416
|
-
}
|
|
417
|
-
/**
|
|
418
|
-
* uni-app pages.json 中的页面配置项
|
|
419
|
-
*/
|
|
420
|
-
interface UniAppPageConfig {
|
|
421
|
-
/** 页面路径 */
|
|
422
|
-
path: string;
|
|
423
|
-
/** 页面样式 */
|
|
424
|
-
style?: {
|
|
425
|
-
/** 导航栏标题 */
|
|
426
|
-
navigationBarTitleText?: string;
|
|
427
|
-
/** 是否需要登录 */
|
|
428
|
-
requireAuth?: boolean;
|
|
429
|
-
/** 其他自定义属性 */
|
|
430
|
-
[key: string]: unknown;
|
|
431
|
-
};
|
|
432
|
-
/** 其他属性 */
|
|
433
|
-
[key: string]: unknown;
|
|
434
|
-
}
|
|
435
|
-
/**
|
|
436
|
-
* uni-app pages.json 中的 tabBar 配置
|
|
437
|
-
*/
|
|
438
|
-
interface UniAppTabBarConfig {
|
|
439
|
-
/** tabBar 列表 */
|
|
440
|
-
list?: Array<{
|
|
441
|
-
/** 页面路径 */
|
|
442
|
-
pagePath: string;
|
|
443
|
-
/** 文字 */
|
|
444
|
-
text?: string;
|
|
445
|
-
/** 图标路径 */
|
|
446
|
-
iconPath?: string;
|
|
447
|
-
/** 选中图标路径 */
|
|
448
|
-
selectedIconPath?: string;
|
|
449
|
-
}>;
|
|
450
|
-
/** 其他属性 */
|
|
451
|
-
[key: string]: unknown;
|
|
452
|
-
}
|
|
453
|
-
/**
|
|
454
|
-
* uni-app pages.json 结构
|
|
455
|
-
*/
|
|
456
|
-
interface UniAppPagesJson {
|
|
457
|
-
/** 页面列表 */
|
|
458
|
-
pages: UniAppPageConfig[];
|
|
459
|
-
/** 子包 */
|
|
460
|
-
subPackages?: Array<{
|
|
461
|
-
root: string;
|
|
462
|
-
pages: UniAppPageConfig[];
|
|
463
|
-
}>;
|
|
464
|
-
/** tabBar 配置 */
|
|
465
|
-
tabBar?: UniAppTabBarConfig;
|
|
466
|
-
/** 全局样式 */
|
|
467
|
-
globalStyle?: Record<string, unknown>;
|
|
468
|
-
/** 其他属性 */
|
|
469
|
-
[key: string]: unknown;
|
|
470
|
-
}
|
|
471
|
-
/**
|
|
472
|
-
* 输出文件格式类型
|
|
473
|
-
*/
|
|
474
|
-
type OutputFormat = 'ts' | 'js';
|
|
475
|
-
/**
|
|
476
|
-
* 路由名称生成策略
|
|
477
|
-
*/
|
|
478
|
-
type NameStrategy = 'path' | 'camelCase' | 'pascalCase' | 'custom';
|
|
479
|
-
/**
|
|
480
|
-
* 生成路由配置插件选项
|
|
481
|
-
*/
|
|
482
|
-
interface GenerateRouterOptions extends BasePluginOptions {
|
|
483
|
-
/**
|
|
484
|
-
* pages.json 文件路径(相对于项目根目录)
|
|
485
|
-
*
|
|
486
|
-
* @default 'src/pages.json'
|
|
487
|
-
*/
|
|
488
|
-
pagesJsonPath?: string;
|
|
489
|
-
/**
|
|
490
|
-
* 输出文件路径(相对于项目根目录)
|
|
491
|
-
*
|
|
492
|
-
* @default 'src/router.config.ts'
|
|
493
|
-
*/
|
|
494
|
-
outputPath?: string;
|
|
495
|
-
/**
|
|
496
|
-
* 输出文件格式
|
|
497
|
-
*
|
|
498
|
-
* @default 'ts'
|
|
499
|
-
*/
|
|
500
|
-
outputFormat?: OutputFormat;
|
|
501
|
-
/**
|
|
502
|
-
* 路由名称生成策略
|
|
503
|
-
*
|
|
504
|
-
* @default 'camelCase'
|
|
505
|
-
*/
|
|
506
|
-
nameStrategy?: NameStrategy;
|
|
507
|
-
/**
|
|
508
|
-
* 自定义路由名称生成函数
|
|
509
|
-
*
|
|
510
|
-
* @param path - 页面路径
|
|
511
|
-
* @returns 路由名称
|
|
512
|
-
*/
|
|
513
|
-
customNameGenerator?: (path: string) => string;
|
|
514
|
-
/**
|
|
515
|
-
* 是否包含子包路由
|
|
516
|
-
*
|
|
517
|
-
* @default true
|
|
518
|
-
*/
|
|
519
|
-
includeSubPackages?: boolean;
|
|
520
|
-
/**
|
|
521
|
-
* 是否监听 pages.json 变化并自动重新生成
|
|
522
|
-
*
|
|
523
|
-
* @default true
|
|
524
|
-
*/
|
|
525
|
-
watch?: boolean;
|
|
526
|
-
/**
|
|
527
|
-
* 额外的元信息字段映射
|
|
528
|
-
*
|
|
529
|
-
* @description 将 pages.json 中 style 的字段映射到 meta 中
|
|
530
|
-
* @example { 'navigationBarTitleText': 'title', 'requireAuth': 'requireAuth' }
|
|
531
|
-
*/
|
|
532
|
-
metaMapping?: Record<string, string>;
|
|
533
|
-
/**
|
|
534
|
-
* 是否导出类型定义
|
|
535
|
-
*
|
|
536
|
-
* @default true
|
|
537
|
-
*/
|
|
538
|
-
exportTypes?: boolean;
|
|
539
|
-
/**
|
|
540
|
-
* 是否保留用户对 routes 配置的修改
|
|
541
|
-
*
|
|
542
|
-
* @description 开启后,用户在 routes 数组中修改的字段将被保留
|
|
543
|
-
* @default true
|
|
544
|
-
*/
|
|
545
|
-
preserveRouteChanges?: boolean;
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
/**
|
|
549
|
-
* 生成路由配置插件
|
|
550
|
-
*
|
|
551
|
-
* @param {GenerateRouterOptions} options - 插件配置选项
|
|
552
|
-
* @returns {Plugin} 一个 Vite 插件实例
|
|
553
|
-
*
|
|
554
|
-
* @example
|
|
555
|
-
* ```typescript
|
|
556
|
-
* // 基本使用 - 使用默认配置
|
|
557
|
-
* generateRouter()
|
|
558
|
-
*
|
|
559
|
-
* // 自定义 pages.json 路径
|
|
560
|
-
* generateRouter({
|
|
561
|
-
* pagesJsonPath: 'pages.json'
|
|
562
|
-
* })
|
|
563
|
-
*
|
|
564
|
-
* // 输出 JavaScript 文件
|
|
565
|
-
* generateRouter({
|
|
566
|
-
* outputFormat: 'js',
|
|
567
|
-
* outputPath: 'src/router.config.js'
|
|
568
|
-
* })
|
|
569
|
-
*
|
|
570
|
-
* // 使用帕斯卡命名策略
|
|
571
|
-
* generateRouter({
|
|
572
|
-
* nameStrategy: 'pascalCase'
|
|
573
|
-
* })
|
|
574
|
-
*
|
|
575
|
-
* // 自定义路由名称生成
|
|
576
|
-
* generateRouter({
|
|
577
|
-
* nameStrategy: 'custom',
|
|
578
|
-
* customNameGenerator: (path) => `route_${path.replace(/\//g, '_')}`
|
|
579
|
-
* })
|
|
580
|
-
*
|
|
581
|
-
* // 自定义元信息映射
|
|
582
|
-
* generateRouter({
|
|
583
|
-
* metaMapping: {
|
|
584
|
-
* navigationBarTitleText: 'title',
|
|
585
|
-
* requireAuth: 'requireAuth',
|
|
586
|
-
* customField: 'custom'
|
|
587
|
-
* }
|
|
588
|
-
* })
|
|
589
|
-
* ```
|
|
590
|
-
*
|
|
591
|
-
* @remarks
|
|
592
|
-
* 该插件会读取 uni-app 项目的 pages.json 文件,自动生成路由配置文件:
|
|
593
|
-
* - 支持主包和子包页面
|
|
594
|
-
* - 自动识别 tabBar 页面
|
|
595
|
-
* - 支持多种路由名称生成策略
|
|
596
|
-
* - 支持自定义元信息字段映射
|
|
597
|
-
* - 开发模式下自动监听 pages.json 变化并重新生成
|
|
598
|
-
*/
|
|
599
|
-
declare const generateRouter: PluginFactory<GenerateRouterOptions, GenerateRouterOptions>;
|
|
600
|
-
|
|
601
|
-
/**
|
|
602
|
-
* 版本号格式类型
|
|
603
|
-
*
|
|
604
|
-
* @description
|
|
605
|
-
* - 'timestamp': 时间戳格式,如 '20260203153000'
|
|
606
|
-
* - 'date': 日期格式,如 '2026.02.03'
|
|
607
|
-
* - 'datetime': 日期时间格式,如 '2026.02.03.153000'
|
|
608
|
-
* - 'semver': 语义化版本格式,如 '1.0.0'
|
|
609
|
-
* - 'hash': 随机哈希格式,如 'a1b2c3d4'
|
|
610
|
-
* - 'custom': 自定义格式,需要配合 customFormat 使用
|
|
611
|
-
*/
|
|
612
|
-
type VersionFormat = 'timestamp' | 'date' | 'datetime' | 'semver' | 'hash' | 'custom';
|
|
613
|
-
/**
|
|
614
|
-
* 版本号输出类型
|
|
615
|
-
*
|
|
616
|
-
* @description
|
|
617
|
-
* - 'file': 输出到文件
|
|
618
|
-
* - 'define': 通过 Vite 的 define 注入到代码中
|
|
619
|
-
* - 'both': 同时输出到文件和注入代码
|
|
620
|
-
*/
|
|
621
|
-
type OutputType = 'file' | 'define' | 'both';
|
|
622
|
-
/**
|
|
623
|
-
* 自动生成版本号插件的配置选项接口
|
|
624
|
-
*
|
|
625
|
-
* @interface GenerateVersionOptions
|
|
626
|
-
*/
|
|
627
|
-
interface GenerateVersionOptions extends BasePluginOptions {
|
|
628
|
-
/**
|
|
629
|
-
* 版本号格式
|
|
630
|
-
*
|
|
631
|
-
* @default 'timestamp'
|
|
632
|
-
*/
|
|
633
|
-
format?: VersionFormat;
|
|
634
|
-
/**
|
|
635
|
-
* 自定义格式模板,仅当 format 为 'custom' 时有效
|
|
636
|
-
*
|
|
637
|
-
* @description 支持以下占位符:
|
|
638
|
-
* - {YYYY}: 四位年份
|
|
639
|
-
* - {MM}: 两位月份
|
|
640
|
-
* - {DD}: 两位日期
|
|
641
|
-
* - {HH}: 两位小时
|
|
642
|
-
* - {mm}: 两位分钟
|
|
643
|
-
* - {ss}: 两位秒数
|
|
644
|
-
* - {timestamp}: 时间戳
|
|
645
|
-
* - {hash}: 随机哈希
|
|
646
|
-
* - {major}: 主版本号(需配合 semverBase)
|
|
647
|
-
* - {minor}: 次版本号(需配合 semverBase)
|
|
648
|
-
* - {patch}: 补丁版本号(需配合 semverBase)
|
|
649
|
-
*
|
|
650
|
-
* @example '{YYYY}.{MM}.{DD}-{hash}'
|
|
651
|
-
*/
|
|
652
|
-
customFormat?: string;
|
|
653
|
-
/**
|
|
654
|
-
* 语义化版本基础值,用于 semver 格式
|
|
655
|
-
*
|
|
656
|
-
* @default '1.0.0'
|
|
657
|
-
*/
|
|
658
|
-
semverBase?: string;
|
|
659
|
-
/**
|
|
660
|
-
* 输出类型
|
|
661
|
-
*
|
|
662
|
-
* @default 'file'
|
|
663
|
-
*/
|
|
664
|
-
outputType?: OutputType;
|
|
665
|
-
/**
|
|
666
|
-
* 输出文件路径(相对于构建输出目录)
|
|
667
|
-
*
|
|
668
|
-
* @default 'version.json'
|
|
669
|
-
*/
|
|
670
|
-
outputFile?: string;
|
|
671
|
-
/**
|
|
672
|
-
* 注入到代码中的全局变量名
|
|
673
|
-
*
|
|
674
|
-
* @default '__APP_VERSION__'
|
|
675
|
-
*/
|
|
676
|
-
defineName?: string;
|
|
677
|
-
/**
|
|
678
|
-
* 哈希长度
|
|
679
|
-
*
|
|
680
|
-
* @default 8
|
|
681
|
-
*/
|
|
682
|
-
hashLength?: number;
|
|
683
|
-
/**
|
|
684
|
-
* 版本号前缀
|
|
685
|
-
*
|
|
686
|
-
* @example 'v'
|
|
687
|
-
*/
|
|
688
|
-
prefix?: string;
|
|
689
|
-
/**
|
|
690
|
-
* 版本号后缀
|
|
691
|
-
*
|
|
692
|
-
* @example '-beta'
|
|
693
|
-
*/
|
|
694
|
-
suffix?: string;
|
|
695
|
-
/**
|
|
696
|
-
* 额外的版本信息,会包含在输出的 JSON 文件中
|
|
697
|
-
*/
|
|
698
|
-
extra?: Record<string, any>;
|
|
699
|
-
}
|
|
700
|
-
|
|
701
|
-
/**
|
|
702
|
-
* 自动生成版本号插件
|
|
703
|
-
*
|
|
704
|
-
* @param {GenerateVersionOptions} options - 插件配置选项
|
|
705
|
-
* @returns {Plugin} 一个 Vite 插件实例
|
|
706
|
-
*
|
|
707
|
-
* @example
|
|
708
|
-
* ```typescript
|
|
709
|
-
* // 基本使用 - 时间戳格式
|
|
710
|
-
* generateVersion()
|
|
711
|
-
*
|
|
712
|
-
* // 日期格式
|
|
713
|
-
* generateVersion({
|
|
714
|
-
* format: 'date'
|
|
715
|
-
* })
|
|
716
|
-
*
|
|
717
|
-
* // 语义化版本格式
|
|
718
|
-
* generateVersion({
|
|
719
|
-
* format: 'semver',
|
|
720
|
-
* semverBase: '2.0.0',
|
|
721
|
-
* prefix: 'v'
|
|
722
|
-
* })
|
|
723
|
-
*
|
|
724
|
-
* // 自定义格式
|
|
725
|
-
* generateVersion({
|
|
726
|
-
* format: 'custom',
|
|
727
|
-
* customFormat: '{YYYY}.{MM}.{DD}-{hash}',
|
|
728
|
-
* hashLength: 6
|
|
729
|
-
* })
|
|
730
|
-
*
|
|
731
|
-
* // 注入到代码中
|
|
732
|
-
* generateVersion({
|
|
733
|
-
* outputType: 'define',
|
|
734
|
-
* defineName: '__VERSION__'
|
|
735
|
-
* })
|
|
736
|
-
*
|
|
737
|
-
* // 同时输出文件和注入代码
|
|
738
|
-
* generateVersion({
|
|
739
|
-
* outputType: 'both',
|
|
740
|
-
* outputFile: 'build-info.json',
|
|
741
|
-
* defineName: '__BUILD_VERSION__',
|
|
742
|
-
* extra: {
|
|
743
|
-
* environment: 'production',
|
|
744
|
-
* author: 'MengXi Studio'
|
|
745
|
-
* }
|
|
746
|
-
* })
|
|
747
|
-
* ```
|
|
748
|
-
*
|
|
749
|
-
* @remarks
|
|
750
|
-
* 该插件会在 Vite 构建过程中自动生成版本号,支持多种格式:
|
|
751
|
-
* - timestamp: 时间戳格式 (20260203153000)
|
|
752
|
-
* - date: 日期格式 (2026.02.03)
|
|
753
|
-
* - datetime: 日期时间格式 (2026.02.03.153000)
|
|
754
|
-
* - semver: 语义化版本格式 (1.0.0)
|
|
755
|
-
* - hash: 随机哈希格式 (a1b2c3d4)
|
|
756
|
-
* - custom: 自定义格式
|
|
757
|
-
*/
|
|
758
|
-
declare const generateVersion: PluginFactory<GenerateVersionOptions, GenerateVersionOptions>;
|
|
759
|
-
|
|
760
|
-
/**
|
|
761
|
-
* Loading 组件的显示位置
|
|
762
|
-
*
|
|
763
|
-
* @remarks 控制加载指示器在视口中的垂直对齐方式
|
|
764
|
-
*
|
|
765
|
-
* @defaultValue `'center'`
|
|
766
|
-
*
|
|
767
|
-
* @example
|
|
768
|
-
* ```typescript
|
|
769
|
-
* loadingManager({ position: 'top' })
|
|
770
|
-
* ```
|
|
771
|
-
*/
|
|
772
|
-
type LoadingPosition = 'center' | 'top' | 'bottom';
|
|
773
|
-
/**
|
|
774
|
-
* Loading 自动绑定请求拦截的模式
|
|
775
|
-
*
|
|
776
|
-
* @remarks 决定插件自动拦截哪些类型的网络请求来管理 loading 状态
|
|
777
|
-
*
|
|
778
|
-
* @defaultValue `'none'`
|
|
779
|
-
*
|
|
780
|
-
* @example
|
|
781
|
-
* ```typescript
|
|
782
|
-
* // 自动拦截所有 fetch 请求
|
|
783
|
-
* loadingManager({ autoBind: 'fetch' })
|
|
784
|
-
* ```
|
|
785
|
-
*/
|
|
786
|
-
type AutoBindMode = 'fetch' | 'xhr' | 'all' | 'none';
|
|
787
|
-
/**
|
|
788
|
-
* Loading 旋转图标的内置类型
|
|
789
|
-
*
|
|
790
|
-
* @remarks 提供四种内置加载动画,无需自定义 CSS 即可使用
|
|
791
|
-
*
|
|
792
|
-
* @defaultValue `'spinner'`
|
|
793
|
-
*
|
|
794
|
-
* @example
|
|
795
|
-
* ```typescript
|
|
796
|
-
* loadingManager({ spinnerType: 'dots' })
|
|
797
|
-
* ```
|
|
798
|
-
*/
|
|
799
|
-
type SpinnerType = 'spinner' | 'dots' | 'pulse' | 'bar';
|
|
800
|
-
/**
|
|
801
|
-
* 当 `defaultVisible` 为 `true` 时,loading 的自动隐藏时机
|
|
802
|
-
*
|
|
803
|
-
* @remarks 仅在 {@link LoadingManagerOptions.defaultVisible} 为 `true` 时生效,
|
|
804
|
-
* 决定 loading 在页面加载过程中的自动隐藏策略
|
|
805
|
-
*
|
|
806
|
-
* @defaultValue `'DOMContentLoaded'`
|
|
807
|
-
*
|
|
808
|
-
* @example
|
|
809
|
-
* ```typescript
|
|
810
|
-
* // Vue/React SPA:手动控制隐藏时机
|
|
811
|
-
* loadingManager({ defaultVisible: true, autoHideOn: 'manual' })
|
|
812
|
-
* // 在应用入口:window.__LOADING_MANAGER__.hide()
|
|
813
|
-
* ```
|
|
814
|
-
*/
|
|
815
|
-
type AutoHideOn = 'DOMContentLoaded' | 'load' | 'manual';
|
|
816
|
-
/**
|
|
817
|
-
* Loading 过渡动画配置
|
|
818
|
-
*
|
|
819
|
-
* @remarks 控制 loading 显示/隐藏时的 CSS 过渡效果
|
|
820
|
-
*/
|
|
821
|
-
interface TransitionConfig {
|
|
822
|
-
/**
|
|
823
|
-
* 是否启用过渡动画
|
|
824
|
-
*
|
|
825
|
-
* @defaultValue `true`
|
|
826
|
-
*/
|
|
827
|
-
enabled?: boolean;
|
|
828
|
-
/**
|
|
829
|
-
* 过渡动画持续时间(毫秒)
|
|
830
|
-
*
|
|
831
|
-
* @defaultValue `200`
|
|
832
|
-
*
|
|
833
|
-
* @throws 配置验证时若为负数将抛出错误
|
|
834
|
-
*/
|
|
835
|
-
duration?: number;
|
|
836
|
-
/**
|
|
837
|
-
* CSS 过渡缓动函数
|
|
838
|
-
*
|
|
839
|
-
* @defaultValue `'ease-out'`
|
|
840
|
-
*
|
|
841
|
-
* @example
|
|
842
|
-
* ```typescript
|
|
843
|
-
* { easing: 'cubic-bezier(0.4, 0, 0.2, 1)' }
|
|
844
|
-
* ```
|
|
845
|
-
*/
|
|
846
|
-
easing?: string;
|
|
847
|
-
}
|
|
848
|
-
/**
|
|
849
|
-
* Loading 自定义样式配置
|
|
850
|
-
*
|
|
851
|
-
* @remarks 控制 loading 遮罩层、图标和文本的视觉表现
|
|
852
|
-
*/
|
|
853
|
-
interface LoadingStyle {
|
|
854
|
-
/**
|
|
855
|
-
* 遮罩层背景色(CSS 颜色值)
|
|
856
|
-
*
|
|
857
|
-
* @defaultValue `'rgba(255, 255, 255, 0.7)'`
|
|
858
|
-
*/
|
|
859
|
-
overlayColor?: string;
|
|
860
|
-
/**
|
|
861
|
-
* Loading 图标颜色(CSS 颜色值)
|
|
862
|
-
*
|
|
863
|
-
* @defaultValue `'#4361ee'`
|
|
864
|
-
*/
|
|
865
|
-
spinnerColor?: string;
|
|
866
|
-
/**
|
|
867
|
-
* Loading 图标大小(CSS 长度值)
|
|
868
|
-
*
|
|
869
|
-
* @defaultValue `'40px'`
|
|
870
|
-
*/
|
|
871
|
-
spinnerSize?: string;
|
|
872
|
-
/**
|
|
873
|
-
* 文本颜色(CSS 颜色值)
|
|
874
|
-
*
|
|
875
|
-
* @defaultValue `'#333'`
|
|
876
|
-
*/
|
|
877
|
-
textColor?: string;
|
|
878
|
-
/**
|
|
879
|
-
* 文本大小(CSS 长度值)
|
|
880
|
-
*
|
|
881
|
-
* @defaultValue `'14px'`
|
|
882
|
-
*/
|
|
883
|
-
textSize?: string;
|
|
884
|
-
/**
|
|
885
|
-
* 自定义 CSS 类名,附加到 overlay 元素上
|
|
886
|
-
*
|
|
887
|
-
* @remarks 可用于覆盖默认样式或添加额外样式
|
|
888
|
-
*/
|
|
889
|
-
customClass?: string;
|
|
890
|
-
/**
|
|
891
|
-
* 自定义内联样式字符串,附加到 overlay 元素上
|
|
892
|
-
*
|
|
893
|
-
* @remarks 将作为 `style` 属性值直接注入
|
|
894
|
-
*/
|
|
895
|
-
customStyle?: string;
|
|
896
|
-
/**
|
|
897
|
-
* 遮罩层 z-index 值
|
|
898
|
-
*
|
|
899
|
-
* @defaultValue `9999`
|
|
900
|
-
*
|
|
901
|
-
* @throws 配置验证时若为负数将抛出错误
|
|
902
|
-
*/
|
|
903
|
-
zIndex?: number;
|
|
904
|
-
/**
|
|
905
|
-
* 是否启用遮罩层的指针事件
|
|
906
|
-
*
|
|
907
|
-
* @remarks
|
|
908
|
-
* 对应 CSS `pointer-events` 属性,控制遮罩层是否拦截用户的点击、滚动等交互操作:
|
|
909
|
-
* - `true`(默认):启用指针事件(`pointer-events: auto`),遮罩层阻止所有交互
|
|
910
|
-
* - `false`:禁用指针事件(`pointer-events: none`),遮罩层允许交互穿透
|
|
911
|
-
*
|
|
912
|
-
* @defaultValue `true`
|
|
913
|
-
*
|
|
914
|
-
* @example
|
|
915
|
-
* ```typescript
|
|
916
|
-
* // 阻止交互(默认行为)
|
|
917
|
-
* loadingManager({ style: { pointerEvents: true } })
|
|
918
|
-
*
|
|
919
|
-
* // 允许交互穿透(如仅展示加载状态,不阻止操作)
|
|
920
|
-
* loadingManager({ style: { pointerEvents: false } })
|
|
921
|
-
* ```
|
|
922
|
-
*/
|
|
923
|
-
pointerEvents?: boolean;
|
|
924
|
-
/**
|
|
925
|
-
* 是否启用 backdrop-filter 模糊效果
|
|
926
|
-
*
|
|
927
|
-
* @remarks 启用后遮罩层下方的页面内容将被高斯模糊处理,
|
|
928
|
-
* 需要浏览器支持 `backdrop-filter` CSS 属性
|
|
929
|
-
*
|
|
930
|
-
* @defaultValue `false`
|
|
931
|
-
*/
|
|
932
|
-
backdropBlur?: boolean;
|
|
933
|
-
/**
|
|
934
|
-
* backdrop-filter 模糊程度(单位:px)
|
|
935
|
-
*
|
|
936
|
-
* @remarks 仅在 {@link backdropBlur} 为 `true` 时生效
|
|
937
|
-
*
|
|
938
|
-
* @defaultValue `4`
|
|
939
|
-
*
|
|
940
|
-
* @throws 配置验证时若为负数将抛出错误
|
|
941
|
-
*/
|
|
942
|
-
backdropBlurAmount?: number;
|
|
943
|
-
}
|
|
944
|
-
/**
|
|
945
|
-
* Loading 最小显示时间配置
|
|
946
|
-
*
|
|
947
|
-
* @remarks 确保 loading 至少显示指定时长,避免快速闪烁
|
|
948
|
-
*/
|
|
949
|
-
interface MinDisplayTime {
|
|
950
|
-
/**
|
|
951
|
-
* 是否启用最小显示时间
|
|
952
|
-
*
|
|
953
|
-
* @defaultValue `true`
|
|
954
|
-
*/
|
|
955
|
-
enabled?: boolean;
|
|
956
|
-
/**
|
|
957
|
-
* 最小显示时间(毫秒)
|
|
958
|
-
*
|
|
959
|
-
* @remarks 即使请求在更短时间内完成,loading 也会至少显示此时长
|
|
960
|
-
*
|
|
961
|
-
* @defaultValue `300`
|
|
962
|
-
*
|
|
963
|
-
* @throws 配置验证时若为负数将抛出错误
|
|
964
|
-
*/
|
|
965
|
-
duration?: number;
|
|
966
|
-
}
|
|
967
|
-
/**
|
|
968
|
-
* Loading 延迟显示配置
|
|
969
|
-
*
|
|
970
|
-
* @remarks 当请求在短时间内完成时,延迟显示可避免 loading 闪烁
|
|
971
|
-
*/
|
|
972
|
-
interface DelayShow {
|
|
973
|
-
/**
|
|
974
|
-
* 是否启用延迟显示
|
|
975
|
-
*
|
|
976
|
-
* @defaultValue `true`
|
|
977
|
-
*/
|
|
978
|
-
enabled?: boolean;
|
|
979
|
-
/**
|
|
980
|
-
* 延迟时间(毫秒)
|
|
981
|
-
*
|
|
982
|
-
* @remarks 请求开始后等待此时长再显示 loading;
|
|
983
|
-
* 若请求在此时间内完成,则不会显示 loading
|
|
984
|
-
*
|
|
985
|
-
* @defaultValue `200`
|
|
986
|
-
*
|
|
987
|
-
* @throws 配置验证时若为负数将抛出错误
|
|
988
|
-
*/
|
|
989
|
-
duration?: number;
|
|
990
|
-
}
|
|
991
|
-
/**
|
|
992
|
-
* Loading 防抖隐藏配置
|
|
993
|
-
*
|
|
994
|
-
* @remarks 当频繁触发 hide 操作时,延迟执行以避免 loading 闪烁
|
|
995
|
-
*/
|
|
996
|
-
interface DebounceHide {
|
|
997
|
-
/**
|
|
998
|
-
* 是否启用防抖隐藏
|
|
999
|
-
*
|
|
1000
|
-
* @defaultValue `false`
|
|
1001
|
-
*/
|
|
1002
|
-
enabled?: boolean;
|
|
1003
|
-
/**
|
|
1004
|
-
* 防抖等待时间(毫秒)
|
|
1005
|
-
*
|
|
1006
|
-
* @remarks 在最后一次 hide 调用后等待此时长再执行隐藏
|
|
1007
|
-
*
|
|
1008
|
-
* @defaultValue `100`
|
|
1009
|
-
*
|
|
1010
|
-
* @throws 配置验证时若为负数将抛出错误
|
|
1011
|
-
*/
|
|
1012
|
-
duration?: number;
|
|
1013
|
-
}
|
|
1014
|
-
/**
|
|
1015
|
-
* Loading 请求过滤配置
|
|
1016
|
-
*
|
|
1017
|
-
* @remarks 用于精细控制哪些网络请求会触发 loading 状态变化
|
|
1018
|
-
*/
|
|
1019
|
-
interface RequestFilter {
|
|
1020
|
-
/**
|
|
1021
|
-
* 需要排除的 URL 正则表达式数组
|
|
1022
|
-
*
|
|
1023
|
-
* @remarks 匹配的 URL 不会触发 loading
|
|
1024
|
-
*
|
|
1025
|
-
* @example
|
|
1026
|
-
* ```typescript
|
|
1027
|
-
* { excludeUrls: [/\/api\/health/, /\/static\//] }
|
|
1028
|
-
* ```
|
|
1029
|
-
*/
|
|
1030
|
-
excludeUrls?: RegExp[];
|
|
1031
|
-
/**
|
|
1032
|
-
* 需要包含的 URL 正则表达式数组
|
|
1033
|
-
*
|
|
1034
|
-
* @remarks 仅匹配的 URL 才会触发 loading。
|
|
1035
|
-
* 与 {@link excludeUrls} 互斥,{@link includeUrls} 优先级更高
|
|
1036
|
-
*
|
|
1037
|
-
* @example
|
|
1038
|
-
* ```typescript
|
|
1039
|
-
* { includeUrls: [/\/api\/data/] }
|
|
1040
|
-
* ```
|
|
1041
|
-
*/
|
|
1042
|
-
includeUrls?: RegExp[];
|
|
1043
|
-
/**
|
|
1044
|
-
* 需要排除的 HTTP 方法数组(不区分大小写)
|
|
1045
|
-
*
|
|
1046
|
-
* @example
|
|
1047
|
-
* ```typescript
|
|
1048
|
-
* { excludeMethods: ['OPTIONS', 'HEAD'] }
|
|
1049
|
-
* ```
|
|
1050
|
-
*/
|
|
1051
|
-
excludeMethods?: string[];
|
|
1052
|
-
/**
|
|
1053
|
-
* 需要排除的 URL 字符串前缀数组
|
|
1054
|
-
*
|
|
1055
|
-
* @remarks 使用前缀匹配(`indexOf === 0`),比正则更高效
|
|
1056
|
-
*
|
|
1057
|
-
* @example
|
|
1058
|
-
* ```typescript
|
|
1059
|
-
* { excludeUrlPrefixes: ['http://localhost', 'data:'] }
|
|
1060
|
-
* ```
|
|
1061
|
-
*/
|
|
1062
|
-
excludeUrlPrefixes?: string[];
|
|
1063
|
-
}
|
|
1064
|
-
/**
|
|
1065
|
-
* Loading 生命周期回调
|
|
1066
|
-
*
|
|
1067
|
-
* @remarks 回调以 **函数体字符串** 形式提供,因为插件在构建时注入代码到浏览器端,
|
|
1068
|
-
* 无法直接传递函数引用。字符串应为有效的 JavaScript 函数体代码。
|
|
1069
|
-
*/
|
|
1070
|
-
interface LoadingCallbacks {
|
|
1071
|
-
/**
|
|
1072
|
-
* Loading 显示前的回调
|
|
1073
|
-
*
|
|
1074
|
-
* @remarks 函数体内 `return false` 可阻止显示
|
|
1075
|
-
*
|
|
1076
|
-
* @example
|
|
1077
|
-
* ```typescript
|
|
1078
|
-
* { onBeforeShow: 'if (someCondition) return false;' }
|
|
1079
|
-
* ```
|
|
1080
|
-
*/
|
|
1081
|
-
onBeforeShow?: string;
|
|
1082
|
-
/**
|
|
1083
|
-
* Loading 显示后的回调
|
|
1084
|
-
*
|
|
1085
|
-
* @example
|
|
1086
|
-
* ```typescript
|
|
1087
|
-
* { onShow: 'console.log("loading shown")' }
|
|
1088
|
-
* ```
|
|
1089
|
-
*/
|
|
1090
|
-
onShow?: string;
|
|
1091
|
-
/**
|
|
1092
|
-
* Loading 隐藏前的回调
|
|
1093
|
-
*
|
|
1094
|
-
* @remarks 函数体内 `return false` 可阻止隐藏
|
|
1095
|
-
*
|
|
1096
|
-
* @example
|
|
1097
|
-
* ```typescript
|
|
1098
|
-
* { onBeforeHide: 'if (shouldKeepVisible) return false;' }
|
|
1099
|
-
* ```
|
|
1100
|
-
*/
|
|
1101
|
-
onBeforeHide?: string;
|
|
1102
|
-
/**
|
|
1103
|
-
* Loading 隐藏后的回调
|
|
1104
|
-
*
|
|
1105
|
-
* @example
|
|
1106
|
-
* ```typescript
|
|
1107
|
-
* { onHide: 'console.log("loading hidden")' }
|
|
1108
|
-
* ```
|
|
1109
|
-
*/
|
|
1110
|
-
onHide?: string;
|
|
1111
|
-
/**
|
|
1112
|
-
* Loading 销毁时的回调
|
|
1113
|
-
*
|
|
1114
|
-
* @remarks 在 DOM 清理和拦截器恢复之后执行
|
|
1115
|
-
*/
|
|
1116
|
-
onDestroy?: string;
|
|
1117
|
-
}
|
|
1118
|
-
/**
|
|
1119
|
-
* Loading 管理器实例接口
|
|
1120
|
-
*
|
|
1121
|
-
* @remarks 注入到浏览器全局变量(默认 `window.__LOADING_MANAGER__`),
|
|
1122
|
-
* 提供运行时 loading 状态控制方法
|
|
1123
|
-
*/
|
|
1124
|
-
interface LoadingManager {
|
|
1125
|
-
/**
|
|
1126
|
-
* 显示 loading
|
|
1127
|
-
*
|
|
1128
|
-
* @param text - 可选,显示的文本内容;不传则保留默认文本
|
|
1129
|
-
*
|
|
1130
|
-
* @example
|
|
1131
|
-
* ```typescript
|
|
1132
|
-
* window.__LOADING_MANAGER__.show()
|
|
1133
|
-
* window.__LOADING_MANAGER__.show('正在保存...')
|
|
1134
|
-
* ```
|
|
1135
|
-
*/
|
|
1136
|
-
show(text?: string): void;
|
|
1137
|
-
/**
|
|
1138
|
-
* 隐藏 loading
|
|
1139
|
-
*
|
|
1140
|
-
* @remarks 受 {@link MinDisplayTime} 和 {@link DebounceHide} 配置约束;
|
|
1141
|
-
* 若需忽略这些约束,请使用 {@link forceHide}
|
|
1142
|
-
*/
|
|
1143
|
-
hide(): void;
|
|
1144
|
-
/**
|
|
1145
|
-
* 强制隐藏 loading,忽略最小显示时间和防抖隐藏
|
|
1146
|
-
*
|
|
1147
|
-
* @remarks 适用于需要立即隐藏 loading 的紧急场景
|
|
1148
|
-
*/
|
|
1149
|
-
forceHide(): void;
|
|
1150
|
-
/**
|
|
1151
|
-
* 切换 loading 的显示/隐藏状态
|
|
1152
|
-
*
|
|
1153
|
-
* @remarks 如果当前显示则调用 {@link hide},如果当前隐藏则调用 {@link show}
|
|
1154
|
-
*
|
|
1155
|
-
* @param text - 可选,切换为显示时的文本内容;不传则保留默认文本
|
|
1156
|
-
*
|
|
1157
|
-
* @example
|
|
1158
|
-
* ```typescript
|
|
1159
|
-
* window.__LOADING_MANAGER__.toggle()
|
|
1160
|
-
* window.__LOADING_MANAGER__.toggle('正在加载...')
|
|
1161
|
-
* ```
|
|
1162
|
-
*/
|
|
1163
|
-
toggle(text?: string): void;
|
|
1164
|
-
/**
|
|
1165
|
-
* 启用遮罩层的指针事件,拦截所有点击和滚动操作
|
|
1166
|
-
*
|
|
1167
|
-
* @remarks 设置遮罩层的 `pointer-events: auto`,恢复默认的交互拦截行为。
|
|
1168
|
-
* 适用于运行时动态启用交互阻止,例如在特定操作期间临时锁定页面
|
|
1169
|
-
*
|
|
1170
|
-
* @example
|
|
1171
|
-
* ```typescript
|
|
1172
|
-
* window.__LOADING_MANAGER__.enablePointerEvents()
|
|
1173
|
-
* ```
|
|
1174
|
-
*/
|
|
1175
|
-
enablePointerEvents(): void;
|
|
1176
|
-
/**
|
|
1177
|
-
* 禁用遮罩层的指针事件,允许交互穿透
|
|
1178
|
-
*
|
|
1179
|
-
* @remarks 设置遮罩层的 `pointer-events: none`,使鼠标事件穿透到下层元素。
|
|
1180
|
-
* 适用于运行时动态禁用交互阻止,例如需要用户在 loading 期间仍能操作页面
|
|
1181
|
-
*
|
|
1182
|
-
* @example
|
|
1183
|
-
* ```typescript
|
|
1184
|
-
* window.__LOADING_MANAGER__.disablePointerEvents()
|
|
1185
|
-
* ```
|
|
1186
|
-
*/
|
|
1187
|
-
disablePointerEvents(): void;
|
|
1188
|
-
/**
|
|
1189
|
-
* 切换遮罩层的指针事件状态
|
|
1190
|
-
*
|
|
1191
|
-
* @remarks 如果当前启用指针事件则调用 {@link disablePointerEvents},如果当前禁用则调用 {@link enablePointerEvents}
|
|
1192
|
-
*
|
|
1193
|
-
* @example
|
|
1194
|
-
* ```typescript
|
|
1195
|
-
* window.__LOADING_MANAGER__.togglePointerEvents()
|
|
1196
|
-
* ```
|
|
1197
|
-
*/
|
|
1198
|
-
togglePointerEvents(): void;
|
|
1199
|
-
/**
|
|
1200
|
-
* 更新 loading 文本内容
|
|
1201
|
-
*
|
|
1202
|
-
* @param text - 新的文本内容
|
|
1203
|
-
*
|
|
1204
|
-
* @example
|
|
1205
|
-
* ```typescript
|
|
1206
|
-
* window.__LOADING_MANAGER__.updateText('正在处理数据...')
|
|
1207
|
-
* ```
|
|
1208
|
-
*/
|
|
1209
|
-
updateText(text: string): void;
|
|
1210
|
-
/**
|
|
1211
|
-
* 获取当前 loading 是否正在显示
|
|
1212
|
-
*
|
|
1213
|
-
* @returns `true` 表示 loading 正在显示且未被销毁
|
|
1214
|
-
*/
|
|
1215
|
-
isVisible(): boolean;
|
|
1216
|
-
/**
|
|
1217
|
-
* 获取当前遮罩层是否启用了指针事件
|
|
1218
|
-
*
|
|
1219
|
-
* @returns `true` 表示指针事件已启用(遮罩层拦截交互),`false` 表示已禁用(允许穿透)
|
|
1220
|
-
*/
|
|
1221
|
-
isPointerEventsEnabled(): boolean;
|
|
1222
|
-
/**
|
|
1223
|
-
* 获取当前挂起的请求数量
|
|
1224
|
-
*
|
|
1225
|
-
* @returns 当前正在进行的、被拦截的请求数量
|
|
1226
|
-
*/
|
|
1227
|
-
getPendingCount(): number;
|
|
1228
|
-
/**
|
|
1229
|
-
* 销毁 loading 实例
|
|
1230
|
-
*
|
|
1231
|
-
* @remarks 清理 DOM 元素、事件监听器,并恢复原始的 fetch/XHR 拦截。
|
|
1232
|
-
* 销毁后所有其他方法调用将被安全忽略
|
|
1233
|
-
*/
|
|
1234
|
-
destroy(): void;
|
|
1235
|
-
}
|
|
1236
|
-
/**
|
|
1237
|
-
* loadingManager 插件的配置选项
|
|
1238
|
-
*
|
|
1239
|
-
* @remarks 继承自 {@link BasePluginOptions},包含 loading 的所有可配置项
|
|
1240
|
-
*/
|
|
1241
|
-
interface LoadingManagerOptions extends BasePluginOptions {
|
|
1242
|
-
/**
|
|
1243
|
-
* Loading 显示位置
|
|
1244
|
-
*
|
|
1245
|
-
* @defaultValue `'center'`
|
|
1246
|
-
*/
|
|
1247
|
-
position?: LoadingPosition;
|
|
1248
|
-
/**
|
|
1249
|
-
* 默认显示文本
|
|
1250
|
-
*
|
|
1251
|
-
* @defaultValue `'加载中...'`
|
|
1252
|
-
*/
|
|
1253
|
-
defaultText?: string;
|
|
1254
|
-
/**
|
|
1255
|
-
* 旋转图标类型
|
|
1256
|
-
*
|
|
1257
|
-
* @defaultValue `'spinner'`
|
|
1258
|
-
*/
|
|
1259
|
-
spinnerType?: SpinnerType;
|
|
1260
|
-
/**
|
|
1261
|
-
* 自定义样式配置
|
|
1262
|
-
*
|
|
1263
|
-
* @remarks 详见 {@link LoadingStyle}
|
|
1264
|
-
*/
|
|
1265
|
-
style?: LoadingStyle;
|
|
1266
|
-
/**
|
|
1267
|
-
* 过渡动画配置
|
|
1268
|
-
*
|
|
1269
|
-
* @defaultValue `{ enabled: true, duration: 200, easing: 'ease-out' }`
|
|
1270
|
-
*/
|
|
1271
|
-
transition?: TransitionConfig;
|
|
1272
|
-
/**
|
|
1273
|
-
* 最小显示时间配置
|
|
1274
|
-
*
|
|
1275
|
-
* @remarks 详见 {@link MinDisplayTime}
|
|
1276
|
-
*/
|
|
1277
|
-
minDisplayTime?: MinDisplayTime;
|
|
1278
|
-
/**
|
|
1279
|
-
* 延迟显示配置
|
|
1280
|
-
*
|
|
1281
|
-
* @remarks 详见 {@link DelayShow}
|
|
1282
|
-
*/
|
|
1283
|
-
delayShow?: DelayShow;
|
|
1284
|
-
/**
|
|
1285
|
-
* 防抖隐藏配置
|
|
1286
|
-
*
|
|
1287
|
-
* @remarks 详见 {@link DebounceHide}
|
|
1288
|
-
*/
|
|
1289
|
-
debounceHide?: DebounceHide;
|
|
1290
|
-
/**
|
|
1291
|
-
* 自动绑定请求拦截模式
|
|
1292
|
-
*
|
|
1293
|
-
* @defaultValue `'none'`
|
|
1294
|
-
*/
|
|
1295
|
-
autoBind?: AutoBindMode;
|
|
1296
|
-
/**
|
|
1297
|
-
* 请求过滤配置
|
|
1298
|
-
*
|
|
1299
|
-
* @remarks 详见 {@link RequestFilter}
|
|
1300
|
-
*/
|
|
1301
|
-
requestFilter?: RequestFilter;
|
|
1302
|
-
/**
|
|
1303
|
-
* 注入到浏览器全局的变量名
|
|
1304
|
-
*
|
|
1305
|
-
* @defaultValue `'__LOADING_MANAGER__'`
|
|
1306
|
-
*
|
|
1307
|
-
* @example
|
|
1308
|
-
* ```typescript
|
|
1309
|
-
* loadingManager({ globalName: '__MY_LOADING__' })
|
|
1310
|
-
* // 使用:window.__MY_LOADING__.show()
|
|
1311
|
-
* ```
|
|
1312
|
-
*/
|
|
1313
|
-
globalName?: string;
|
|
1314
|
-
/**
|
|
1315
|
-
* 自定义 Loading HTML 模板
|
|
1316
|
-
*
|
|
1317
|
-
* @remarks 如果提供,将替代默认的 loading 模板。
|
|
1318
|
-
* 模板中 **必须** 包含一个具有 `data-loading-text` 属性的元素用于文本显示,
|
|
1319
|
-
* 否则 {@link LoadingManager.updateText} 将无法工作
|
|
1320
|
-
*
|
|
1321
|
-
* @example
|
|
1322
|
-
* ```typescript
|
|
1323
|
-
* loadingManager({
|
|
1324
|
-
* customTemplate: '<div class="my-loader"><span data-loading-text></span></div>'
|
|
1325
|
-
* })
|
|
1326
|
-
* ```
|
|
1327
|
-
*/
|
|
1328
|
-
customTemplate?: string;
|
|
1329
|
-
/**
|
|
1330
|
-
* Loading DOM 的初始可见状态
|
|
1331
|
-
*
|
|
1332
|
-
* @defaultValue `false`
|
|
1333
|
-
*
|
|
1334
|
-
* @remarks
|
|
1335
|
-
* 设为 `true` 时,loading DOM 以可见状态注入到 HTML 的 `<head>` 中,
|
|
1336
|
-
* 无需等待 JS 执行即可在白屏阶段显示 loading。
|
|
1337
|
-
*
|
|
1338
|
-
* 典型用法:配合 {@link autoHideOn} 使用,实现"白屏时显示 → 页面就绪后自动隐藏"。
|
|
1339
|
-
*
|
|
1340
|
-
* @example
|
|
1341
|
-
* ```typescript
|
|
1342
|
-
* // 白屏阶段即显示 loading,DOMContentLoaded 后自动隐藏
|
|
1343
|
-
* loadingManager({ defaultVisible: true, autoHideOn: 'DOMContentLoaded' })
|
|
1344
|
-
*
|
|
1345
|
-
* // 白屏阶段即显示 loading,所有资源加载完成后自动隐藏
|
|
1346
|
-
* loadingManager({ defaultVisible: true, autoHideOn: 'load' })
|
|
1347
|
-
*
|
|
1348
|
-
* // Vue/React SPA:白屏阶段即显示,框架渲染完成后手动隐藏
|
|
1349
|
-
* loadingManager({ defaultVisible: true, autoHideOn: 'manual' })
|
|
1350
|
-
* // 在应用入口处:window.__LOADING_MANAGER__.hide()
|
|
1351
|
-
* ```
|
|
1352
|
-
*/
|
|
1353
|
-
defaultVisible?: boolean;
|
|
1354
|
-
/**
|
|
1355
|
-
* 当 `defaultVisible` 为 `true` 时,loading 的自动隐藏时机
|
|
1356
|
-
*
|
|
1357
|
-
* @defaultValue `'DOMContentLoaded'`
|
|
1358
|
-
*
|
|
1359
|
-
* @remarks 仅在 {@link defaultVisible} 为 `true` 时生效:
|
|
1360
|
-
* - `'DOMContentLoaded'` — DOM 解析完成后自动隐藏(适合 SSR/MPA)
|
|
1361
|
-
* - `'load'` — 所有资源(图片、样式等)加载完成后自动隐藏(适合资源较重的页面)
|
|
1362
|
-
* - `'manual'` — 不自动隐藏,需在应用代码中手动调用 `window.__LOADING_MANAGER__.hide()`
|
|
1363
|
-
* (适合 Vue/React SPA,在框架渲染完成后手动隐藏)
|
|
1364
|
-
*/
|
|
1365
|
-
autoHideOn?: AutoHideOn;
|
|
1366
|
-
/**
|
|
1367
|
-
* 生命周期回调
|
|
1368
|
-
*
|
|
1369
|
-
* @remarks 回调以函数体字符串形式提供,在运行时执行。
|
|
1370
|
-
* 详见 {@link LoadingCallbacks}
|
|
1371
|
-
*
|
|
1372
|
-
* @example
|
|
1373
|
-
* ```typescript
|
|
1374
|
-
* loadingManager({
|
|
1375
|
-
* callbacks: {
|
|
1376
|
-
* onShow: 'console.log("loading shown")',
|
|
1377
|
-
* onBeforeShow: 'return true'
|
|
1378
|
-
* }
|
|
1379
|
-
* })
|
|
1380
|
-
* ```
|
|
1381
|
-
*/
|
|
1382
|
-
callbacks?: LoadingCallbacks;
|
|
1383
|
-
}
|
|
1384
|
-
|
|
1385
|
-
/**
|
|
1386
|
-
* 全局 Loading 状态管理插件
|
|
1387
|
-
*
|
|
1388
|
-
* @param options - 插件配置选项,详见 {@link LoadingManagerOptions}
|
|
1389
|
-
* @returns Vite 插件实例
|
|
1390
|
-
*
|
|
1391
|
-
* @example
|
|
1392
|
-
* ```typescript
|
|
1393
|
-
* // 基本使用
|
|
1394
|
-
* loadingManager()
|
|
1395
|
-
*
|
|
1396
|
-
* // 自定义位置和文本
|
|
1397
|
-
* loadingManager({
|
|
1398
|
-
* position: 'top',
|
|
1399
|
-
* defaultText: '请稍候...'
|
|
1400
|
-
* })
|
|
1401
|
-
*
|
|
1402
|
-
* // 使用不同类型的加载图标
|
|
1403
|
-
* loadingManager({
|
|
1404
|
-
* spinnerType: 'dots', // spinner | dots | pulse | bar
|
|
1405
|
-
* })
|
|
1406
|
-
*
|
|
1407
|
-
* // 自动拦截 fetch 请求
|
|
1408
|
-
* loadingManager({
|
|
1409
|
-
* autoBind: 'fetch',
|
|
1410
|
-
* requestFilter: {
|
|
1411
|
-
* excludeUrls: [/\/api\/health/],
|
|
1412
|
-
* excludeUrlPrefixes: ['http://localhost']
|
|
1413
|
-
* }
|
|
1414
|
-
* })
|
|
1415
|
-
*
|
|
1416
|
-
* // 自定义样式(含模糊背景)
|
|
1417
|
-
* loadingManager({
|
|
1418
|
-
* style: {
|
|
1419
|
-
* overlayColor: 'rgba(0, 0, 0, 0.5)',
|
|
1420
|
-
* spinnerColor: '#ff6b6b',
|
|
1421
|
-
* spinnerSize: '50px',
|
|
1422
|
-
* backdropBlur: true,
|
|
1423
|
-
* backdropBlurAmount: 6
|
|
1424
|
-
* }
|
|
1425
|
-
* })
|
|
1426
|
-
*
|
|
1427
|
-
* // 自定义过渡动画
|
|
1428
|
-
* loadingManager({
|
|
1429
|
-
* transition: {
|
|
1430
|
-
* enabled: true,
|
|
1431
|
-
* duration: 300,
|
|
1432
|
-
* easing: 'cubic-bezier(0.4, 0, 0.2, 1)'
|
|
1433
|
-
* }
|
|
1434
|
-
* })
|
|
1435
|
-
*
|
|
1436
|
-
* // 防抖隐藏(避免快速闪烁)
|
|
1437
|
-
* loadingManager({
|
|
1438
|
-
* debounceHide: {
|
|
1439
|
-
* enabled: true,
|
|
1440
|
-
* duration: 100
|
|
1441
|
-
* }
|
|
1442
|
-
* })
|
|
1443
|
-
*
|
|
1444
|
-
* // 生命周期回调
|
|
1445
|
-
* loadingManager({
|
|
1446
|
-
* callbacks: {
|
|
1447
|
-
* onShow: 'console.log("loading shown")',
|
|
1448
|
-
* onBeforeShow: 'return true', // 返回 false 可阻止显示
|
|
1449
|
-
* onHide: 'console.log("loading hidden")'
|
|
1450
|
-
* }
|
|
1451
|
-
* })
|
|
1452
|
-
*
|
|
1453
|
-
* // 自定义模板
|
|
1454
|
-
* loadingManager({
|
|
1455
|
-
* customTemplate: '<div class="my-loader"><span data-loading-text></span></div>'
|
|
1456
|
-
* })
|
|
1457
|
-
*
|
|
1458
|
-
* // 白屏阶段即显示 loading,DOMContentLoaded 后自动隐藏
|
|
1459
|
-
* loadingManager({
|
|
1460
|
-
* defaultVisible: true,
|
|
1461
|
-
* autoHideOn: 'DOMContentLoaded'
|
|
1462
|
-
* })
|
|
1463
|
-
*
|
|
1464
|
-
* // 白屏阶段即显示 loading,所有资源加载完成后自动隐藏
|
|
1465
|
-
* loadingManager({
|
|
1466
|
-
* defaultVisible: true,
|
|
1467
|
-
* autoHideOn: 'load'
|
|
1468
|
-
* })
|
|
1469
|
-
*
|
|
1470
|
-
* // Vue/React SPA:白屏阶段即显示,框架渲染完成后手动隐藏
|
|
1471
|
-
* loadingManager({
|
|
1472
|
-
* defaultVisible: true,
|
|
1473
|
-
* autoHideOn: 'manual'
|
|
1474
|
-
* })
|
|
1475
|
-
* // 在应用入口处手动隐藏:
|
|
1476
|
-
* // window.__LOADING_MANAGER__.hide()
|
|
1477
|
-
* ```
|
|
1478
|
-
*
|
|
1479
|
-
* @remarks
|
|
1480
|
-
* 该插件在 HTML 中注入全局 Loading 状态管理代码,提供以下能力:
|
|
1481
|
-
* - 全局 loading 的创建、显示、隐藏和销毁
|
|
1482
|
-
* - 跨组件/页面共享 loading 状态
|
|
1483
|
-
* - 多种内置加载图标(spinner / dots / pulse / bar)
|
|
1484
|
-
* - 自定义样式、文本和显示位置
|
|
1485
|
-
* - 过渡动画配置(淡入淡出)
|
|
1486
|
-
* - 自动拦截 fetch/XHR 请求实现 loading 自动管理
|
|
1487
|
-
* - 延迟显示和最小显示时间机制
|
|
1488
|
-
* - 防抖隐藏避免闪烁
|
|
1489
|
-
* - 请求过滤(排除/包含特定 URL、前缀匹配、方法过滤)
|
|
1490
|
-
* - 生命周期回调(onBeforeShow / onShow / onBeforeHide / onHide / onDestroy)
|
|
1491
|
-
* - 背景模糊效果(backdrop-filter)
|
|
1492
|
-
* - 销毁时自动恢复原始 fetch/XHR
|
|
1493
|
-
* - SSR 环境安全检测
|
|
1494
|
-
* - 白屏阶段即显示 loading(defaultVisible + autoHideOn)
|
|
1495
|
-
*
|
|
1496
|
-
* 运行时 API:
|
|
1497
|
-
* ```typescript
|
|
1498
|
-
* // 显示 loading
|
|
1499
|
-
* window.__LOADING_MANAGER__.show('加载中...')
|
|
1500
|
-
*
|
|
1501
|
-
* // 隐藏 loading
|
|
1502
|
-
* window.__LOADING_MANAGER__.hide()
|
|
1503
|
-
*
|
|
1504
|
-
* // 强制隐藏(忽略最小显示时间)
|
|
1505
|
-
* window.__LOADING_MANAGER__.forceHide()
|
|
1506
|
-
*
|
|
1507
|
-
* // 更新文本
|
|
1508
|
-
* window.__LOADING_MANAGER__.updateText('正在处理...')
|
|
1509
|
-
*
|
|
1510
|
-
* // 检查状态
|
|
1511
|
-
* window.__LOADING_MANAGER__.isVisible()
|
|
1512
|
-
*
|
|
1513
|
-
* // 获取挂起请求数
|
|
1514
|
-
* window.__LOADING_MANAGER__.getPendingCount()
|
|
1515
|
-
*
|
|
1516
|
-
* // 销毁(恢复原始 fetch/XHR)
|
|
1517
|
-
* window.__LOADING_MANAGER__.destroy()
|
|
1518
|
-
* ```
|
|
1519
|
-
*/
|
|
1520
|
-
declare const loadingManager: PluginFactory<LoadingManagerOptions, LoadingManagerOptions>;
|
|
1521
|
-
|
|
1522
|
-
/**
|
|
1523
|
-
* 版本来源类型
|
|
1524
|
-
*
|
|
1525
|
-
* @description
|
|
1526
|
-
* - 'define': 从 Vite define 注入的全局变量中读取(如 __APP_VERSION__)
|
|
1527
|
-
* - 'file': 从版本文件(如 version.json)中读取
|
|
1528
|
-
* - 'auto': 自动检测,优先使用 define,回退到 file
|
|
1529
|
-
*/
|
|
1530
|
-
type VersionSource = 'define' | 'file' | 'auto';
|
|
1531
|
-
/**
|
|
1532
|
-
* 更新提示 UI 样式
|
|
1533
|
-
*
|
|
1534
|
-
* @description
|
|
1535
|
-
* - 'modal': 居中弹窗,需用户手动操作
|
|
1536
|
-
* - 'banner': 顶部横幅,可自动消失或手动关闭
|
|
1537
|
-
* - 'toast': 底部轻提示,自动消失
|
|
1538
|
-
*/
|
|
1539
|
-
type PromptStyle = 'modal' | 'banner' | 'toast';
|
|
1540
|
-
/**
|
|
1541
|
-
* 版本更新检查器的配置选项接口
|
|
1542
|
-
*
|
|
1543
|
-
* @interface VersionUpdateCheckerOptions
|
|
1544
|
-
*/
|
|
1545
|
-
interface VersionUpdateCheckerOptions extends BasePluginOptions {
|
|
1546
|
-
/**
|
|
1547
|
-
* 当前版本号的来源
|
|
1548
|
-
*
|
|
1549
|
-
* @default 'auto'
|
|
1550
|
-
*/
|
|
1551
|
-
versionSource?: VersionSource;
|
|
1552
|
-
/**
|
|
1553
|
-
* define 模式下的全局变量名
|
|
1554
|
-
*
|
|
1555
|
-
* @description 当 versionSource 为 'define' 或 'auto' 时,
|
|
1556
|
-
* 从此全局变量读取当前构建版本号
|
|
1557
|
-
*
|
|
1558
|
-
* @default '__APP_VERSION__'
|
|
1559
|
-
*/
|
|
1560
|
-
defineName?: string;
|
|
1561
|
-
/**
|
|
1562
|
-
* 版本检查文件的 URL 路径
|
|
1563
|
-
*
|
|
1564
|
-
* @description 客户端将定期请求此 URL 获取最新版本号,
|
|
1565
|
-
* 并与当前版本号对比判断是否有更新
|
|
1566
|
-
*
|
|
1567
|
-
* @default '/version.json'
|
|
1568
|
-
*/
|
|
1569
|
-
checkUrl?: string;
|
|
1570
|
-
/**
|
|
1571
|
-
* 版本检查间隔时间(毫秒)
|
|
1572
|
-
*
|
|
1573
|
-
* @default 300000(5 分钟)
|
|
1574
|
-
*/
|
|
1575
|
-
checkInterval?: number;
|
|
1576
|
-
/**
|
|
1577
|
-
* 页面可见性变化时是否立即检查
|
|
1578
|
-
*
|
|
1579
|
-
* @description 当用户从其他标签页切回时,立即检查版本更新,
|
|
1580
|
-
* 而不是等待下一个定时周期
|
|
1581
|
-
*
|
|
1582
|
-
* @default true
|
|
1583
|
-
*/
|
|
1584
|
-
checkOnVisibilityChange?: boolean;
|
|
1585
|
-
/**
|
|
1586
|
-
* 是否在开发模式下启用版本检查
|
|
1587
|
-
*
|
|
1588
|
-
* @default false
|
|
1589
|
-
*/
|
|
1590
|
-
enableInDev?: boolean;
|
|
1591
|
-
/**
|
|
1592
|
-
* 更新提示 UI 样式
|
|
1593
|
-
*
|
|
1594
|
-
* @default 'modal'
|
|
1595
|
-
*/
|
|
1596
|
-
promptStyle?: PromptStyle;
|
|
1597
|
-
/**
|
|
1598
|
-
* 更新提示消息文本
|
|
1599
|
-
*
|
|
1600
|
-
* @default '发现新版本,是否立即刷新获取最新内容?'
|
|
1601
|
-
*/
|
|
1602
|
-
promptMessage?: string;
|
|
1603
|
-
/**
|
|
1604
|
-
* 刷新按钮文本
|
|
1605
|
-
*
|
|
1606
|
-
* @default '立即刷新'
|
|
1607
|
-
*/
|
|
1608
|
-
refreshButtonText?: string;
|
|
1609
|
-
/**
|
|
1610
|
-
* 忽略按钮文本
|
|
1611
|
-
*
|
|
1612
|
-
* @default '稍后再说'
|
|
1613
|
-
*/
|
|
1614
|
-
dismissButtonText?: string;
|
|
1615
|
-
/**
|
|
1616
|
-
* 自定义提示 UI 的 HTML 模板
|
|
1617
|
-
*
|
|
1618
|
-
* @description 替换内置的提示 UI,模板中可使用以下占位符:
|
|
1619
|
-
* - {{message}}: 提示消息
|
|
1620
|
-
* - {{currentVersion}}: 当前版本号
|
|
1621
|
-
* - {{newVersion}}: 新版本号
|
|
1622
|
-
* - {{refreshButton}}: 刷新按钮
|
|
1623
|
-
* - {{dismissButton}}: 忽略按钮
|
|
1624
|
-
*
|
|
1625
|
-
* 模板中不允许包含 <script> 标签
|
|
1626
|
-
*/
|
|
1627
|
-
customPromptTemplate?: string;
|
|
1628
|
-
/**
|
|
1629
|
-
* 自定义样式字符串
|
|
1630
|
-
*
|
|
1631
|
-
* @description 追加到内置样式之后的自定义 CSS
|
|
1632
|
-
*/
|
|
1633
|
-
customStyle?: string;
|
|
1634
|
-
/**
|
|
1635
|
-
* 发现新版本时的回调(函数体字符串)
|
|
1636
|
-
*
|
|
1637
|
-
* @description 回调以函数体字符串形式提供,因为需要注入到客户端代码中。
|
|
1638
|
-
* 可用变量:currentVersion、newVersion
|
|
1639
|
-
*
|
|
1640
|
-
* @example 'console.log("新版本:", newVersion); return true;'
|
|
1641
|
-
*/
|
|
1642
|
-
onUpdateAvailable?: string;
|
|
1643
|
-
/**
|
|
1644
|
-
* 用户选择刷新时的回调(函数体字符串)
|
|
1645
|
-
*
|
|
1646
|
-
* @example 'console.log("用户选择刷新");'
|
|
1647
|
-
*/
|
|
1648
|
-
onRefresh?: string;
|
|
1649
|
-
/**
|
|
1650
|
-
* 用户选择忽略时的回调(函数体字符串)
|
|
1651
|
-
*
|
|
1652
|
-
* @example 'console.log("用户选择忽略");'
|
|
1653
|
-
*/
|
|
1654
|
-
onDismiss?: string;
|
|
1655
|
-
}
|
|
1656
|
-
|
|
1657
|
-
/**
|
|
1658
|
-
* 版本更新检查器插件
|
|
1659
|
-
*
|
|
1660
|
-
* @param options - 插件配置选项,详见 {@link VersionUpdateCheckerOptions}
|
|
1661
|
-
* @returns Vite 插件实例
|
|
1662
|
-
*
|
|
1663
|
-
* @example
|
|
1664
|
-
* ```typescript
|
|
1665
|
-
* // 基本使用 — 配合 generateVersion 插件
|
|
1666
|
-
* generateVersion({
|
|
1667
|
-
* format: 'datetime',
|
|
1668
|
-
* outputType: 'both',
|
|
1669
|
-
* defineName: '__APP_VERSION__'
|
|
1670
|
-
* }),
|
|
1671
|
-
* versionUpdateChecker()
|
|
1672
|
-
*
|
|
1673
|
-
* // 自定义检查间隔和提示样式
|
|
1674
|
-
* versionUpdateChecker({
|
|
1675
|
-
* checkInterval: 60000, // 1 分钟检查一次
|
|
1676
|
-
* promptStyle: 'banner' // 顶部横幅提示
|
|
1677
|
-
* })
|
|
1678
|
-
*
|
|
1679
|
-
* // 自定义提示消息和回调
|
|
1680
|
-
* versionUpdateChecker({
|
|
1681
|
-
* promptMessage: '系统已更新,请刷新页面',
|
|
1682
|
-
* onUpdateAvailable: 'console.log("新版本:", newVersion); return true;',
|
|
1683
|
-
* onRefresh: 'console.log("用户选择刷新");',
|
|
1684
|
-
* onDismiss: 'console.log("用户选择忽略");'
|
|
1685
|
-
* })
|
|
1686
|
-
*
|
|
1687
|
-
* // 开发模式也启用
|
|
1688
|
-
* versionUpdateChecker({
|
|
1689
|
-
* enableInDev: true,
|
|
1690
|
-
* checkInterval: 10000
|
|
1691
|
-
* })
|
|
1692
|
-
*
|
|
1693
|
-
* // 自定义 UI 模板
|
|
1694
|
-
* versionUpdateChecker({
|
|
1695
|
-
* customPromptTemplate: '<div class="my-update-prompt">{{message}} {{refreshButton}}</div>',
|
|
1696
|
-
* customStyle: '.my-update-prompt { background: #333; color: #fff; }'
|
|
1697
|
-
* })
|
|
1698
|
-
* ```
|
|
1699
|
-
*
|
|
1700
|
-
* @remarks
|
|
1701
|
-
* 该插件通常与 `generateVersion` 插件配合使用:
|
|
1702
|
-
* - `generateVersion` 负责在构建时生成版本号并输出到 `version.json` 文件和全局变量
|
|
1703
|
-
* - `versionUpdateChecker` 负责在运行时定期检查版本号变更并提示用户刷新
|
|
1704
|
-
*
|
|
1705
|
-
* 工作原理:
|
|
1706
|
-
* 1. 页面加载时,从全局变量(如 `__APP_VERSION__`)读取当前版本号
|
|
1707
|
-
* 2. 定期请求 `version.json` 获取最新版本号
|
|
1708
|
-
* 3. 当版本号不一致时,显示更新提示 UI
|
|
1709
|
-
* 4. 用户点击"立即刷新"后执行 `location.reload()`
|
|
1710
|
-
* 5. 用户点击"稍后再说"后隐藏提示,本次会话不再提醒
|
|
1711
|
-
* 6. 页面可见性变化时(如从其他标签页切回)立即检查更新
|
|
1712
|
-
*/
|
|
1713
|
-
declare const versionUpdateChecker: PluginFactory<VersionUpdateCheckerOptions, VersionUpdateCheckerOptions>;
|
|
1714
|
-
|
|
1715
|
-
export { buildProgress, copyFile, faviconManager, generateRouter, generateVersion, loadingManager, versionUpdateChecker };
|
|
1716
|
-
export type { AutoBindMode, AutoHideOn, BuildPhase, BuildProgressOptions, CopyFileOptions, DebounceHide, DelayShow, FaviconManagerOptions, GenerateRouterOptions, GenerateVersionOptions, Icon, LoadingCallbacks, LoadingManager, LoadingManagerOptions, LoadingPosition, LoadingStyle, MinDisplayTime, NameStrategy, OutputFormat, OutputType, ProgressFormat, ProgressTheme, PromptStyle, RequestFilter, RouteConfig, RouteMeta, SpinnerType, TransitionConfig, UniAppPageConfig, UniAppPagesJson, UniAppTabBarConfig, VersionFormat, VersionSource, VersionUpdateCheckerOptions };
|
|
13
|
+
import '../shared/vite-plugin.DRRlWY8P.cjs';
|