@tq1086/urpf-cli 1.0.0 → 2.0.0
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 +4369 -1207
- package/package.json +64 -63
- package/readme.md +424 -631
package/readme.md
CHANGED
|
@@ -1,631 +1,424 @@
|
|
|
1
|
-
# URPF CLI 工具
|
|
2
|
-
|
|
3
|
-
基于 URPF (Universal Resource Package Format) v1.0 规范的命令行打包工具。
|
|
4
|
-
|
|
5
|
-
## 项目链接
|
|
6
|
-
|
|
7
|
-
- **首页**: https://gitcode.com/tq1086/urpf-cli
|
|
8
|
-
- **仓库**: git@gitcode.com:tq1086/urpf-cli.git
|
|
9
|
-
- **问题反馈**: https://gitcode.com/tq1086/urpf-cli/issues
|
|
10
|
-
|
|
11
|
-
## 功能特性
|
|
12
|
-
|
|
13
|
-
- ✅
|
|
14
|
-
- ✅
|
|
15
|
-
- ✅
|
|
16
|
-
- ✅
|
|
17
|
-
- ✅
|
|
18
|
-
- ✅
|
|
19
|
-
- ✅
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
#
|
|
74
|
-
urpf-cli pack
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
urpf-cli
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
urpf-cli
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
urpf-cli
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
urpf-cli
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
#
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
#
|
|
232
|
-
urpf-cli
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
#
|
|
273
|
-
urpf-cli pack
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
###
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
```bash
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
# 自定义文件名
|
|
427
|
-
urpf-cli pack ./src -o my-package.urpf
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
### 覆盖已存在的文件
|
|
431
|
-
|
|
432
|
-
如果输出文件已存在,`pack` 命令会报错并提示用户。使用 `--force` 选项可以强制覆盖:
|
|
433
|
-
|
|
434
|
-
```bash
|
|
435
|
-
# 第一次打包
|
|
436
|
-
urpf-cli pack ./my-project -o my-project.urpf
|
|
437
|
-
|
|
438
|
-
# 第二次打包(不使用 --force 会失败)
|
|
439
|
-
urpf-cli pack ./my-project -o my-project.urpf
|
|
440
|
-
# 错误: 输出文件已存在: my-project.urpf。请使用 --force 选项强制覆盖,或指定不同的输出路径。
|
|
441
|
-
|
|
442
|
-
# 使用 --force 强制覆盖
|
|
443
|
-
urpf-cli pack ./my-project -o my-project.urpf --force
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
## 变量替换
|
|
447
|
-
|
|
448
|
-
`pack-remove` 命令支持变量替换功能,可以从 URPF 文件的属性部分读取变量定义,并在移除文件时应用这些变量。
|
|
449
|
-
|
|
450
|
-
### 变量定义
|
|
451
|
-
|
|
452
|
-
在 URPF 文件的属性部分定义变量:
|
|
453
|
-
|
|
454
|
-
```
|
|
455
|
-
--URPF-BOUNDARY-a1b2c3d4--
|
|
456
|
-
|
|
457
|
-
$root=subdir
|
|
458
|
-
$version=1.0.0
|
|
459
|
-
|
|
460
|
-
--URPF-BOUNDARY-a1b2c3d4--
|
|
461
|
-
|
|
462
|
-
@file://${root}/config.json utf-8 644 lf
|
|
463
|
-
{"name": "my-app", "version": "${version}"}
|
|
464
|
-
|
|
465
|
-
--URPF-BOUNDARY-a1b2c3d4--
|
|
466
|
-
```
|
|
467
|
-
|
|
468
|
-
### 使用变量
|
|
469
|
-
|
|
470
|
-
在 `pack-remove` 命令中使用变量:
|
|
471
|
-
|
|
472
|
-
```bash
|
|
473
|
-
# 移除 ${root}/config.json(实际移除 subdir/config.json)
|
|
474
|
-
urpf-cli pack-remove package.urpf "${root}/config.json"
|
|
475
|
-
|
|
476
|
-
# 移除 ${version}.txt(实际移除 1.0.0.txt)
|
|
477
|
-
urpf-cli pack-remove package.urpf "${version}.txt"
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
## URPF 文件格式
|
|
481
|
-
|
|
482
|
-
URPF 是一种用于打包、分发和精确描述多个关联资源的通用文本格式。它通过边界分隔符组织多个独立部分,每个部分可包含属性定义或资源内容。
|
|
483
|
-
|
|
484
|
-
### 格式示例
|
|
485
|
-
|
|
486
|
-
```
|
|
487
|
-
--URPF-BOUNDARY-a1b2c3d4--
|
|
488
|
-
|
|
489
|
-
$project=/home/user/project
|
|
490
|
-
$version=1.0.0
|
|
491
|
-
|
|
492
|
-
--URPF-BOUNDARY-a1b2c3d4--
|
|
493
|
-
|
|
494
|
-
@file://${project}/config.json utf-8 644 lf
|
|
495
|
-
{
|
|
496
|
-
"name": "my-project",
|
|
497
|
-
"version": "1.0.0"
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
--URPF-BOUNDARY-a1b2c3d4--
|
|
501
|
-
|
|
502
|
-
@file://${project}/src/index.js utf-8 644 lf
|
|
503
|
-
console.log("Hello, World!");
|
|
504
|
-
|
|
505
|
-
--URPF-BOUNDARY-a1b2c3d4--
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
### 规范说明
|
|
509
|
-
|
|
510
|
-
- **边界令牌**:8位十六进制数字,用于分隔不同的部分
|
|
511
|
-
- **属性部分**:以 `$` 开头的变量定义
|
|
512
|
-
- **资源部分**:以 `@` 开头的资源引用,包含 UDRS 引用、编码、权限和换行符类型
|
|
513
|
-
- **资源引用**:遵循 UDRS v1.1 规范,支持文件协议和非文件协议
|
|
514
|
-
|
|
515
|
-
详细规范请参考 [URPF v1.0 规范文档](./goal.md)。
|
|
516
|
-
|
|
517
|
-
## 忽略规则
|
|
518
|
-
|
|
519
|
-
工具支持 `.gitignore` 风格的忽略规则,可以自动检测以下文件:
|
|
520
|
-
- `.gitignore`
|
|
521
|
-
- `.iflowignore`
|
|
522
|
-
- `.npmignore`
|
|
523
|
-
|
|
524
|
-
### 忽略规则示例
|
|
525
|
-
|
|
526
|
-
```
|
|
527
|
-
# 忽略 node_modules 目录
|
|
528
|
-
node_modules/
|
|
529
|
-
|
|
530
|
-
# 忽略所有日志文件
|
|
531
|
-
*.log
|
|
532
|
-
|
|
533
|
-
# 忽略临时文件
|
|
534
|
-
*.tmp
|
|
535
|
-
temp/
|
|
536
|
-
|
|
537
|
-
# 忽略特定目录
|
|
538
|
-
dist/
|
|
539
|
-
build/
|
|
540
|
-
|
|
541
|
-
# 但不忽略 dist/config.json
|
|
542
|
-
!dist/config.json
|
|
543
|
-
```
|
|
544
|
-
|
|
545
|
-
## 开发
|
|
546
|
-
|
|
547
|
-
### 构建
|
|
548
|
-
|
|
549
|
-
```bash
|
|
550
|
-
npm run build
|
|
551
|
-
```
|
|
552
|
-
|
|
553
|
-
### 测试
|
|
554
|
-
|
|
555
|
-
```bash
|
|
556
|
-
# 运行所有测试
|
|
557
|
-
npm test
|
|
558
|
-
|
|
559
|
-
# 运行测试并显示覆盖率
|
|
560
|
-
npm run test:coverage
|
|
561
|
-
```
|
|
562
|
-
|
|
563
|
-
### 代码检查
|
|
564
|
-
|
|
565
|
-
```bash
|
|
566
|
-
# ESLint 检查
|
|
567
|
-
npm run lint
|
|
568
|
-
|
|
569
|
-
# 代码格式化
|
|
570
|
-
npm run format
|
|
571
|
-
```
|
|
572
|
-
|
|
573
|
-
## 项目结构
|
|
574
|
-
|
|
575
|
-
```
|
|
576
|
-
urpfcli/
|
|
577
|
-
├── src/
|
|
578
|
-
│ ├── commands/ # 命令实现
|
|
579
|
-
│ │ ├── pack.ts
|
|
580
|
-
│ │ ├── unpack.ts
|
|
581
|
-
│ │ └── types.ts
|
|
582
|
-
│ ├── core/
|
|
583
|
-
│ │ ├── parser/ # URPF 解析器
|
|
584
|
-
│ │ ├── scanner/ # 文件扫描器
|
|
585
|
-
│ │ ├── generator/ # URPF 生成器
|
|
586
|
-
│ │ └── engine/ # UDRS 集成层
|
|
587
|
-
│ ├── utils/ # 工具函数
|
|
588
|
-
│ └── index.ts # CLI 入口
|
|
589
|
-
├── tests/ # 测试文件
|
|
590
|
-
│ ├── integration/ # 集成测试
|
|
591
|
-
│ └── fixtures/ # 测试数据
|
|
592
|
-
├── dist/ # 编译输出
|
|
593
|
-
└── package.json
|
|
594
|
-
```
|
|
595
|
-
|
|
596
|
-
## 技术栈
|
|
597
|
-
|
|
598
|
-
- **语言**: TypeScript
|
|
599
|
-
- **模块系统**: ESM (ECMAScript Modules)
|
|
600
|
-
- **运行时**: Node.js
|
|
601
|
-
- **核心依赖**:
|
|
602
|
-
- `@tq1086/urpf-sdk`: URPF 规范解析 SDK
|
|
603
|
-
- `commander`: 命令行参数解析
|
|
604
|
-
- **开发工具**:
|
|
605
|
-
- `tsup`: 构建工具
|
|
606
|
-
- `vitest`: 测试框架
|
|
607
|
-
- `eslint`: 代码检查
|
|
608
|
-
- `prettier`: 代码格式化
|
|
609
|
-
|
|
610
|
-
## 已知限制
|
|
611
|
-
|
|
612
|
-
1. **大文件处理**:当前版本将整个文件内容加载到内存,对于超大文件可能会有性能问题
|
|
613
|
-
2. **编码检测**:编码检测功能基于简单的启发式算法,可能不够准确
|
|
614
|
-
3. **符号链接**:默认不跟随符号链接,需要使用 `-f` 选项启用
|
|
615
|
-
|
|
616
|
-
## 未来计划
|
|
617
|
-
|
|
618
|
-
- [x] 实现 `unpack` 子命令
|
|
619
|
-
- [x] 支持 `pack-add` 和 `pack-remove` 子命令
|
|
620
|
-
- [ ] 添加 `validate` 子命令(验证 URPF 文件格式)
|
|
621
|
-
- [ ] 添加 `list` 子命令(列出 URPF 文件内容)
|
|
622
|
-
- [ ] 支持流式处理大文件
|
|
623
|
-
- [ ] 添加压缩支持
|
|
624
|
-
|
|
625
|
-
## 许可证
|
|
626
|
-
|
|
627
|
-
ISC
|
|
628
|
-
|
|
629
|
-
## 贡献
|
|
630
|
-
|
|
631
|
-
欢迎提交 Issue 和 Pull Request!
|
|
1
|
+
# URPF CLI 工具
|
|
2
|
+
|
|
3
|
+
基于 URPF (Universal Resource Package Format) v1.0 规范的命令行打包工具。
|
|
4
|
+
|
|
5
|
+
## 项目链接
|
|
6
|
+
|
|
7
|
+
- **首页**: https://gitcode.com/tq1086/urpf-cli
|
|
8
|
+
- **仓库**: git@gitcode.com:tq1086/urpf-cli.git
|
|
9
|
+
- **问题反馈**: https://gitcode.com/tq1086/urpf-cli/issues
|
|
10
|
+
|
|
11
|
+
## 功能特性
|
|
12
|
+
|
|
13
|
+
- ✅ 将文件或目录打包成 URPF 格式
|
|
14
|
+
- ✅ 从 URPF 文件中解包资源到文件系统
|
|
15
|
+
- ✅ 向已有 URPF 包添加文件或目录
|
|
16
|
+
- ✅ 从 URPF 包中移除文件(支持变量替换和通配符)
|
|
17
|
+
- ✅ 支持 `.gitignore` 风格的忽略规则
|
|
18
|
+
- ✅ 自动检测文件编码和换行符类型
|
|
19
|
+
- ✅ 保留文件权限和元数据
|
|
20
|
+
- ✅ 跨平台支持(Windows、Linux、macOS)
|
|
21
|
+
- ✅ 按字节偏移量切片文件(从0开始)
|
|
22
|
+
- ✅ 按行号切片文件(从1开始)
|
|
23
|
+
- ✅ 输出 URPF 内容到屏幕
|
|
24
|
+
- ✅ 复制 URPF 内容到剪贴板
|
|
25
|
+
- ✅ 打包环境变量到 URPF 属性
|
|
26
|
+
- ✅ 变量管理和环境变量管理
|
|
27
|
+
|
|
28
|
+
## 安装
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# 全局安装
|
|
32
|
+
npm install -g @tq1086/urpf-cli
|
|
33
|
+
|
|
34
|
+
# 本地安装
|
|
35
|
+
npm install @tq1086/urpf-cli
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 使用方法
|
|
39
|
+
|
|
40
|
+
### 基本用法
|
|
41
|
+
|
|
42
|
+
#### 打包命令 (pack)
|
|
43
|
+
|
|
44
|
+
URPF CLI 提供了子命令结构,支持灵活的包管理操作。
|
|
45
|
+
|
|
46
|
+
**创建新的 URPF 包**:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# 创建新的 URPF 包
|
|
50
|
+
urpf-cli pack create package.json
|
|
51
|
+
|
|
52
|
+
# 打包目录
|
|
53
|
+
urpf-cli pack create src/
|
|
54
|
+
|
|
55
|
+
# 指定输出路径
|
|
56
|
+
urpf-cli pack create src/ -o output.urpf.txt
|
|
57
|
+
|
|
58
|
+
# 显示详细日志
|
|
59
|
+
urpf-cli pack create src/ -v
|
|
60
|
+
|
|
61
|
+
# 按字节偏移量切片(从0开始)
|
|
62
|
+
urpf-cli pack create file.txt --byte 100:200
|
|
63
|
+
|
|
64
|
+
# 按行号切片(从1开始)
|
|
65
|
+
urpf-cli pack create file.txt --line 10:20
|
|
66
|
+
|
|
67
|
+
# 输出到屏幕
|
|
68
|
+
urpf-cli pack create file.txt --stdout
|
|
69
|
+
|
|
70
|
+
# 复制到剪贴板
|
|
71
|
+
urpf-cli pack create file.txt --clipboard
|
|
72
|
+
|
|
73
|
+
# 打包环境变量
|
|
74
|
+
urpf-cli pack create src/ --env API_KEY
|
|
75
|
+
urpf-cli pack create src/ --env "*"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**向已有 URPF 包添加文件**:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# 添加单个文件
|
|
82
|
+
urpf-cli pack add package.urpf.txt newfile.txt
|
|
83
|
+
|
|
84
|
+
# 添加多个文件
|
|
85
|
+
urpf-cli pack add package.urpf.txt file1.txt file2.txt
|
|
86
|
+
|
|
87
|
+
# 添加目录
|
|
88
|
+
urpf-cli pack add package.urpf.txt newdir/
|
|
89
|
+
|
|
90
|
+
# 混合添加文件和目录
|
|
91
|
+
urpf-cli pack add package.urpf.txt file1.txt dir1/ file2.txt
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**从 URPF 包移除文件**:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# 移除单个文件
|
|
98
|
+
urpf-cli pack remove package.urpf.txt oldfile.txt
|
|
99
|
+
|
|
100
|
+
# 移除多个文件
|
|
101
|
+
urpf-cli pack remove package.urpf.txt file1.txt file2.txt
|
|
102
|
+
|
|
103
|
+
# 使用通配符
|
|
104
|
+
urpf-cli pack remove package.urpf.txt "*.log"
|
|
105
|
+
|
|
106
|
+
# 使用变量替换
|
|
107
|
+
urpf-cli pack remove package.urpf.txt "${root}/config.json"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### 解包命令 (unpack)
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# 解包到当前目录
|
|
114
|
+
urpf-cli unpack package.urpf.txt
|
|
115
|
+
|
|
116
|
+
# 解包到指定目录
|
|
117
|
+
urpf-cli unpack package.urpf.txt -o ./output
|
|
118
|
+
|
|
119
|
+
# 只解压指定的文件
|
|
120
|
+
urpf-cli unpack package.urpf.txt config.json
|
|
121
|
+
|
|
122
|
+
# 只解压目录
|
|
123
|
+
urpf-cli unpack package.urpf.txt src/
|
|
124
|
+
|
|
125
|
+
# 解压多个文件
|
|
126
|
+
urpf-cli unpack package.urpf.txt config.json src/index.js
|
|
127
|
+
|
|
128
|
+
# 使用通配符
|
|
129
|
+
urpf-cli unpack package.urpf.txt "*.js"
|
|
130
|
+
|
|
131
|
+
# 强制覆盖已存在的文件
|
|
132
|
+
urpf-cli unpack package.urpf.txt --force
|
|
133
|
+
|
|
134
|
+
# 仅当源文件更新时才覆盖
|
|
135
|
+
urpf-cli unpack package.urpf.txt --force-when-newer
|
|
136
|
+
|
|
137
|
+
# 自动确认环境变量设置(无需用户交互)
|
|
138
|
+
urpf-cli unpack package.urpf.txt --unpack-env
|
|
139
|
+
|
|
140
|
+
# 应用变量替换到文件内容
|
|
141
|
+
urpf-cli unpack package.urpf.txt --apply-variables
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### 列出命令 (list)
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# 列出 URPF 包中的所有文件
|
|
148
|
+
urpf-cli list package.urpf.txt
|
|
149
|
+
|
|
150
|
+
# 按模式过滤文件
|
|
151
|
+
urpf-cli list package.urpf.txt --pattern "*.js"
|
|
152
|
+
|
|
153
|
+
# 以 JSON 格式输出
|
|
154
|
+
urpf-cli list package.urpf.txt --json
|
|
155
|
+
|
|
156
|
+
# 显示详细信息
|
|
157
|
+
urpf-cli list package.urpf.txt -v
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### 信息命令 (info)
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
# 显示 URPF 包的摘要信息
|
|
164
|
+
urpf-cli info package.urpf.txt
|
|
165
|
+
|
|
166
|
+
# 以 JSON 格式输出
|
|
167
|
+
urpf-cli info package.urpf.txt --json
|
|
168
|
+
|
|
169
|
+
# 显示详细信息
|
|
170
|
+
urpf-cli info package.urpf.txt -v
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
#### 验证命令 (verify)
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# 验证 URPF 包的文件完整性
|
|
177
|
+
urpf-cli verify package.urpf.txt
|
|
178
|
+
|
|
179
|
+
# 尝试修复常见问题
|
|
180
|
+
urpf-cli verify package.urpf.txt --fix
|
|
181
|
+
|
|
182
|
+
# 显示详细日志
|
|
183
|
+
urpf-cli verify package.urpf.txt -v
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
#### 比较命令 (diff)
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# 比较两个 URPF 包
|
|
190
|
+
urpf-cli diff package-v1.urpf.txt package-v2.urpf.txt
|
|
191
|
+
|
|
192
|
+
# 以 JSON 格式输出
|
|
193
|
+
urpf-cli diff package-v1.urpf.txt package-v2.urpf.txt --json
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
#### 合并命令 (merge)
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# 合并多个 URPF 包
|
|
200
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt
|
|
201
|
+
|
|
202
|
+
# 使用覆盖策略
|
|
203
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt --strategy overwrite
|
|
204
|
+
|
|
205
|
+
# 使用重命名策略
|
|
206
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt --strategy rename
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
#### 变量管理命令 (var)
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# 添加变量
|
|
213
|
+
urpf-cli var add package.urpf.txt VERSION "1.0.0"
|
|
214
|
+
|
|
215
|
+
# 列出所有变量
|
|
216
|
+
urpf-cli var list package.urpf.txt
|
|
217
|
+
|
|
218
|
+
# 删除变量
|
|
219
|
+
urpf-cli var remove package.urpf.txt VERSION
|
|
220
|
+
|
|
221
|
+
# 清除所有变量
|
|
222
|
+
urpf-cli var clear package.urpf.txt
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
#### 环境变量管理命令 (env)
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
# 添加环境变量(使用系统值)
|
|
229
|
+
urpf-cli env add package.urpf.txt API_KEY
|
|
230
|
+
|
|
231
|
+
# 添加环境变量(指定值)
|
|
232
|
+
urpf-cli env add package.urpf.txt API_KEY "my-secret-key"
|
|
233
|
+
|
|
234
|
+
# 列出所有环境变量
|
|
235
|
+
urpf-cli env list package.urpf.txt
|
|
236
|
+
|
|
237
|
+
# 删除环境变量
|
|
238
|
+
urpf-cli env remove package.urpf.txt API_KEY
|
|
239
|
+
|
|
240
|
+
# 清除所有环境变量
|
|
241
|
+
urpf-cli env clear package.urpf.txt
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### 文件后缀
|
|
245
|
+
|
|
246
|
+
URPF 文件使用 `.urpf.txt` 后缀,这是一种文本格式的资源包文件。
|
|
247
|
+
|
|
248
|
+
### 环境变量支持
|
|
249
|
+
|
|
250
|
+
**打包环境变量**:
|
|
251
|
+
- 使用 `--env <name>` 打包单个环境变量
|
|
252
|
+
- 使用 `--env "*"` 打包全部环境变量(排除含 "key" 的变量)
|
|
253
|
+
- 使用 `--env <name> <value>` 指定环境变量的值
|
|
254
|
+
|
|
255
|
+
**解包环境变量**:
|
|
256
|
+
- 如果 URPF 包包含环境变量,解包时会提示用户是否设置
|
|
257
|
+
- 使用 `--unpack-env` 选项可自动确认环境变量设置(无需用户交互)
|
|
258
|
+
- 使用 `--apply-variables` 选项可应用变量替换到文件内容
|
|
259
|
+
|
|
260
|
+
### 变量替换
|
|
261
|
+
|
|
262
|
+
URPF 包支持变量替换功能,可以在打包和解包时使用变量。
|
|
263
|
+
|
|
264
|
+
**定义变量**:
|
|
265
|
+
```bash
|
|
266
|
+
urpf-cli var add package.urpf.txt ROOT "/path/to/root"
|
|
267
|
+
urpf-cli var add package.urpf.txt VERSION "1.0.0"
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**使用变量**:
|
|
271
|
+
```bash
|
|
272
|
+
# 在 pack remove 中使用变量
|
|
273
|
+
urpf-cli pack remove package.urpf.txt "${ROOT}/config.json"
|
|
274
|
+
urpf-cli pack remove package.urpf.txt "${VERSION}.txt"
|
|
275
|
+
|
|
276
|
+
# 在文件内容中使用变量(解包时)
|
|
277
|
+
urpf-cli unpack package.urpf.txt --apply-variables
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### 忽略规则
|
|
281
|
+
|
|
282
|
+
URPF CLI 支持 `.gitignore` 风格的忽略规则。
|
|
283
|
+
|
|
284
|
+
**默认忽略规则文件**:
|
|
285
|
+
- `.gitignore`
|
|
286
|
+
- `.urpfignore`
|
|
287
|
+
|
|
288
|
+
**白名单和黑名单**:
|
|
289
|
+
- `.urpfallow` - 白名单文件(格式与 .gitignore 一致)
|
|
290
|
+
- `.urpfforbid` - 黑名单文件(格式与 .gitignore 一致)
|
|
291
|
+
|
|
292
|
+
**文件打包规则**:
|
|
293
|
+
- 不在黑名单内
|
|
294
|
+
- 不在 ignore 内
|
|
295
|
+
- 在白名单内(或无白名单)
|
|
296
|
+
- 不以点开头
|
|
297
|
+
|
|
298
|
+
**指定忽略规则文件**:
|
|
299
|
+
```bash
|
|
300
|
+
urpf-cli pack create src/ -i .customignore
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
## 高级用法
|
|
304
|
+
|
|
305
|
+
### 字节切片
|
|
306
|
+
|
|
307
|
+
按字节偏移量切片文件,从 0 开始。
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
# 切片从字节 100 到 200
|
|
311
|
+
urpf-cli pack create file.txt --byte 100:200
|
|
312
|
+
|
|
313
|
+
# 切片从字节 100 到文件末尾
|
|
314
|
+
urpf-cli pack create file.txt --byte 100
|
|
315
|
+
|
|
316
|
+
# 切片从文件开头到字节 200
|
|
317
|
+
urpf-cli pack create file.txt --byte :200
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### 行切片
|
|
321
|
+
|
|
322
|
+
按行号切片文件,从 1 开始。
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
# 切片第 10 到 20 行
|
|
326
|
+
urpf-cli pack create file.txt --line 10:20
|
|
327
|
+
|
|
328
|
+
# 切片第 10 行到文件末尾
|
|
329
|
+
urpf-cli pack create file.txt --line 10
|
|
330
|
+
|
|
331
|
+
# 切片从文件开头到第 20 行
|
|
332
|
+
urpf-cli pack create file.txt --line :20
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### 跨平台路径处理
|
|
336
|
+
|
|
337
|
+
URPF CLI 自动处理不同操作系统的路径分隔符。
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# Windows
|
|
341
|
+
urpf-cli pack create C:\project\src\
|
|
342
|
+
|
|
343
|
+
# Linux/macOS
|
|
344
|
+
urpf-cli pack create /home/user/project/src/
|
|
345
|
+
|
|
346
|
+
# 相对路径
|
|
347
|
+
urpf-cli pack create ./src/
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## 项目结构
|
|
351
|
+
|
|
352
|
+
```
|
|
353
|
+
urpf-cli/
|
|
354
|
+
├── src/
|
|
355
|
+
│ ├── commands/ # 命令实现
|
|
356
|
+
│ │ ├── pack.ts
|
|
357
|
+
│ │ ├── unpack.ts
|
|
358
|
+
│ │ ├── pack-add.ts
|
|
359
|
+
│ │ ├── pack-remove.ts
|
|
360
|
+
│ │ ├── list.ts
|
|
361
|
+
│ │ ├── info.ts
|
|
362
|
+
│ │ ├── verify.ts
|
|
363
|
+
│ │ ├── diff.ts
|
|
364
|
+
│ │ ├── merge.ts
|
|
365
|
+
│ │ ├── var.ts
|
|
366
|
+
│ │ ├── env.ts
|
|
367
|
+
│ │ └── types.ts
|
|
368
|
+
│ ├── core/
|
|
369
|
+
│ │ ├── parser/ # URPF 解析器
|
|
370
|
+
│ │ ├── scanner/ # 文件扫描器
|
|
371
|
+
│ │ ├── generator/ # URPF 生成器
|
|
372
|
+
│ │ └── engine/ # UDRS 集成层
|
|
373
|
+
│ ├── utils/ # 工具函数
|
|
374
|
+
│ └── index.ts # CLI 入口
|
|
375
|
+
├── tests/ # 测试文件
|
|
376
|
+
├── examples/ # 示例文件
|
|
377
|
+
├── package.json
|
|
378
|
+
├── tsconfig.json
|
|
379
|
+
└── readme.md
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
## 开发
|
|
383
|
+
|
|
384
|
+
### 安装依赖
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
npm install
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
### 构建项目
|
|
391
|
+
|
|
392
|
+
```bash
|
|
393
|
+
npm run build
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### 运行测试
|
|
397
|
+
|
|
398
|
+
```bash
|
|
399
|
+
npm test
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### 代码检查
|
|
403
|
+
|
|
404
|
+
```bash
|
|
405
|
+
npm run lint
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### 代码格式化
|
|
409
|
+
|
|
410
|
+
```bash
|
|
411
|
+
npm run format
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
## 许可证
|
|
415
|
+
|
|
416
|
+
MIT License
|
|
417
|
+
|
|
418
|
+
## 贡献
|
|
419
|
+
|
|
420
|
+
欢迎提交 Issue 和 Pull Request!
|
|
421
|
+
|
|
422
|
+
## 更新日志
|
|
423
|
+
|
|
424
|
+
查看 [CHANGELOG.md](CHANGELOG.md) 了解版本更新历史。
|