@shuiyangsuan/cli 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -45,6 +45,9 @@ by delete my-folder/
45
45
  # 使用别名
46
46
  by rm file.txt
47
47
  by del file.txt
48
+
49
+ # 无参数调用(使用配置文件中的 defaultPatterns)
50
+ by delete
48
51
  ```
49
52
 
50
53
  ### Glob 模式匹配
@@ -70,7 +73,7 @@ by delete "*.tmp" "*.cache" "dist/**"
70
73
  by delete "*.tmp" --force
71
74
  by delete "*.tmp" -f
72
75
 
73
- # 预览模式,仅查看将要删除的内容
76
+ # 预览模式,仅显示将要删除的内容
74
77
  by delete "*.tmp" --dry-run
75
78
  by delete "*.tmp" -n
76
79
 
@@ -96,6 +99,198 @@ by delete "*.tmp" "*.log" --force --verbose
96
99
  by delete "dist" "build" ".next" --dry-run
97
100
  ```
98
101
 
102
+ ## 🔧 编程模式
103
+
104
+ 本 CLI 工具支持以编程方式调用,方便在其他 Node.js 项目中使用。
105
+
106
+ ### 安装
107
+
108
+ ```bash
109
+ npm install @shuiyangsuan/cli
110
+ ```
111
+
112
+ ### 基础用法
113
+
114
+ ```typescript
115
+ import { executeDelete, readConfig } from '@shuiyangsuan/cli';
116
+
117
+ // 读取配置
118
+ const config = await readConfig();
119
+
120
+ // 执行删除
121
+ const result = await executeDelete(['node_modules', 'dist'], config, {
122
+ force: true, // 强制删除,不提示确认
123
+ verbose: true, // 详细输出
124
+ });
125
+
126
+ console.log(`成功删除 ${result.deletedCount} 个文件`);
127
+ console.log('删除的文件:', result.deletedFiles);
128
+ ```
129
+
130
+ ### 预览模式
131
+
132
+ ```typescript
133
+ import { executeDelete, readConfig } from '@shuiyangsuan/cli';
134
+
135
+ const config = await readConfig();
136
+
137
+ // 预览将要删除的内容,不实际删除
138
+ const result = await executeDelete(['**/*.log', 'dist'], config, {
139
+ dryRun: true,
140
+ verbose: true,
141
+ });
142
+
143
+ console.log('将要删除的文件:', result.deletedFiles);
144
+ ```
145
+
146
+ ### 仅收集文件列表
147
+
148
+ ```typescript
149
+ import { collectFilesToDelete } from '@shuiyangsuan/cli';
150
+
151
+ // 仅收集匹配的文件列表,不执行删除
152
+ const files = await collectFilesToDelete(['**/*.ts', '**/*.js'], {});
153
+
154
+ console.log('匹配的文件:');
155
+ files.forEach((file) => console.log(` - ${file}`));
156
+ ```
157
+
158
+ ### 在构建脚本中使用
159
+
160
+ ```typescript
161
+ // build.ts
162
+ import { executeDelete, readConfig } from '@shuiyangsuan/cli';
163
+ import { execSync } from 'child_process';
164
+
165
+ async function build() {
166
+ const config = await readConfig();
167
+
168
+ // 清理旧的构建产物
169
+ await executeDelete(['dist', 'build'], config, {
170
+ force: true,
171
+ verbose: true,
172
+ });
173
+
174
+ // 执行构建
175
+ execSync('tsc', { stdio: 'inherit' });
176
+
177
+ console.log('构建完成!');
178
+ }
179
+
180
+ build().catch(console.error);
181
+ ```
182
+
183
+ ### 完整示例 - 带错误处理
184
+
185
+ ```typescript
186
+ import { executeDelete, readConfig, type DeleteResult } from '@shuiyangsuan/cli';
187
+
188
+ async function cleanup() {
189
+ try {
190
+ const config = await readConfig();
191
+
192
+ const result: DeleteResult = await executeDelete(['node_modules', 'dist', '**/*.log'], config, {
193
+ force: false, // 需要确认
194
+ verbose: true, // 详细输出
195
+ });
196
+
197
+ console.log('✅ 清理完成!');
198
+ console.log(`成功:${result.deletedCount}, 失败:${result.failedCount}`);
199
+
200
+ if (result.errors.length > 0) {
201
+ console.error('错误信息:');
202
+ result.errors.forEach((err) => console.error(` - ${err}`));
203
+ }
204
+ } catch (error) {
205
+ console.error('清理失败:', (error as Error).message);
206
+ process.exit(1);
207
+ }
208
+ }
209
+
210
+ cleanup();
211
+ ```
212
+
213
+ ### API 文档
214
+
215
+ #### executeDelete(patterns, config, options?)
216
+
217
+ 执行删除操作的主要函数。
218
+
219
+ **参数:**
220
+
221
+ - `patterns`: string[] - 要删除的文件或文件夹路径/模式
222
+ - `config`: CliConfig - CLI 配置对象
223
+ - `options`: DeleteOptions (可选) - 删除选项
224
+
225
+ **返回值:** Promise<DeleteResult>
226
+
227
+ **DeleteResult 接口:**
228
+
229
+ ```typescript
230
+ {
231
+ deletedCount: number; // 成功删除的数量
232
+ failedCount: number; // 失败的数量
233
+ deletedFiles: string[]; // 删除的文件列表
234
+ errors: string[]; // 错误信息列表
235
+ }
236
+ ```
237
+
238
+ #### DeleteOptions
239
+
240
+ ```typescript
241
+ {
242
+ force?: boolean; // 强制删除,不提示确认
243
+ dryRun?: boolean; // 预览模式,不实际删除
244
+ verbose?: boolean; // 详细输出模式
245
+ useDefaults?: boolean; // 使用配置文件中的默认模式
246
+ }
247
+ ```
248
+
249
+ #### collectFilesToDelete(patterns, options)
250
+
251
+ 收集匹配的文件列表,但不执行删除。
252
+
253
+ **参数:**
254
+
255
+ - `patterns`: string[] - 文件或文件夹路径/模式
256
+ - `options`: DeleteOptions - 删除选项
257
+
258
+ **返回值:** Promise<string[]>
259
+
260
+ ### 导入类型
261
+
262
+ ```typescript
263
+ import type {
264
+ DeleteOptions, // 删除选项
265
+ DeleteResult, // 删除结果
266
+ CliConfig, // 配置类型
267
+ } from '@shuiyangsuan/cli';
268
+ ```
269
+
270
+ ## 📝 配置文件
271
+
272
+ 可以通过配置文件自定义默认行为。
273
+
274
+ ### 配置文件格式
275
+
276
+ 创建 `.clirc.json` 或 `cli.config.json`:
277
+
278
+ ```json
279
+ {
280
+ "defaultPatterns": ["node_modules/**", "dist/**", "**/.turbo"],
281
+ "force": false,
282
+ "dryRun": false,
283
+ "verbose": true
284
+ }
285
+ ```
286
+
287
+ ### 配置项说明
288
+
289
+ - `defaultPatterns`: 默认的文件匹配模式列表
290
+ - `force`: 是否强制删除(跳过确认)
291
+ - `dryRun`: 预览模式(不实际删除)
292
+ - `verbose`: 详细输出模式
293
+
99
294
  ## 📖 命令说明
100
295
 
101
296
  ### delete (rm, del)
@@ -124,7 +319,7 @@ by delete <patterns...> [options]
124
319
  - `0` - 成功
125
320
  - `1` - 失败或有错误发生
126
321
 
127
- ## 🔧 开发
322
+ ## 🧪 开发
128
323
 
129
324
  ### 环境要求
130
325
 
@@ -203,10 +398,6 @@ bun test --coverage
203
398
  - ✅ 错误处理
204
399
  - ✅ 复杂场景(嵌套目录、特殊字符文件名)
205
400
 
206
- ## 📝 配置
207
-
208
- 可以通过配置文件自定义默认行为(配置功能开发中)。
209
-
210
401
  ## 🤝 贡献
211
402
 
212
403
  欢迎提交 Issue 和 Pull Request!