@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 +30 -20
- package/dist/release.js +14 -8
- package/package.json +1 -1
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
|
-
|
|
55
|
+
release-cli # 如果是 workspace 项目,会以对话形式选择要发布的包
|
|
52
56
|
|
|
53
57
|
# 指定包名发布 (workspace 项目)
|
|
54
|
-
|
|
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
|
-
|
|
62
|
+
release-cli --dry-run
|
|
58
63
|
|
|
59
64
|
# 指定版本类型
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
65
|
+
release-cli patch
|
|
66
|
+
release-cli minor
|
|
67
|
+
release-cli major
|
|
63
68
|
# 自定义版本号
|
|
64
|
-
|
|
69
|
+
release-cli 1.0.1
|
|
65
70
|
```
|
|
66
71
|
|
|
67
72
|
### 高级用法
|
|
68
73
|
|
|
69
74
|
```bash
|
|
70
75
|
# 组合使用选项
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
release-cli patch --dry-run --package my-package
|
|
77
|
+
release-cli minor --verbose
|
|
73
78
|
|
|
74
79
|
# 预发布版本
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
80
|
+
release-cli prerelease --preid alpha
|
|
81
|
+
release-cli prerelease --preid beta
|
|
82
|
+
release-cli prerelease --preid rc
|
|
78
83
|
|
|
79
84
|
# 从预发布升级到正式版本
|
|
80
|
-
|
|
85
|
+
release-cli release
|
|
81
86
|
|
|
82
87
|
# changelog 相关选项
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
132
|
-
|
|
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 ===
|
|
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',
|
|
143
|
-
|
|
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',
|
|
156
|
-
|
|
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);
|