uniky 1.0.12 → 1.0.13
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/index.js +388 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/hook/index.d.ts +2 -0
- package/dist/lib/hook/index.d.ts.map +1 -0
- package/dist/lib/hook/index.js +3 -0
- package/dist/lib/hook/index.js.map +1 -0
- package/dist/lib/hook/useParam.d.ts +19 -0
- package/dist/lib/hook/useParam.d.ts.map +1 -0
- package/dist/lib/hook/useParam.js +102 -0
- package/dist/lib/hook/useParam.js.map +1 -0
- package/dist/lib/http/index.d.ts +2 -0
- package/dist/lib/http/index.d.ts.map +1 -0
- package/dist/lib/http/index.js +3 -0
- package/dist/lib/http/index.js.map +1 -0
- package/dist/lib/http/ky.d.ts +53 -0
- package/dist/lib/http/ky.d.ts.map +1 -0
- package/dist/lib/http/ky.js +323 -0
- package/dist/lib/http/ky.js.map +1 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +4 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/plugin/global.defined.d.ts +3 -0
- package/dist/plugin/global.defined.d.ts.map +1 -0
- package/dist/plugin/global.defined.js +284 -0
- package/dist/plugin/global.defined.js.map +1 -0
- package/dist/plugin/index.d.ts +11 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +16 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/lib.defined.d.ts +2 -0
- package/dist/plugin/lib.defined.d.ts.map +1 -0
- package/dist/plugin/lib.defined.js +2 -0
- package/dist/plugin/lib.defined.js.map +1 -0
- package/dist/plugin/pages.defined.d.ts +6 -0
- package/dist/plugin/pages.defined.d.ts.map +1 -0
- package/dist/plugin/pages.defined.js +230 -0
- package/dist/plugin/pages.defined.js.map +1 -0
- package/package.json +18 -11
- package/src/lib/hook/index.ts +0 -2
- package/src/lib/hook/useParam.ts +0 -114
- package/src/lib/http/index.ts +0 -2
- package/src/lib/http/ky.ts +0 -454
- package/src/lib/index.ts +0 -3
- package/src/plugin/_pages.md +0 -37
- package/src/plugin/global.defined.ts +0 -333
- package/src/plugin/index.ts +0 -29
- package/src/plugin/lib.defined.ts +0 -2
- package/src/plugin/pages.defined.ts +0 -275
- package/src/types/uni-app.d.ts +0 -75
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
// 该插件用于作为 vite.config.ts 中 作为插件;
|
|
2
|
+
// 该插件用于收集 src/autoGen/global文件夹下的ts文件 所有export 导出的内容, 并将其合并为一个全局定义文件 src/autoGen/global.d.ts 文件 同时,生成一个 /src/autoGen/global.install.ts 文件.
|
|
3
|
+
// 以便在项目中全局使用这些类型定义,避免了手动维护全局类型定义文件的麻烦。
|
|
4
|
+
import * as fs from 'node:fs';
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
export default function globalDefinedPlugin() {
|
|
7
|
+
const globalDir = 'src/autoGen/global';
|
|
8
|
+
const globalDtsPath = 'src/autoGen/global.d.ts';
|
|
9
|
+
const installTsPath = 'src/autoGen/global.install.ts';
|
|
10
|
+
/**
|
|
11
|
+
* 递归获取目录下所有 .ts 文件(排除 .d.ts 和 install.ts)
|
|
12
|
+
*/
|
|
13
|
+
function getTsFiles(dir) {
|
|
14
|
+
const files = [];
|
|
15
|
+
if (!fs.existsSync(dir)) {
|
|
16
|
+
return files;
|
|
17
|
+
}
|
|
18
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
19
|
+
for (const entry of entries) {
|
|
20
|
+
const fullPath = path.join(dir, entry.name);
|
|
21
|
+
if (entry.isDirectory()) {
|
|
22
|
+
files.push(...getTsFiles(fullPath));
|
|
23
|
+
}
|
|
24
|
+
else if (entry.isFile() && entry.name.endsWith('.ts') && !entry.name.endsWith('.d.ts') && entry.name !== 'global.install.ts') {
|
|
25
|
+
files.push(fullPath);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return files;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 解析 TypeScript 文件,提取所有 export 的内容
|
|
32
|
+
*/
|
|
33
|
+
function parseExports(filePath) {
|
|
34
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
35
|
+
const exports = [];
|
|
36
|
+
// 匹配 export default
|
|
37
|
+
const defaultExportRegex = /export\s+default\s+(function|class|const|let|var)?\s*([a-zA-Z_$][a-zA-Z0-9_$]*)?/g;
|
|
38
|
+
let match;
|
|
39
|
+
while ((match = defaultExportRegex.exec(content)) !== null) {
|
|
40
|
+
if (match[2]) {
|
|
41
|
+
exports.push({
|
|
42
|
+
name: match[2],
|
|
43
|
+
type: match[1] || 'const',
|
|
44
|
+
isDefault: true,
|
|
45
|
+
filePath
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// 匹配 export function
|
|
50
|
+
const functionRegex = /export\s+(?:async\s+)?function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;
|
|
51
|
+
while ((match = functionRegex.exec(content)) !== null) {
|
|
52
|
+
exports.push({
|
|
53
|
+
name: match[1],
|
|
54
|
+
type: 'function',
|
|
55
|
+
isDefault: false,
|
|
56
|
+
filePath
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// 匹配 export const/let/var
|
|
60
|
+
const varRegex = /export\s+(?:const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;
|
|
61
|
+
while ((match = varRegex.exec(content)) !== null) {
|
|
62
|
+
exports.push({
|
|
63
|
+
name: match[1],
|
|
64
|
+
type: 'const',
|
|
65
|
+
isDefault: false,
|
|
66
|
+
filePath
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
// 匹配 export class
|
|
70
|
+
const classRegex = /export\s+(?:abstract\s+)?class\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;
|
|
71
|
+
while ((match = classRegex.exec(content)) !== null) {
|
|
72
|
+
exports.push({
|
|
73
|
+
name: match[1],
|
|
74
|
+
type: 'class',
|
|
75
|
+
isDefault: false,
|
|
76
|
+
filePath
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
// 匹配 export interface
|
|
80
|
+
const interfaceRegex = /export\s+interface\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;
|
|
81
|
+
while ((match = interfaceRegex.exec(content)) !== null) {
|
|
82
|
+
exports.push({
|
|
83
|
+
name: match[1],
|
|
84
|
+
type: 'interface',
|
|
85
|
+
isDefault: false,
|
|
86
|
+
filePath
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// 匹配 export type
|
|
90
|
+
const typeRegex = /export\s+type\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;
|
|
91
|
+
while ((match = typeRegex.exec(content)) !== null) {
|
|
92
|
+
exports.push({
|
|
93
|
+
name: match[1],
|
|
94
|
+
type: 'type',
|
|
95
|
+
isDefault: false,
|
|
96
|
+
filePath
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
// 匹配 export enum
|
|
100
|
+
const enumRegex = /export\s+(?:const\s+)?enum\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;
|
|
101
|
+
while ((match = enumRegex.exec(content)) !== null) {
|
|
102
|
+
exports.push({
|
|
103
|
+
name: match[1],
|
|
104
|
+
type: 'enum',
|
|
105
|
+
isDefault: false,
|
|
106
|
+
filePath
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
// 匹配 export { ... }
|
|
110
|
+
const namedExportRegex = /export\s*{([^}]+)}/g;
|
|
111
|
+
while ((match = namedExportRegex.exec(content)) !== null) {
|
|
112
|
+
const names = match[1].split(',').map(n => n.trim().split(/\s+as\s+/)[0].trim());
|
|
113
|
+
for (const name of names) {
|
|
114
|
+
if (name) {
|
|
115
|
+
exports.push({
|
|
116
|
+
name,
|
|
117
|
+
type: 'const',
|
|
118
|
+
isDefault: false,
|
|
119
|
+
filePath
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return exports;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 生成 global.d.ts 文件内容
|
|
128
|
+
*/
|
|
129
|
+
function generateGlobalDts(allExports) {
|
|
130
|
+
const imports = new Map();
|
|
131
|
+
// 按文件分组导出
|
|
132
|
+
for (const exp of allExports) {
|
|
133
|
+
const relativePath = path.relative('src/autoGen', exp.filePath).replace(/\\/g, '/').replace(/\.ts$/, '');
|
|
134
|
+
if (!imports.has(relativePath)) {
|
|
135
|
+
imports.set(relativePath, new Set());
|
|
136
|
+
}
|
|
137
|
+
if (!exp.isDefault) {
|
|
138
|
+
imports.get(relativePath).add(exp.name);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
let content = '// 自动生成的全局类型定义文件\n';
|
|
142
|
+
content += '// 请勿手动修改\n\n';
|
|
143
|
+
// 生成 import 语句
|
|
144
|
+
for (const [filePath, names] of imports) {
|
|
145
|
+
if (names.size > 0) {
|
|
146
|
+
content += `import type { ${Array.from(names).join(', ')} } from './${filePath}';\n`;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
content += '\n';
|
|
150
|
+
// 生成全局声明
|
|
151
|
+
content += 'declare global {\n';
|
|
152
|
+
// 对于函数、常量、类等,添加到全局
|
|
153
|
+
const globalItems = allExports.filter(exp => !exp.isDefault && exp.type !== 'interface' && exp.type !== 'type');
|
|
154
|
+
if (globalItems.length > 0) {
|
|
155
|
+
for (const exp of globalItems) {
|
|
156
|
+
if (exp.type === 'function') {
|
|
157
|
+
content += ` const ${exp.name}: typeof import('./${path.relative('src/autoGen', exp.filePath).replace(/\\/g, '/').replace(/\.ts$/, '')}').${exp.name};\n`;
|
|
158
|
+
}
|
|
159
|
+
else if (exp.type === 'const') {
|
|
160
|
+
content += ` const ${exp.name}: typeof import('./${path.relative('src/autoGen', exp.filePath).replace(/\\/g, '/').replace(/\.ts$/, '')}').${exp.name};\n`;
|
|
161
|
+
}
|
|
162
|
+
else if (exp.type === 'class') {
|
|
163
|
+
content += ` const ${exp.name}: typeof import('./${path.relative('src/autoGen', exp.filePath).replace(/\\/g, '/').replace(/\.ts$/, '')}').${exp.name};\n`;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
content += '}\n\n';
|
|
168
|
+
content += 'export {};\n';
|
|
169
|
+
return content;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* 生成 global.install.ts 文件内容
|
|
173
|
+
*/
|
|
174
|
+
function generateInstallTs(allExports) {
|
|
175
|
+
const imports = new Map();
|
|
176
|
+
// 按文件分组导出
|
|
177
|
+
for (const exp of allExports) {
|
|
178
|
+
const relativePath = './global/' + path.relative(path.join('src', 'autoGen', 'global'), exp.filePath).replace(/\\/g, '/').replace(/\.ts$/, '');
|
|
179
|
+
if (!imports.has(relativePath)) {
|
|
180
|
+
imports.set(relativePath, { names: new Set(), hasDefault: false });
|
|
181
|
+
}
|
|
182
|
+
const importInfo = imports.get(relativePath);
|
|
183
|
+
if (exp.isDefault) {
|
|
184
|
+
importInfo.hasDefault = true;
|
|
185
|
+
importInfo.defaultName = exp.name;
|
|
186
|
+
}
|
|
187
|
+
else if (exp.type !== 'interface' && exp.type !== 'type') {
|
|
188
|
+
importInfo.names.add(exp.name);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
let content = '// 自动生成的全局安装文件\n';
|
|
192
|
+
content += '// 请勿手动修改\n\n';
|
|
193
|
+
// 生成 import 语句
|
|
194
|
+
for (const [filePath, info] of imports) {
|
|
195
|
+
if (info.hasDefault && info.names.size > 0) {
|
|
196
|
+
content += `import ${info.defaultName}, { ${Array.from(info.names).join(', ')} } from '${filePath}';\n`;
|
|
197
|
+
}
|
|
198
|
+
else if (info.hasDefault) {
|
|
199
|
+
content += `import ${info.defaultName} from '${filePath}';\n`;
|
|
200
|
+
}
|
|
201
|
+
else if (info.names.size > 0) {
|
|
202
|
+
content += `import { ${Array.from(info.names).join(', ')} } from '${filePath}';\n`;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
content += '\n';
|
|
206
|
+
content += '/**\n';
|
|
207
|
+
content += ' * 安装全局定义\n';
|
|
208
|
+
content += ' * 在 main.ts 中调用此函数以注册全局变量\n';
|
|
209
|
+
content += ' */\n';
|
|
210
|
+
content += 'export function installGlobals() {\n';
|
|
211
|
+
// 将导出的内容挂载到 globalThis
|
|
212
|
+
const globalItems = allExports.filter(exp => exp.type !== 'interface' && exp.type !== 'type');
|
|
213
|
+
for (const exp of globalItems) {
|
|
214
|
+
const name = exp.isDefault ? (imports.get('./global/' + path.relative(path.join('src', 'autoGen', 'global'), exp.filePath).replace(/\\/g, '/').replace(/\.ts$/, ''))?.defaultName || exp.name) : exp.name;
|
|
215
|
+
content += ` (globalThis as any).${exp.name} = ${name};\n`;
|
|
216
|
+
}
|
|
217
|
+
content += '}\n';
|
|
218
|
+
return content;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* 生成所有文件
|
|
222
|
+
*/
|
|
223
|
+
function generate() {
|
|
224
|
+
try {
|
|
225
|
+
const tsFiles = getTsFiles(globalDir);
|
|
226
|
+
if (tsFiles.length === 0) {
|
|
227
|
+
console.log('[globalDefined] 未找到任何 TypeScript 文件');
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
// 收集所有导出
|
|
231
|
+
const allExports = [];
|
|
232
|
+
for (const file of tsFiles) {
|
|
233
|
+
const exports = parseExports(file);
|
|
234
|
+
allExports.push(...exports);
|
|
235
|
+
}
|
|
236
|
+
if (allExports.length === 0) {
|
|
237
|
+
console.log('[globalDefined] 未找到任何导出');
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
// 生成 global.d.ts
|
|
241
|
+
const dtsContent = generateGlobalDts(allExports);
|
|
242
|
+
fs.writeFileSync(globalDtsPath, dtsContent, 'utf-8');
|
|
243
|
+
console.log(`[globalDefined] 已生成 ${globalDtsPath}`);
|
|
244
|
+
// 生成 global.install.ts
|
|
245
|
+
const installContent = generateInstallTs(allExports);
|
|
246
|
+
fs.writeFileSync(installTsPath, installContent, 'utf-8');
|
|
247
|
+
console.log(`[globalDefined] 已生成 ${installTsPath}`);
|
|
248
|
+
console.log(`[globalDefined] 共处理 ${tsFiles.length} 个文件,${allExports.length} 个导出`);
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
console.error('[globalDefined] 生成失败:', error);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return {
|
|
255
|
+
name: 'vite-plugin-global-defined',
|
|
256
|
+
buildStart() {
|
|
257
|
+
// 构建开始时生成文件
|
|
258
|
+
generate();
|
|
259
|
+
},
|
|
260
|
+
configureServer(server) {
|
|
261
|
+
// 监听 src/autoGen/global 目录下的文件变化
|
|
262
|
+
server.watcher.add(globalDir);
|
|
263
|
+
server.watcher.on('change', (file) => {
|
|
264
|
+
if (file.includes('src/autoGen/global') && file.endsWith('.ts') && !file.endsWith('.d.ts') && !file.includes('global.install.ts')) {
|
|
265
|
+
console.log(`[globalDefined] 检测到文件变化: ${file}`);
|
|
266
|
+
generate();
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
server.watcher.on('add', (file) => {
|
|
270
|
+
if (file.includes('src/autoGen/global') && file.endsWith('.ts') && !file.endsWith('.d.ts') && !file.includes('global.install.ts')) {
|
|
271
|
+
console.log(`[globalDefined] 检测到新文件: ${file}`);
|
|
272
|
+
generate();
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
server.watcher.on('unlink', (file) => {
|
|
276
|
+
if (file.includes('src/autoGen/global') && file.endsWith('.ts') && !file.endsWith('.d.ts') && !file.includes('global.install.ts')) {
|
|
277
|
+
console.log(`[globalDefined] 检测到文件删除: ${file}`);
|
|
278
|
+
generate();
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=global.defined.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.defined.js","sourceRoot":"","sources":["../../src/plugin/global.defined.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
|
+
import pagesDefinedPlugin from './pages.defined';
|
|
3
|
+
import globalDefinedPlugin from './global.defined';
|
|
4
|
+
export interface UnikyPluginOptions {
|
|
5
|
+
enablePages?: boolean;
|
|
6
|
+
enableGlobal?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function unikyPlugin(options?: UnikyPluginOptions): Plugin[];
|
|
9
|
+
export { pagesDefinedPlugin, globalDefinedPlugin };
|
|
10
|
+
export default unikyPlugin;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,kBAAkB,MAAM,iBAAiB,CAAC;AACjD,OAAO,mBAAmB,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,EAAE,CActE;AAED,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AAEnD,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import pagesDefinedPlugin from './pages.defined';
|
|
2
|
+
import globalDefinedPlugin from './global.defined';
|
|
3
|
+
export function unikyPlugin(options = {}) {
|
|
4
|
+
const { enablePages = true, enableGlobal = true } = options;
|
|
5
|
+
const plugins = [];
|
|
6
|
+
if (enablePages) {
|
|
7
|
+
plugins.push(pagesDefinedPlugin());
|
|
8
|
+
}
|
|
9
|
+
if (enableGlobal) {
|
|
10
|
+
plugins.push(globalDefinedPlugin());
|
|
11
|
+
}
|
|
12
|
+
return plugins;
|
|
13
|
+
}
|
|
14
|
+
export { pagesDefinedPlugin, globalDefinedPlugin };
|
|
15
|
+
export default unikyPlugin;
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,MAAM,iBAAiB,CAAC;AACjD,OAAO,mBAAmB,MAAM,kBAAkB,CAAC;AAOnD,MAAM,UAAU,WAAW,CAAC,UAA8B,EAAE;IAC1D,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE5D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AAEnD,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.defined.d.ts","sourceRoot":"","sources":["../../src/plugin/lib.defined.ts"],"names":[],"mappings":"AACA,OAAO,EAAG,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.defined.js","sourceRoot":"","sources":["../../src/plugin/lib.defined.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.defined.d.ts","sourceRoot":"","sources":["../../src/plugin/pages.defined.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AA6OnC;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,IAAI,MAAM,CAkCnD"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* 移除 JSON 中的注释(支持 JSONC 格式)
|
|
5
|
+
*/
|
|
6
|
+
function stripJsonComments(jsonString) {
|
|
7
|
+
let result = '';
|
|
8
|
+
let inString = false;
|
|
9
|
+
let inSingleLineComment = false;
|
|
10
|
+
let inMultiLineComment = false;
|
|
11
|
+
let escapeNext = false;
|
|
12
|
+
for (let i = 0; i < jsonString.length; i++) {
|
|
13
|
+
const char = jsonString[i];
|
|
14
|
+
const nextChar = jsonString[i + 1];
|
|
15
|
+
// 处理转义字符
|
|
16
|
+
if (escapeNext) {
|
|
17
|
+
if (inString) {
|
|
18
|
+
result += char;
|
|
19
|
+
}
|
|
20
|
+
escapeNext = false;
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
if (char === '\\' && inString) {
|
|
24
|
+
result += char;
|
|
25
|
+
escapeNext = true;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
// 处理字符串
|
|
29
|
+
if (char === '"' && !inSingleLineComment && !inMultiLineComment) {
|
|
30
|
+
inString = !inString;
|
|
31
|
+
result += char;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
// 如果在字符串内,直接添加字符
|
|
35
|
+
if (inString) {
|
|
36
|
+
result += char;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
// 处理多行注释结束
|
|
40
|
+
if (inMultiLineComment) {
|
|
41
|
+
if (char === '*' && nextChar === '/') {
|
|
42
|
+
inMultiLineComment = false;
|
|
43
|
+
i++; // 跳过 '/'
|
|
44
|
+
}
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
// 处理单行注释结束
|
|
48
|
+
if (inSingleLineComment) {
|
|
49
|
+
if (char === '\n' || char === '\r') {
|
|
50
|
+
inSingleLineComment = false;
|
|
51
|
+
result += char; // 保留换行符
|
|
52
|
+
}
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
// 检测注释开始
|
|
56
|
+
if (char === '/') {
|
|
57
|
+
if (nextChar === '/') {
|
|
58
|
+
inSingleLineComment = true;
|
|
59
|
+
i++; // 跳过第二个 '/'
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (nextChar === '*') {
|
|
63
|
+
inMultiLineComment = true;
|
|
64
|
+
i++; // 跳过 '*'
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// 正常字符
|
|
69
|
+
result += char;
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 从 pages.json 提取所有页面路径
|
|
75
|
+
*/
|
|
76
|
+
function extractPagePaths(pagesJson) {
|
|
77
|
+
const pagePaths = [];
|
|
78
|
+
// 提取主包页面
|
|
79
|
+
if (pagesJson.pages && Array.isArray(pagesJson.pages)) {
|
|
80
|
+
pagesJson.pages.forEach((page) => {
|
|
81
|
+
if (page.path) {
|
|
82
|
+
pagePaths.push(page.path);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
// 提取分包页面
|
|
87
|
+
if (pagesJson.subPackages && Array.isArray(pagesJson.subPackages)) {
|
|
88
|
+
pagesJson.subPackages.forEach((subPackage) => {
|
|
89
|
+
const root = subPackage.root;
|
|
90
|
+
if (subPackage.pages && Array.isArray(subPackage.pages)) {
|
|
91
|
+
subPackage.pages.forEach((page) => {
|
|
92
|
+
if (page.path) {
|
|
93
|
+
const fullPath = `${root}/${page.path}`.replace(/\/+/g, '/');
|
|
94
|
+
pagePaths.push(fullPath);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return pagePaths;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 生成 TypeScript 代码
|
|
104
|
+
*/
|
|
105
|
+
function generateTypeScriptCode(pagePaths) {
|
|
106
|
+
const pagesArray = pagePaths.map((p) => `"${p}"`).join(', ');
|
|
107
|
+
return `// Auto-generated by vite-plugin-pages-defined
|
|
108
|
+
// Do not edit this file manually
|
|
109
|
+
|
|
110
|
+
export const _Pages = [${pagesArray}] as const;
|
|
111
|
+
export type _PagePath = typeof _Pages[number];
|
|
112
|
+
|
|
113
|
+
type RouteFunction = (path: _PagePath, options?: { query?: Record<string, any>, json?: Record<string, any> }) => void;
|
|
114
|
+
|
|
115
|
+
interface ToRouteInterface {
|
|
116
|
+
navigate: RouteFunction;
|
|
117
|
+
redirect: RouteFunction;
|
|
118
|
+
switchTab: RouteFunction;
|
|
119
|
+
reLaunch: RouteFunction;
|
|
120
|
+
back: (delta?: number) => void;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const buildUrl = (path: string, query?: Record<string, any>, json?: Record<string, any>): string => {
|
|
124
|
+
const fullPath = path.startsWith('/') ? path : \`/\${path}\`;
|
|
125
|
+
const params: string[] = [];
|
|
126
|
+
|
|
127
|
+
if (query && Object.keys(query).length > 0) {
|
|
128
|
+
Object.entries(query).forEach(([key, value]) => {
|
|
129
|
+
params.push(\`\${encodeURIComponent(key)}=\${encodeURIComponent(String(value))}\`);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (json && Object.keys(json).length > 0) {
|
|
134
|
+
const jsonStr = JSON.stringify(json);
|
|
135
|
+
params.push(\`json=\${encodeURIComponent(jsonStr)}\`);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return params.length > 0 ? \`\${fullPath}?\${params.join('&')}\` : fullPath;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
const ToRoute: ToRouteInterface = {
|
|
142
|
+
navigate: (path, options) => {
|
|
143
|
+
const url = buildUrl(path, options?.query, options?.json);
|
|
144
|
+
uni.navigateTo({ url });
|
|
145
|
+
},
|
|
146
|
+
redirect: (path, options) => {
|
|
147
|
+
const url = buildUrl(path, options?.query, options?.json);
|
|
148
|
+
uni.redirectTo({ url });
|
|
149
|
+
},
|
|
150
|
+
switchTab: (path, options) => {
|
|
151
|
+
const url = buildUrl(path, options?.query, options?.json);
|
|
152
|
+
uni.switchTab({ url });
|
|
153
|
+
},
|
|
154
|
+
reLaunch: (path, options) => {
|
|
155
|
+
const url = buildUrl(path, options?.query, options?.json);
|
|
156
|
+
uni.reLaunch({ url });
|
|
157
|
+
},
|
|
158
|
+
back: (delta = 1) => {
|
|
159
|
+
uni.navigateBack({ delta });
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
export const _To = ToRoute;
|
|
164
|
+
`;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* 生成 pages.ts 文件
|
|
168
|
+
*/
|
|
169
|
+
function generatePagesFile(srcDir, outputPath) {
|
|
170
|
+
try {
|
|
171
|
+
const pagesJsonPath = path.resolve(srcDir, 'pages.json');
|
|
172
|
+
// 读取 pages.json
|
|
173
|
+
if (!fs.existsSync(pagesJsonPath)) {
|
|
174
|
+
console.warn('[pages-defined] pages.json not found');
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const pagesJsonContent = fs.readFileSync(pagesJsonPath, 'utf-8');
|
|
178
|
+
// 移除 JSON 注释后再解析
|
|
179
|
+
const cleanedJson = stripJsonComments(pagesJsonContent);
|
|
180
|
+
const pagesJson = JSON.parse(cleanedJson);
|
|
181
|
+
// 提取所有页面路径
|
|
182
|
+
const pagePaths = extractPagePaths(pagesJson);
|
|
183
|
+
// 生成 TypeScript 代码
|
|
184
|
+
const code = generateTypeScriptCode(pagePaths);
|
|
185
|
+
// 确保输出目录存在
|
|
186
|
+
const outputDir = path.dirname(outputPath);
|
|
187
|
+
if (!fs.existsSync(outputDir)) {
|
|
188
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
189
|
+
}
|
|
190
|
+
// 写入文件
|
|
191
|
+
fs.writeFileSync(outputPath, code, 'utf-8');
|
|
192
|
+
console.log(`[pages-defined] Generated ${outputPath} with ${pagePaths.length} pages`);
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
console.error('[pages-defined] Error generating pages.ts:', error);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Vite 插件:从 pages.json 生成类型安全的路由定义
|
|
200
|
+
*/
|
|
201
|
+
export default function pagesDefinedPlugin() {
|
|
202
|
+
let srcDir;
|
|
203
|
+
let outputPath;
|
|
204
|
+
return {
|
|
205
|
+
name: 'vite-plugin-pages-defined',
|
|
206
|
+
configResolved(config) {
|
|
207
|
+
// 确定 src 目录和输出路径
|
|
208
|
+
srcDir = path.resolve(config.root, 'src');
|
|
209
|
+
outputPath = path.resolve(srcDir, 'autoGen/global/pages.ts');
|
|
210
|
+
},
|
|
211
|
+
buildStart() {
|
|
212
|
+
// 在构建开始时生成 pages.ts
|
|
213
|
+
generatePagesFile(srcDir, outputPath);
|
|
214
|
+
},
|
|
215
|
+
configureServer(server) {
|
|
216
|
+
// 监听 pages.json 文件变化
|
|
217
|
+
const pagesJsonPath = path.resolve(srcDir, 'pages.json');
|
|
218
|
+
server.watcher.add(pagesJsonPath);
|
|
219
|
+
server.watcher.on('change', (file) => {
|
|
220
|
+
if (file === pagesJsonPath) {
|
|
221
|
+
console.log('[pages-defined] pages.json changed, regenerating pages.ts...');
|
|
222
|
+
generatePagesFile(srcDir, outputPath);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
// 初始生成
|
|
226
|
+
generatePagesFile(srcDir, outputPath);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=pages.defined.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.defined.js","sourceRoot":"","sources":["../../src/plugin/pages.defined.ts"],"names":[],"mappings":"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"}
|