@vitarx/release-cli 1.0.0-alpha.2 → 1.0.1

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
@@ -18,6 +18,8 @@
18
18
 
19
19
  ### 全局安装
20
20
 
21
+ 安装时使用包名 `@vitarx/release-cli`,安装后使用命令名 `release-cli`:
22
+
21
23
  ```bash
22
24
  # 使用 npm
23
25
  npm install -g @vitarx/release-cli
@@ -31,6 +33,8 @@ yarn global add @vitarx/release-cli
31
33
 
32
34
  ### 临时使用 (无需安装)
33
35
 
36
+ 临时使用时使用包名 `@vitarx/release-cli`:
37
+
34
38
  ```bash
35
39
  # 使用 npx
36
40
  npx @vitarx/release-cli
@@ -48,41 +52,42 @@ yarn dlx @vitarx/release-cli
48
52
 
49
53
  ```bash
50
54
  # 发布当前包 (自动检测包管理器)
51
- @vitarx/release-cli # 如果是 workspace 项目,会以对话形式选择要发布的包
55
+ release-cli # 如果是 workspace 项目,会以对话形式选择要发布的包
52
56
 
53
57
  # 指定包名发布 (workspace 项目)
54
- @vitarx/release-cli --package <包名>
58
+ release-cli --package my-package #发布包名为my-package的包
59
+ release-cli --package packages/my-package #发布在packages/my-package下的包
55
60
 
56
61
  # 使用 dry-run 模式测试
57
- @vitarx/release-cli --dry-run
62
+ release-cli --dry-run
58
63
 
59
64
  # 指定版本类型
60
- @vitarx/release-cli patch
61
- @vitarx/release-cli minor
62
- @vitarx/release-cli major
65
+ release-cli patch
66
+ release-cli minor
67
+ release-cli major
63
68
  # 自定义版本号
64
- @vitarx/release-cli 1.0.1
69
+ release-cli 1.0.1
65
70
  ```
66
71
 
67
72
  ### 高级用法
68
73
 
69
74
  ```bash
70
75
  # 组合使用选项
71
- @vitarx/release-cli patch --dry-run --package my-package
72
- @vitarx/release-cli minor --verbose
76
+ release-cli patch --dry-run --package my-package
77
+ release-cli minor --verbose
73
78
 
74
79
  # 预发布版本
75
- @vitarx/release-cli prerelease --preid alpha
76
- @vitarx/release-cli prerelease --preid beta
77
- @vitarx/release-cli prerelease --preid rc
80
+ release-cli prerelease --preid alpha
81
+ release-cli prerelease --preid beta
82
+ release-cli prerelease --preid rc
78
83
 
79
84
  # 从预发布升级到正式版本
80
- @vitarx/release-cli release
85
+ release-cli release
81
86
 
82
87
  # changelog 相关选项
83
- @vitarx/release-cli patch --preset conventionalcommits --infile HISTORY.md
84
- @vitarx/release-cli minor --no-same-file --output-unreleased
85
- @vitarx/release-cli major --tag-prefix "" --release-count 5
88
+ release-cli patch --preset conventionalcommits --infile HISTORY.md
89
+ release-cli minor --no-same-file --output-unreleased
90
+ release-cli major --tag-prefix "v" --release-count 5
86
91
  ```
87
92
 
88
93
  ### 支持的版本类型
@@ -119,17 +124,22 @@ yarn dlx @vitarx/release-cli
119
124
  | `--tag-prefix` | - | Git 标签前缀 | `v` |
120
125
  | `--verbose` | `-v` | 详细输出模式 | `false` |
121
126
  | `--release-count` | - | 生成的发布记录数量 | `0` |
122
- | `--package` | - | 指定要发布的包名 | - |
127
+ | `--package` | - | 指定要发布的包名/包相对路径 | - |
123
128
 
124
129
  ### Workspace 支持
125
130
 
126
131
  如果你的项目是 workspace 项目(包含 `workspaces` 配置),工具会自动检测并让你选择要发布的包。
127
132
 
