@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 +197 -6
- package/dist/index.d.ts +963 -1
- package/dist/index.js +107 -63
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
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!
|