@mznjs/mbump 2.0.2 → 2.1.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/CHANGELOG.md CHANGED
@@ -5,6 +5,36 @@
5
5
  格式遵循 [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
7
7
 
8
+ ## [2.1.0] - 2026-07-04
9
+
10
+ 🚀 新增功能
11
+
12
+ - feat(cli): 优化路径支持与命令行参数,新增更多路径格式和快捷参数 (README.md, index.ts, parser.ts)
13
+
14
+ ## [2.0.4] - 2026-07-04
15
+
16
+ 🚀 新增功能
17
+
18
+ - feat(cli): 新增--version/-V参数用于显示版本信息 (index.ts, parser.ts, index.ts)
19
+
20
+ ## [2.0.4-beta.1] - 2026-07-04
21
+
22
+ ♻️ 代码重构
23
+
24
+ - refactor(cli): 重构参数解析和配置加载逻辑 (index.ts)
25
+
26
+ ## [2.0.4-beta.0] - 2026-07-04
27
+
28
+ 🚀 新增功能
29
+
30
+ - feat(cli): 新增路径模式支持,允许直接指定项目目录更新版本 (README.md, index.ts, parser.ts, index.ts)
31
+
32
+ ## [2.0.3] - 2026-07-04
33
+
34
+ ♻️ 代码重构
35
+
36
+ - refactor(config,cli): 重构包路径处理逻辑,新增路径校验 (package.json, index.ts, loader.ts, VersionManager.ts, integration.test.ts)
37
+
8
38
  ## [2.0.2] - 2026-05-26
9
39
 
10
40
  🔧 工具变更
package/README.md CHANGED
@@ -18,18 +18,45 @@
18
18
  - ✅ 智能配置加载(支持异步/同步)
19
19
  - ✅ 未提交更改检测与处理
20
20
  - ✅ 详细日志输出模式
21
+ - ✅ **零配置启动** - 无需配置文件即可使用
21
22
 
22
23
  ## 📦 安装
23
24
 
25
+ ### 全局安装(推荐)
26
+
27
+ 适合在多个项目中使用,一次安装,全局可用:
28
+
24
29
  ```bash
25
30
  npm install -g @mznjs/mbump
26
31
  # 或
27
32
  pnpm add -g @mznjs/mbump
28
33
  ```
29
34
 
35
+ **全局安装特性**:
36
+ - ✅ 所有依赖(包括 `tsx`)已移至 `dependencies`,确保全局安装后正常工作
37
+ - ✅ 支持 `.ts` 配置文件的自动编译
38
+ - ✅ 可在任意项目目录下使用
39
+
40
+ ### 本地安装
41
+
42
+ 适合在单个项目中使用,作为开发依赖:
43
+
44
+ ```bash
45
+ npm install @mznjs/mbump -D
46
+ # 或
47
+ pnpm add @mznjs/mbump -D
48
+ ```
49
+
50
+ **本地安装特性**:
51
+ - ✅ 项目级依赖,不影响全局环境
52
+ - ✅ 可在 `package.json` 的 `scripts` 中使用
53
+ - ✅ 推荐在 CI/CD 流程中使用
54
+
30
55
  ## 🚀 快速开始
31
56
 
32
- ### 单包项目
57
+ ### 单包项目(零配置)
58
+
59
+ 无需任何配置文件,mbump 会自动使用默认配置 `{ default: 'package.json' }`:
33
60
 
34
61
  ```bash
35
62
  # 升级补丁版本
@@ -45,9 +72,59 @@ mbump major
45
72
  mbump
46
73
  ```
47
74
 
75
+ **零配置行为**:
76
+ - ✅ 自动识别当前目录的 `package.json`
77
+ - ✅ 使用 `default` 作为包名
78
+ - ✅ 创建 Git Tag:`v{version}`(如 `v1.0.1`)
79
+ - ✅ 生成 CHANGELOG.md
80
+
81
+ ### 路径模式(直接指定项目目录)
82
+
83
+ 无需配置文件,直接指定项目目录路径,mbump 会自动查找该目录下的 `package.json`:
84
+
85
+ ```bash
86
+ # 更新指定目录下的 package.json(默认 patch)
87
+ mbump ./packages/my-pkg
88
+
89
+ # 指定版本类型
90
+ mbump ./packages/my-pkg patch
91
+ mbump ./packages/my-pkg minor
92
+ mbump ./packages/my-pkg major
93
+
94
+ # 使用上级目录
95
+ mbump ../other-project
96
+
97
+ # 使用绝对路径
98
+ mbump /path/to/project
99
+ mbump C:\projects\my-app
100
+ ```
101
+
102
+ **支持的路径格式**:
103
+
104
+ | 格式类型 | 示例 | 说明 |
105
+ |----------|------|------|
106
+ | Unix 相对路径 | `./packages/theme` | 以 `./` 开头 |
107
+ | Windows 相对路径 | `.\frontend` | 以 `.\` 开头 |
108
+ | 当前目录 | `.` | 单个点 |
109
+ | 上级目录 | `../other-project` | 以 `../` 或 `..\` 开头 |
110
+ | 简单目录名 | `frontend` | 直接使用目录名(会自动检测) |
111
+ | Unix 绝对路径 | `/usr/local/project` | 以 `/` 开头 |
112
+ | Windows 绝对路径 | `\Windows\System32` | 以 `\` 开头 |
113
+ | Windows 驱动器 | `C:\Projects\app` | 驱动器字母 + `:\` |
114
+ | 用户主目录 | `~/projects/my-app` | 以 `~` 开头 |
115
+ | UNC 网络路径 | `\\server\share\project` | 以 `\\` 开头 |
116
+
117
+ **路径模式特性**:
118
+ - ✅ 支持多种路径格式(相对路径、绝对路径、驱动器路径、UNC 路径等)
119
+ - ✅ 自动检测路径下是否存在 `package.json`
120
+ - ✅ 使用默认配置 `{ default: 'package.json' }`
121
+ - ✅ 支持所有命令行选项(`--dry-run`, `--verbose`, `--npm` 等)
122
+ - ✅ 适合快速更新独立的子包或临时项目
123
+ - ✅ 智能回退:如果包名在配置中找不到,会自动检查是否为有效目录路径
124
+
48
125
  ### Monorepo 项目
49
126
 
50
- 创建配置文件 `.mbump.config.json`:
127
+ 创建配置文件 `.mbump.config.json`(或其他支持的格式):
51
128
 
52
129
  ```json
53
130
  {
@@ -59,6 +136,11 @@ mbump
59
136
  }
60
137
  ```
61
138
 
139
+ **重要特性**:
140
+ - ✅ **默认包始终保留**:即使配置了 `packagePaths`,`default` 键(指向根目录 `package.json`)仍然会被保留
141
+ - ✅ **路径解析基准**:相对路径相对于配置文件所在目录解析,而非当前工作目录
142
+ - ✅ **统一路径处理**:配置中的路径在加载时会自动解析为绝对路径
143
+
62
144
  ```bash
63
145
  # 更新所有包(交互式选择每个包的版本)
64
146
  mbump all
@@ -66,6 +148,9 @@ mbump all
66
148
  # 更新指定包
67
149
  mbump components minor
68
150
 
151
+ # 更新根目录包
152
+ mbump default patch
153
+
69
154
  # 试运行模式(不实际执行)
70
155
  mbump components minor --dry-run
71
156
 
@@ -76,10 +161,11 @@ mbump components patch --npm
76
161
  ## 💻 命令行参数
77
162
 
78
163
  ```
79
- 用法: mbump [package] [type] [options]
164
+ 用法: mbump [package|path] [type] [options]
80
165
 
81
166
  参数:
82
167
  [package] 要更新的包名称或 "all" 更新所有包
168
+ [path] 项目目录路径(支持 ./path, ../path, /path, C:\path),自动查找该目录下的 package.json
83
169
  [type] 版本升级类型: major, minor, patch, pre-patch, pre-minor, pre-major
84
170
 
85
171
  选项:
@@ -88,8 +174,9 @@ mbump components patch --npm
88
174
  --no-commit, -n 禁用自动git提交
89
175
  --no-push, -p 禁用自动推送到远程仓库
90
176
  --allow-uncommitted, -u 允许在有未提交更改的情况下继续操作
91
- --npm 启用npm/pnpm包发布功能(默认不发布)
92
- --show-config 显示当前加载的完整配置信息
177
+ --npm, -N 启用npm/pnpm包发布功能(默认不发布)
178
+ --show-config, -c 显示当前加载的完整配置信息
179
+ --version, -V 显示当前版本号
93
180
  --help, -h 显示此帮助信息
94
181
 
95
182
  示例:
@@ -100,6 +187,17 @@ mbump components patch --npm
100
187
  mbump components patch --npm # 更新版本并发布到npm/pnpm
101
188
  mbump # 交互式选择包和版本类型
102
189
  mbump --show-config # 查看当前配置
190
+ mbump --version # 查看当前版本号
191
+
192
+ # 路径模式
193
+ mbump ./packages/my-pkg # 更新 ./packages/my-pkg 目录下的 package.json
194
+ mbump ./packages/my-pkg patch # 指定版本类型
195
+ mbump ../other-project minor # 更新上级目录的项目
196
+ mbump /path/to/project major # 使用绝对路径
197
+ mbump ./packages/my-pkg --dry-run # 试运行模式
198
+ mbump .\frontend\ # Windows 风格路径(PowerShell)
199
+ mbump frontend # 直接使用目录名(自动检测)
200
+ mbump ~/projects/my-app # 使用用户主目录路径
103
201
  ```
104
202
 
105
203
  ## ⚙️ 配置文件
@@ -286,7 +384,35 @@ export default () => ({
286
384
 
287
385
  | 选项 | 类型 | 默认值 | 说明 |
288
386
  |------|------|--------|------|
289
- | `packagePaths` | `Record<string, string>` | `{ default: 'package.json' }` | 包路径映射(必需) |
387
+ | `packagePaths` | `Record<string, string>` | `{ default: 'package.json' }` | 包路径映射,相对路径相对于配置文件所在目录解析 |
388
+
389
+ **packagePaths 配置说明**:
390
+
391
+ 1. **默认配置**:即使不配置 `packagePaths`,系统也会自动使用 `{ default: 'package.json' }`
392
+ 2. **默认包保留**:用户配置 `packagePaths` 时,`default` 键始终会被保留,指向根目录的 `package.json`
393
+ 3. **路径解析基准**:相对路径相对于配置文件所在目录解析,而非 `process.cwd()`
394
+ 4. **示例**:
395
+ ```typescript
396
+ // .mbump.config.ts(位于项目根目录)
397
+ export default {
398
+ packagePaths: {
399
+ theme: 'packages/theme/package.json', // 解析为 /project/packages/theme/package.json
400
+ web: 'packages/web/package.json', // 解析为 /project/packages/web/package.json
401
+ utils: 'plugins/utils/package.json', // 解析为 /project/plugins/utils/package.json
402
+ core: 'plugins/core/package.json', // 解析为 /project/plugins/core/package.json
403
+ },
404
+ } satisfies Config
405
+ ```
406
+ 最终合并后的配置会包含:
407
+ ```typescript
408
+ {
409
+ default: '/project/package.json', // 自动保留
410
+ theme: '/project/packages/theme/package.json',
411
+ web: '/project/packages/web/package.json',
412
+ utils: '/project/plugins/utils/package.json',
413
+ core: '/project/plugins/core/package.json',
414
+ }
415
+ ```
290
416
 
291
417
  #### defaults 选项
292
418
 
@@ -317,12 +443,12 @@ mbump 根据包的类型采用不同的 Tag 命名策略:
317
443
  - **Tag 格式**: `{tagPrefix}{version}`
318
444
  - **使用前缀**: 是(默认 `v`)
319
445
  - **识别条件**: 包名为 `default` 或包路径为 `package.json`(根目录)
320
- - **示例**:
446
+ - **示例**:
321
447
  ```bash
322
448
  mbump default patch
323
449
  # 假设 package.json 中 "name": "@my-org/monorepo"
324
450
  # → 创建 Tag: v1.0.1
325
-
451
+
326
452
  # 自定义前缀
327
453
  mbump default minor
328
454
  # 如果配置 git.tagPrefix = "release-"
@@ -332,7 +458,7 @@ mbump 根据包的类型采用不同的 Tag 命名策略:
332
458
  #### 子包 (所有非主项目包)
333
459
  - **Tag 格式**: `{package-name}@{version}`
334
460
  - **不使用前缀**: 直接使用 package.json 中的 `name` 字段
335
- - **适用场景**:
461
+ - **适用场景**:
336
462
  - 单独更新子包:`mbump components patch`
337
463
  - 批量更新所有包:`mbump all`
338
464
  - **示例**:
@@ -340,7 +466,7 @@ mbump 根据包的类型采用不同的 Tag 命名策略:
340
466
  mbump components patch
341
467
  # 假设 components/package.json 中 "name": "@my-org/components"
342
468
  # → 创建 Tag: @my-org/components@1.0.1
343
-
469
+
344
470
  mbump cli minor
345
471
  # 假设 cli/package.json 中 "name": "@my-org/cli"
346
472
  # → 创建 Tag: @my-org/cli@2.3.0
@@ -420,6 +546,15 @@ mbump components patch --changelog
420
546
 
421
547
  #### 单包项目
422
548
 
549
+ 无需配置文件,直接使用默认配置:
550
+
551
+ ```bash
552
+ # 直接使用,自动识别当前目录的 package.json
553
+ mbump patch
554
+ ```
555
+
556
+ 如果需要自定义配置:
557
+
423
558
  ```json
424
559
  {
425
560
  "packagePaths": {
@@ -768,6 +903,23 @@ mbump 提供了友好的错误提示信息,帮助用户快速理解和解决
768
903
  - 检查 `.mbump.config.js` 中的 `packagePaths` 配置
769
904
  - 确保包名与配置中的 key 一致
770
905
 
906
+ #### 8. 包路径不存在
907
+
908
+ **错误信息**:
909
+ ```
910
+ 配置错误:以下包路径指向的文件不存在
911
+ - components: "packages/components/package.json" -> 解析为 "/path/to/project/packages/components/package.json"(文件不存在)
912
+
913
+ 请检查配置文件中的 packagePaths 是否正确
914
+ ```
915
+
916
+ **原因**:配置文件中指定的 package.json 文件不存在
917
+
918
+ **解决方案**:
919
+ - 检查路径是否正确
920
+ - 确保文件已创建
921
+ - 相对路径是相对于配置文件所在目录解析的
922
+
771
923
  ### 调试模式
772
924
 
773
925
  如果遇到未知错误,可以使用 `DEBUG` 环境变量查看详细信息:
@@ -1047,7 +1199,6 @@ setInterval(() => {
1047
1199
  // CI/CD 环境中可以禁用缓存(每次都是全新环境)
1048
1200
  const manager = new VersionManager({
1049
1201
  rootDir,
1050
- // 未来可以添加配置选项
1051
1202
  })
1052
1203
  ```
1053
1204
 
@@ -1172,7 +1323,6 @@ pnpm test:watch
1172
1323
  beforeEach(() => {
1173
1324
  tempDir = join(os.tmpdir(), `mbump-test-${Date.now()}`)
1174
1325
  mkdirSync(tempDir, { recursive: true })
1175
- // 初始化 Git 仓库...
1176
1326
  })
1177
1327
 
1178
1328
  afterEach(() => {
@@ -1191,78 +1341,12 @@ afterEach(() => {
1191
1341
  #### 3. 真实场景
1192
1342
  使用真实的 Git 命令和文件系统操作:
1193
1343
  ```typescript
1194
- // 初始化 Git 仓库
1195
1344
  execSync('git init', { cwd: tempDir })
1196
1345
  execSync('git config user.email "test@example.com"', { cwd: tempDir })
1197
-
1198
- // 创建 commits
1199
1346
  execSync('git add . && git commit -m "feat: feature"', { cwd: tempDir })
1200
-
1201
- // 验证 Git Tag
1202
1347
  const tags = execSync('git tag', { cwd: tempDir, encoding: 'utf8' })
1203
1348
  ```
1204
1349
 
1205
- ### 测试示例
1206
-
1207
- #### 单包更新测试
1208
- ```typescript
1209
- it('应该成功更新单个包的版本号', async () => {
1210
- createPackageFile('test-package', '1.0.0')
1211
- createConfigFile({ default: 'package.json' })
1212
- createInitialCommit()
1213
-
1214
- const manager = new VersionManager({ rootDir: tempDir })
1215
- const result = await manager.updateVersion('default', 'minor', {
1216
- dryRun: false,
1217
- autoCommit: true,
1218
- npm: false,
1219
- changelog: false,
1220
- })
1221
-
1222
- expect(result.success).toBe(true)
1223
- expect(result.updatedPackages[0].newVersion).toBe('1.1.0')
1224
-
1225
- const pkgContent = JSON.parse(readFileSync(join(tempDir, 'package.json'), 'utf8'))
1226
- expect(pkgContent.version).toBe('1.1.0')
1227
- })
1228
- ```
1229
-
1230
- #### Git Tag 测试
1231
- ```typescript
1232
- it('应该在版本更新后创建 Git Tag', async () => {
1233
- createPackageFile('test-package', '1.0.0')
1234
- createConfigFile({ default: 'package.json' })
1235
- createInitialCommit()
1236
-
1237
- const manager = new VersionManager({ rootDir: tempDir })
1238
- await manager.updateVersion('default', 'minor', {
1239
- dryRun: false,
1240
- autoCommit: true,
1241
- npm: false,
1242
- changelog: false,
1243
- tag: true,
1244
- })
1245
-
1246
- const tags = execSync('git tag', { cwd: tempDir, encoding: 'utf8' }).trim().split('\n')
1247
- expect(tags).toContain('v1.1.0')
1248
- })
1249
- ```
1250
-
1251
- #### 缓存机制测试
1252
- ```typescript
1253
- it('应该预加载包信息到缓存', () => {
1254
- createPackageFile('test-package', '1.0.0')
1255
- createConfigFile({ default: 'package.json' })
1256
- createInitialCommit()
1257
-
1258
- const manager = new VersionManager({ rootDir: tempDir })
1259
- const stats = manager.getCacheStats()
1260
-
1261
- expect(stats.size).toBeGreaterThan(0)
1262
- expect(stats.packages).toContain(join(tempDir, 'package.json'))
1263
- })
1264
- ```
1265
-
1266
1350
  ### 持续集成
1267
1351
 
1268
1352
  测试已集成到 CI/CD 流程中,每次提交都会自动运行:
@@ -1290,155 +1374,6 @@ it('应该预加载包信息到缓存', () => {
1290
1374
  - **conventional**: 根据 commits 自动生成版本类型
1291
1375
  - **as-is**: 保持当前版本不变(仅更新 CHANGELOG)
1292
1376
 
1293
- ## 🧪 测试
1294
-
1295
- mbump 拥有完善的测试体系,包括单元测试和集成测试,确保代码质量和功能稳定性。
1296
-
1297
- ### 测试覆盖范围
1298
-
1299
- #### 单元测试 (Unit Tests)
1300
- - ✅ **版本计算**:验证 semver 版本递增逻辑
1301
- - ✅ **安全检查**:验证路径遍历防护、命令注入防护
1302
- - ✅ **工具函数**:验证各种辅助函数的正确性
1303
-
1304
- #### 集成测试 (Integration Tests)
1305
- - ✅ **单包版本更新**:验证单个包的版本号更新流程
1306
- - ✅ **批量版本更新**:验证多个包同时更新的场景
1307
- - ✅ **CHANGELOG 生成**:验证 CHANGELOG.md 文件的创建和内容
1308
- - ✅ **Git Tag 管理**:验证 Git 标签的创建、前缀配置等
1309
- - ✅ **Dry-run 模式**:验证试运行模式不修改文件
1310
- - ✅ **缓存机制**:验证配置缓存和包信息缓存
1311
- - ✅ **错误处理**:验证无效包名、版本冲突等异常场景
1312
-
1313
- ### 运行测试
1314
-
1315
- ```bash
1316
- # 运行所有测试
1317
- pnpm test
1318
-
1319
- # 运行特定测试文件
1320
- pnpm test tests/integration.test.ts
1321
-
1322
- # 监听模式(开发时使用)
1323
- pnpm test:watch
1324
- ```
1325
-
1326
- ### 测试统计
1327
-
1328
- | 测试类型 | 测试文件数 | 测试用例数 | 通过率 |
1329
- |---------|-----------|-----------|--------|
1330
- | 单元测试 | 2 | 12 | 100% ✅ |
1331
- | 集成测试 | 1 | 16 | 100% ✅ |
1332
- | **总计** | **3** | **28** | **100%** ✅ |
1333
-
1334
- ### 集成测试特点
1335
-
1336
- #### 1. 隔离环境
1337
- 每个测试在临时目录中执行,避免污染真实项目:
1338
- ```typescript
1339
- beforeEach(() => {
1340
- tempDir = join(os.tmpdir(), `mbump-test-${Date.now()}`)
1341
- mkdirSync(tempDir, { recursive: true })
1342
- // 初始化 Git 仓库...
1343
- })
1344
-
1345
- afterEach(() => {
1346
- rmSync(tempDir, { recursive: true, force: true })
1347
- })
1348
- ```
1349
-
1350
- #### 2. 完整工作流
1351
- 测试完整的版本更新流程:
1352
- - 创建临时 Git 仓库
1353
- - 创建 package.json 和配置文件
1354
- - 执行版本更新
1355
- - 验证结果(版本号、Git Tag、CHANGELOG)
1356
- - 清理临时文件
1357
-
1358
- #### 3. 真实场景
1359
- 使用真实的 Git 命令和文件系统操作:
1360
- ```typescript
1361
- // 初始化 Git 仓库
1362
- execSync('git init', { cwd: tempDir })
1363
- execSync('git config user.email "test@example.com"', { cwd: tempDir })
1364
-
1365
- // 创建 commits
1366
- execSync('git add . && git commit -m "feat: feature"', { cwd: tempDir })
1367
-
1368
- // 验证 Git Tag
1369
- const tags = execSync('git tag', { cwd: tempDir, encoding: 'utf8' })
1370
- ```
1371
-
1372
- ### 测试示例
1373
-
1374
- #### 单包更新测试
1375
- ```typescript
1376
- it('应该成功更新单个包的版本号', async () => {
1377
- createPackageFile('test-package', '1.0.0')
1378
- createConfigFile({ default: 'package.json' })
1379
- createInitialCommit()
1380
-
1381
- const manager = new VersionManager({ rootDir: tempDir })
1382
- const result = await manager.updateVersion('default', 'minor', {
1383
- dryRun: false,
1384
- autoCommit: true,
1385
- npm: false,
1386
- changelog: false,
1387
- })
1388
-
1389
- expect(result.success).toBe(true)
1390
- expect(result.updatedPackages[0].newVersion).toBe('1.1.0')
1391
-
1392
- const pkgContent = JSON.parse(readFileSync(join(tempDir, 'package.json'), 'utf8'))
1393
- expect(pkgContent.version).toBe('1.1.0')
1394
- })
1395
- ```
1396
-
1397
- #### Git Tag 测试
1398
- ```typescript
1399
- it('应该在版本更新后创建 Git Tag', async () => {
1400
- createPackageFile('test-package', '1.0.0')
1401
- createConfigFile({ default: 'package.json' })
1402
- createInitialCommit()
1403
-
1404
- const manager = new VersionManager({ rootDir: tempDir })
1405
- await manager.updateVersion('default', 'minor', {
1406
- dryRun: false,
1407
- autoCommit: true,
1408
- npm: false,
1409
- changelog: false,
1410
- tag: true,
1411
- })
1412
-
1413
- const tags = execSync('git tag', { cwd: tempDir, encoding: 'utf8' }).trim().split('\n')
1414
- expect(tags).toContain('v1.1.0')
1415
- })
1416
- ```
1417
-
1418
- #### 缓存机制测试
1419
- ```typescript
1420
- it('应该预加载包信息到缓存', () => {
1421
- createPackageFile('test-package', '1.0.0')
1422
- createConfigFile({ default: 'package.json' })
1423
- createInitialCommit()
1424
-
1425
- const manager = new VersionManager({ rootDir: tempDir })
1426
- const stats = manager.getCacheStats()
1427
-
1428
- expect(stats.size).toBeGreaterThan(0)
1429
- expect(stats.packages).toContain(join(tempDir, 'package.json'))
1430
- })
1431
- ```
1432
-
1433
- ### 持续集成
1434
-
1435
- 测试已集成到 CI/CD 流程中,每次提交都会自动运行:
1436
- - ✅ 代码构建
1437
- - ✅ 类型检查
1438
- - ✅ ESLint 检查
1439
- - ✅ 单元测试
1440
- - ✅ 集成测试
1441
-
1442
1377
  ## 🎯 使用场景
1443
1378
 
1444
1379
  ### 场景 1: 日常开发
@@ -1478,7 +1413,23 @@ mbump all patch
1478
1413
  mbump all minor --dry-run
1479
1414
  ```
1480
1415
 
1481
- ### 场景 4: CI/CD 自动化
1416
+ ### 场景 4: 路径模式(快速更新独立子包)
1417
+
1418
+ ```bash
1419
+ # 快速更新指定目录下的 package.json
1420
+ mbump ./packages/my-pkg
1421
+
1422
+ # 指定版本类型
1423
+ mbump ./packages/my-pkg minor
1424
+
1425
+ # 更新上级目录的项目
1426
+ mbump ../other-project
1427
+
1428
+ # 试运行模式
1429
+ mbump ./packages/my-pkg --dry-run
1430
+ ```
1431
+
1432
+ ### 场景 5: CI/CD 自动化
1482
1433
 
1483
1434
  ```bash
1484
1435
  # 在 CI 环境中自动发布
@@ -1509,10 +1460,11 @@ mbump --show-config
1509
1460
  配置文件: .mbump.config.mjs
1510
1461
 
1511
1462
  📦 包路径:
1512
- components: package.json
1513
- cli: packages/cli/package.json
1463
+ default: /path/to/project/package.json
1464
+ components: /path/to/project/packages/components/package.json
1465
+ cli: /path/to/project/packages/cli/package.json
1514
1466
 
1515
- ⚙️ 默认选项:
1467
+ ⚙️ 默认选项:
1516
1468
  releaseType: patch
1517
1469
  dryRun: false
1518
1470
  verbose: false
@@ -1699,17 +1651,20 @@ git push --tags
1699
1651
 
1700
1652
  1. **Git 要求**: 确保项目在 Git 仓库中,且已配置用户信息
1701
1653
  2. **未提交更改**: 默认情况下,存在未提交更改时会提示确认
1702
- 3. **配置文件**: 至少需要配置 `packagePaths`,其他选项可使用默认值
1703
- 4. **Node 版本**: 需要 Node.js >= 18.0.0
1704
- 5. **包管理器**: 默认使用 pnpm 发布,可在配置中修改为 npm 或 yarn
1705
- 6. **TypeScript 配置**: `.ts` 格式需要安装 `tsx` 依赖
1706
- 7. **ES Module**: `.mjs` 格式仅支持异步加载
1654
+ 3. **零配置支持**: 无需配置文件即可使用,系统自动使用默认配置 `{ default: 'package.json' }`
1655
+ 4. **路径模式**: 支持 `mbump ./path` 模式,自动查找指定目录下的 `package.json`,适合快速更新独立子包
1656
+ 5. **Node 版本**: 需要 Node.js >= 18.0.0
1657
+ 6. **包管理器**: 默认使用 pnpm 发布,可在配置中修改为 npm 或 yarn
1658
+ 7. **路径解析**: 相对路径相对于配置文件所在目录解析,而非当前工作目录
1659
+ 8. **默认包保留**: `default` 键始终指向根目录的 `package.json`,即使配置了其他包路径
1660
+ 9. **全局安装**: 支持 `npm install -g @mznjs/mbump`,所有依赖已移至 `dependencies` 确保全局安装后可用
1661
+ 10. **配置文件格式**: 支持 `.ts`/`.mjs`/`.js`/`.cjs`/`.json`/`.yaml`/`.yml`/`.toml` 多种格式
1662
+ 11. **配置文件优先级**: 按以下顺序查找:`.ts` → `.mjs` → `.js` → `.cjs` → `.json` → `.yaml` → `.yml` → `.toml` → `package.json`
1707
1663
 
1708
1664
  ## 📚 更多资源
1709
1665
 
1710
1666
  - [配置示例](./config-examples/) - 各种格式的配置文件示例
1711
1667
  - [CHANGELOG](./CHANGELOG.md) - 版本更新历史
1712
- - [GitHub Issues](https://github.com/mznjs/mbump/issues) - 问题反馈
1713
1668
 
1714
1669
  ## 🤝 贡献指南
1715
1670
 
@@ -1746,5 +1701,3 @@ MIT License
1746
1701
  ---
1747
1702
 
1748
1703
  **mbump** - 让版本管理更简单!🚀
1749
-
1750
- ```