128
- 你可以使用 `--package` 选项直接指定要发布的包名,避免交互式选择:
133
+ 你可以使用 `--package` 选项直接指定要发布的包名或目录名,避免交互式选择:
129
134
 
130
135
  ```bash
131
- @vitarx/release-cli --package my-package
132
- @vitarx/release-cli patch --package my-package --dry-run
136
+ # 按包名指定
137
+ release-cli --package my-package
138
+ release-cli patch --package my-package --dry-run
139
+
140
+ # 按目录名指定(workspace项目)
141
+ release-cli --package lib
142
+ release-cli --package app
133
143
  ```
134
144
 
135
145
  ## 发布流程
package/dist/release.js CHANGED
@@ -133,14 +133,17 @@ async function publishPackage(pkgDir, packageManager, isDryRun = false, args) {
133
133
  runCommand(`npm run build --prefix ${pkgDir}`);
134
134
  // -------------------- Step 5: 生成日志 --------------------
135
135
  // 是否为根包
136
- const isRootPackage = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'package.json'), 'utf-8')).name === pkg.name;
136
+ const isRootPackage = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'package.json'), 'utf-8')).name ===
137
+ pkg.name;
137
138
  if (isRootPackage) {
138
139
  // 生成 changelog
139
140
  try {
140
141
  log.info(`📝 正在生成 CHANGELOG.md...`);
141
142
  const changelogArgs = [
142
- '-p', args.changelogPreset || 'angular',
143
- '-i', args.changelogInfile || 'CHANGELOG.md',
143
+ '-p',
144
+ args.changelogPreset || 'angular',
145
+ '-i',
146
+ args.changelogInfile || 'CHANGELOG.md',
144
147
  args.changelogOutfile ? ['-o', args.changelogOutfile] : '',
145
148
  args.changelogSameFile ? '-s' : '',
146
149
  args.changelogAppend ? '-a' : '',
@@ -152,8 +155,11 @@ async function publishPackage(pkgDir, packageManager, isDryRun = false, args) {
152
155
  args.changelogCommitPath ? ['--commit-path', args.changelogCommitPath] : '',
153
156
  args.changelogTagPrefix ? ['-t', args.changelogTagPrefix] : '',
154
157
  args.changelogVerbose ? '-v' : '',
155
- '-r', args.changelogReleaseCount ? args.changelogReleaseCount.toString() : '0'
156
- ].flat().filter(arg => arg !== '');
158
+ '-r',
159
+ args.changelogReleaseCount ? args.changelogReleaseCount.toString() : '0'
160
+ ]
161
+ .flat()
162
+ .filter((arg) => arg !== '');
157
163
  runCommand(`conventional-changelog ${changelogArgs.join(' ')}`, isDryRun);
158
164
  }
159
165
  catch {
@@ -245,7 +251,7 @@ export async function main() {
245
251
  console.log(' --tag-prefix <前缀> - Git 标签前缀(默认: v)');
246
252
  console.log(' -v, --verbose - 详细输出模式');
247
253
  console.log(' --release-count <数量> - 生成的发布记录数量(默认: 0)');
248
- console.log(' --package <包名> - 指定要发布的包名');
254
+ console.log(' --package <包名> - 指定要发布的包名/包相对路径');
249
255
  console.log('');
250
256
  console.log(chalk.yellow('示例:'));
251
257
  console.log(' release-cli patch --dry-run');
@@ -273,8 +279,8 @@ export async function main() {
273
279
  }
274
280
  let selectedPackage;
275
281
  if (args.packageName) {
276
- // 如果指定了包名,查找对应的包
277
- selectedPackage = packages.find(pkg => pkg.name === args.packageName);
282
+ // 如果指定了包名,查找对应的包(支持按包名或目录名匹配)
283
+ selectedPackage = packages.find((pkg) => pkg.name === args.packageName || path.basename(pkg.path) === args.packageName);
278
284
  if (!selectedPackage) {
279
285
  log.error(`未找到包名为 ${args.packageName} 的包`);
280
286
  process.exit(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitarx/release-cli",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.1",
4
4
  "description": "A CLI tool for automated npm package release with workspace support",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",