@chuckcchen/vite-plugin 0.0.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/dist/bundler.d.ts +66 -0
- package/dist/bundler.d.ts.map +1 -0
- package/dist/bundler.js +229 -0
- package/dist/bundler.js.map +1 -0
- package/dist/core.d.ts +35 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +384 -0
- package/dist/core.js.map +1 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +265 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +164 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +262 -0
- package/dist/utils.js.map +1 -0
- package/package.json +50 -0
package/dist/utils.js
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EdgeOne Vite Plugin Adapter - 工具函数模块
|
|
3
|
+
*
|
|
4
|
+
* 本模块提供了一系列通用的工具函数,包括:
|
|
5
|
+
* - 日志记录
|
|
6
|
+
* - 文件系统操作(读写、复制、删除等)
|
|
7
|
+
* - 路径检测
|
|
8
|
+
* - 文件大小格式化
|
|
9
|
+
* - 条件等待等
|
|
10
|
+
*/
|
|
11
|
+
import fs from "fs/promises";
|
|
12
|
+
import path from "path";
|
|
13
|
+
/**
|
|
14
|
+
* 创建日志记录器实例
|
|
15
|
+
*
|
|
16
|
+
* @param verbose - 是否启用详细日志模式,默认为 false
|
|
17
|
+
* @returns 返回一个包含 log、verbose、warn、error 方法的日志对象
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* const logger = createLogger(true);
|
|
21
|
+
* logger.verbose("这条消息只在 verbose 模式下显示");
|
|
22
|
+
* logger.warn("这是一条警告消息");
|
|
23
|
+
*/
|
|
24
|
+
export function createLogger(verbose = false) {
|
|
25
|
+
return {
|
|
26
|
+
// 普通日志,始终输出
|
|
27
|
+
log: (message, ...args) => {
|
|
28
|
+
console.log(`[EdgeOne Adapter] ${message}`, ...args);
|
|
29
|
+
},
|
|
30
|
+
// 详细日志,仅在 verbose 模式下输出
|
|
31
|
+
verbose: (message, ...args) => {
|
|
32
|
+
if (verbose) {
|
|
33
|
+
console.log(`[EdgeOne Adapter] ${message}`, ...args);
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
// 警告日志,带有警告图标
|
|
37
|
+
warn: (message, ...args) => {
|
|
38
|
+
console.warn(`[EdgeOne Adapter] ⚠️ ${message}`, ...args);
|
|
39
|
+
},
|
|
40
|
+
// 错误日志,带有错误图标
|
|
41
|
+
error: (message, ...args) => {
|
|
42
|
+
console.error(`[EdgeOne Adapter] ❌ ${message}`, ...args);
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 检查指定路径是否存在
|
|
48
|
+
*
|
|
49
|
+
* @param filePath - 要检查的文件或目录路径
|
|
50
|
+
* @returns 如果路径存在返回 true,否则返回 false
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* if (await pathExists('/path/to/file')) {
|
|
54
|
+
* console.log('文件存在');
|
|
55
|
+
* }
|
|
56
|
+
*/
|
|
57
|
+
export async function pathExists(filePath) {
|
|
58
|
+
try {
|
|
59
|
+
await fs.access(filePath);
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 从候选路径列表中找到第一个存在的路径
|
|
68
|
+
*
|
|
69
|
+
* @param candidates - 候选路径数组,按优先级排序
|
|
70
|
+
* @returns 返回第一个存在的路径,如果都不存在则返回 null
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* const buildDir = await findExistingPath([
|
|
74
|
+
* '/project/dist',
|
|
75
|
+
* '/project/build',
|
|
76
|
+
* '/project/output'
|
|
77
|
+
* ]);
|
|
78
|
+
*/
|
|
79
|
+
export async function findExistingPath(candidates) {
|
|
80
|
+
for (const candidate of candidates) {
|
|
81
|
+
if (await pathExists(candidate)) {
|
|
82
|
+
return candidate;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 递归复制目录
|
|
89
|
+
* 将源目录的所有内容复制到目标目录
|
|
90
|
+
*
|
|
91
|
+
* @param src - 源目录路径
|
|
92
|
+
* @param dest - 目标目录路径
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* await copyDirectory('dist/client', '.edgeone/assets');
|
|
96
|
+
*/
|
|
97
|
+
export async function copyDirectory(src, dest) {
|
|
98
|
+
await fs.cp(src, dest, { recursive: true });
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 清理目录(删除后重新创建)
|
|
102
|
+
* 用于确保目录为空的干净状态
|
|
103
|
+
*
|
|
104
|
+
* @param dir - 要清理的目录路径
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* await cleanDirectory('.edgeone');
|
|
108
|
+
*/
|
|
109
|
+
export async function cleanDirectory(dir) {
|
|
110
|
+
await fs.rm(dir, { recursive: true, force: true });
|
|
111
|
+
await fs.mkdir(dir, { recursive: true });
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 确保目录存在
|
|
115
|
+
* 如果目录不存在则递归创建
|
|
116
|
+
*
|
|
117
|
+
* @param dir - 目录路径
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* await ensureDirectory('.edgeone/server-handler');
|
|
121
|
+
*/
|
|
122
|
+
export async function ensureDirectory(dir) {
|
|
123
|
+
await fs.mkdir(dir, { recursive: true });
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 读取文件内容为字符串
|
|
127
|
+
*
|
|
128
|
+
* @param filePath - 文件路径
|
|
129
|
+
* @returns 文件内容字符串(UTF-8 编码)
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* const content = await readFile('dist/server/index.js');
|
|
133
|
+
*/
|
|
134
|
+
export async function readFile(filePath) {
|
|
135
|
+
return fs.readFile(filePath, "utf-8");
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* 将内容写入文件
|
|
139
|
+
* 如果父目录不存在会自动创建
|
|
140
|
+
*
|
|
141
|
+
* @param filePath - 文件路径
|
|
142
|
+
* @param content - 要写入的内容
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* await writeFile('.edgeone/meta.json', JSON.stringify(config));
|
|
146
|
+
*/
|
|
147
|
+
export async function writeFile(filePath, content) {
|
|
148
|
+
// 确保父目录存在
|
|
149
|
+
await ensureDirectory(path.dirname(filePath));
|
|
150
|
+
await fs.writeFile(filePath, content);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* 删除文件
|
|
154
|
+
*
|
|
155
|
+
* @param filePath - 要删除的文件路径
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* await deleteFile('server-wrapper.temp.js');
|
|
159
|
+
*/
|
|
160
|
+
export async function deleteFile(filePath) {
|
|
161
|
+
await fs.unlink(filePath);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* 格式化文件大小为人类可读的字符串
|
|
165
|
+
*
|
|
166
|
+
* @param bytes - 字节数
|
|
167
|
+
* @returns 格式化后的字符串,如 "1.5 KB"、"2.3 MB"
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* formatSize(1536); // "1.5 KB"
|
|
171
|
+
* formatSize(2457600); // "2.34 MB"
|
|
172
|
+
*/
|
|
173
|
+
export function formatSize(bytes) {
|
|
174
|
+
if (bytes === 0)
|
|
175
|
+
return "0 B";
|
|
176
|
+
const k = 1024;
|
|
177
|
+
const sizes = ["B", "KB", "MB", "GB"];
|
|
178
|
+
// 计算适合的单位级别
|
|
179
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
180
|
+
// 转换并保留两位小数
|
|
181
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* 等待条件满足(带重试机制)
|
|
185
|
+
* 用于等待异步操作完成,如文件写入完成
|
|
186
|
+
*
|
|
187
|
+
* @param condition - 返回布尔值的异步条件函数
|
|
188
|
+
* @param options - 配置选项
|
|
189
|
+
* @param options.maxRetries - 最大重试次数,默认 15 次
|
|
190
|
+
* @param options.delay - 每次重试的间隔时间(毫秒),默认 300ms
|
|
191
|
+
* @returns 条件满足返回 true,超时返回 false
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* const ready = await waitFor(
|
|
195
|
+
* async () => await pathExists('dist/index.html'),
|
|
196
|
+
* { maxRetries: 10, delay: 500 }
|
|
197
|
+
* );
|
|
198
|
+
*/
|
|
199
|
+
export async function waitFor(condition, options = {}) {
|
|
200
|
+
const { maxRetries = 15, delay = 300 } = options;
|
|
201
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
202
|
+
// 检查条件是否满足
|
|
203
|
+
if (await condition()) {
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
// 如果不是最后一次尝试,则等待后重试
|
|
207
|
+
if (i < maxRetries - 1) {
|
|
208
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* 列出目录中的文件和子目录名称
|
|
215
|
+
*
|
|
216
|
+
* @param dir - 目录路径
|
|
217
|
+
* @returns 文件和目录名称数组,如果目录不存在则返回空数组
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* const files = await listFiles('dist/client');
|
|
221
|
+
* // ['index.html', 'assets', 'favicon.ico']
|
|
222
|
+
*/
|
|
223
|
+
export async function listFiles(dir) {
|
|
224
|
+
try {
|
|
225
|
+
return await fs.readdir(dir);
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
return [];
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* 递归统计目录中的文件数量
|
|
233
|
+
*
|
|
234
|
+
* @param dir - 目录路径
|
|
235
|
+
* @returns 文件总数(不包括目录)
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* const count = await countFiles('dist');
|
|
239
|
+
* console.log(`构建产物包含 ${count} 个文件`);
|
|
240
|
+
*/
|
|
241
|
+
export async function countFiles(dir) {
|
|
242
|
+
let count = 0;
|
|
243
|
+
try {
|
|
244
|
+
// 获取目录内容,包含类型信息
|
|
245
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
246
|
+
for (const entry of entries) {
|
|
247
|
+
if (entry.isDirectory()) {
|
|
248
|
+
// 递归统计子目录
|
|
249
|
+
count += await countFiles(path.join(dir, entry.name));
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
// 文件计数加一
|
|
253
|
+
count++;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
// 忽略错误(如目录不存在)
|
|
259
|
+
}
|
|
260
|
+
return count;
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@chuckcchen/vite-plugin",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "Core adapter plugin for EdgeOne platform - handles build artifacts, bundling, and deployment configuration",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"prepublishOnly": "npm run build",
|
|
20
|
+
"release": "npm run build && npm version patch && npm publish",
|
|
21
|
+
"release:minor": "npm run build && npm version minor && npm publish",
|
|
22
|
+
"release:major": "npm run build && npm version major && npm publish"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"vite",
|
|
26
|
+
"vite-plugin",
|
|
27
|
+
"edgeone",
|
|
28
|
+
"adapter",
|
|
29
|
+
"core"
|
|
30
|
+
],
|
|
31
|
+
"author": "chuckcchen",
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"esbuild": "^0.20.0"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^22.0.0",
|
|
41
|
+
"typescript": "^5.9.0",
|
|
42
|
+
"vite": "^7.1.0"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=18.0.0"
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public"
|
|
49
|
+
}
|
|
50
|
+
}
|