@peiyanlu/release 0.0.2 → 0.0.3
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 +94 -37
- package/dist/cli.mjs +697 -621
- package/dist/index.cjs +3 -4
- package/dist/index.d.cts +120 -3
- package/dist/index.d.mts +120 -3
- package/dist/index.mjs +3 -3
- package/package.json +4 -6
package/README.md
CHANGED
|
@@ -15,28 +15,37 @@
|
|
|
15
15
|
</a>
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
|
+
🚀 **一个用于自动化版本管理与包发布的通用 CLI 工具**
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
提供完整的发布工作流自动化:
|
|
20
21
|
|
|
21
|
-
- Bump
|
|
22
|
-
- [
|
|
23
|
-
- [
|
|
24
|
-
- [
|
|
25
|
-
- [
|
|
22
|
+
- [**Bump 版本号**][1]
|
|
23
|
+
- [**自动生成 Changelog**][2]
|
|
24
|
+
- [**Git**:暂存 → 提交 → 打 Tag → 推送][3]
|
|
25
|
+
- [**发布到 npm**][4]
|
|
26
|
+
- [**GitHub**:创建 Release][5]
|
|
26
27
|
|
|
27
|
-
##
|
|
28
|
+
## 安装
|
|
28
29
|
|
|
29
30
|
```bash
|
|
30
31
|
npm install -D @peiyanlu/release
|
|
31
|
-
|
|
32
|
+
# 或
|
|
32
33
|
yarn add -D @peiyanlu/release
|
|
33
|
-
|
|
34
|
+
# 或
|
|
34
35
|
pnpm add -D @peiyanlu/release
|
|
35
36
|
```
|
|
36
37
|
|
|
37
|
-
##
|
|
38
|
+
## 配置
|
|
39
|
+
|
|
40
|
+
发布流程可以通过配置文件进行自定义。如果项目中**未提供配置文件**,工具会自动使用**内置默认配置**。
|
|
41
|
+
|
|
42
|
+
支持的配置文件格式:
|
|
38
43
|
|
|
39
|
-
|
|
44
|
+
```
|
|
45
|
+
release.config.{ts,mts,cts,js,mjs,cjs}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
示例配置:
|
|
40
49
|
|
|
41
50
|
```ts
|
|
42
51
|
// release.config.ts
|
|
@@ -53,59 +62,107 @@ export default defineConfig({
|
|
|
53
62
|
},
|
|
54
63
|
github: {
|
|
55
64
|
release: true,
|
|
56
|
-
autoGenerate:
|
|
65
|
+
autoGenerate: false,
|
|
57
66
|
},
|
|
58
67
|
})
|
|
59
|
-
|
|
60
68
|
```
|
|
61
69
|
|
|
62
|
-
##
|
|
70
|
+
## Bump 版本号
|
|
63
71
|
|
|
72
|
+
工具内置语义化版本(Semantic Versioning)管理能力,可自动更新`package.json` 中的版本号:
|
|
64
73
|
|
|
65
|
-
|
|
74
|
+
- 支持标准版本类型:
|
|
75
|
+
- `major`:不兼容的重大变更(1.x.x → 2.0.0)
|
|
76
|
+
- `minor`:向后兼容的新功能(1.1.x → 1.2.0)
|
|
77
|
+
- `patch`:向后兼容的 Bug 修复(1.1.1 → 1.1.2)
|
|
78
|
+
- 支持**预发布版本**:
|
|
79
|
+
- `alpha`、`beta`、`rc` 等(如 `1.2.0-alpha.1`)
|
|
80
|
+
- 支持**自定义版本号**:
|
|
81
|
+
- 可直接指定目标版本(如 `1.3.0`)
|
|
82
|
+
- 支持 **--show-release** 预览:
|
|
83
|
+
- 在不修改文件的情况下查看即将升级到的版本
|
|
66
84
|
|
|
85
|
+
版本更新后,工具会自动同步到后续的 Git Tag、GitHub Release 与 npm 发布流程。
|
|
67
86
|
|
|
68
|
-
##
|
|
87
|
+
## Changelog
|
|
69
88
|
|
|
89
|
+
基于 Git 提交历史自动生成结构化 Changelog,底层依赖以下命令分析提交范围:
|
|
70
90
|
|
|
71
|
-
|
|
72
|
-
|
|
91
|
+
```bash
|
|
92
|
+
git log --pretty=format:"%s %h %H" {from}...{to}
|
|
93
|
+
```
|
|
73
94
|
|
|
95
|
+
支持 **--show-changelog** 预览模式:
|
|
74
96
|
|
|
75
|
-
|
|
97
|
+
- 仅展示用于生成 Changelog 的 Commits
|
|
98
|
+
- 不会修改任何文件或提交历史
|
|
76
99
|
|
|
77
|
-
|
|
78
|
-
在你的发布流程中,有两种方式可以创建 **GitHub Releases**:
|
|
100
|
+
可与 **Conventional Commits** 规范结合使用,实现规范化、可读性更高的变更日志。
|
|
79
101
|
|
|
80
|
-
1. **自动化方式**(需要提供 `GITHUB_TOKEN`)
|
|
81
|
-
2. **手动方式**(通过 GitHub 网页界面,使用预先填充好的字段来创建)
|
|
82
102
|
|
|
83
|
-
##
|
|
103
|
+
## Git 自动化
|
|
84
104
|
|
|
85
|
-
|
|
105
|
+
自动执行标准发布流程:
|
|
86
106
|
|
|
87
|
-
|
|
88
|
-
|
|
107
|
+
**stage → commit → tag → push**
|
|
108
|
+
|
|
109
|
+
并支持推送到**任意 Git 远程仓库**,适配单仓库与多仓库场景。
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
## npm 发布(Trusted Publishing)
|
|
113
|
+
|
|
114
|
+
工具会根据 `package.json` 中的 `publishConfig` 配置,将包发布到对应的 npm 仓库。
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"publishConfig": {
|
|
119
|
+
"access": "public",
|
|
120
|
+
"registry": "https://registry.npmjs.org/"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
89
123
|
```
|
|
90
124
|
|
|
91
|
-
|
|
125
|
+
自 **2025 年 7 月** 起,GitHub CI 已支持 npm 的 **Trusted Publishing(可信发布)** + **OIDC**:
|
|
126
|
+
|
|
127
|
+
- ✅ 无需长期有效的 npm Token
|
|
128
|
+
- ✅ 使用 OpenID Connect 进行身份验证
|
|
129
|
+
- ✅ 自动生成 provenance(来源证明)
|
|
130
|
+
|
|
131
|
+
适用于 CI/CD 场景下的**安全、无 Token** 自动化发布。
|
|
132
|
+
|
|
92
133
|
|
|
93
|
-
|
|
134
|
+
## GitHub Releases
|
|
135
|
+
|
|
136
|
+
GitHub Release 可基于 Git Tag 自动创建,并支持附带:
|
|
137
|
+
|
|
138
|
+
- **Release Notes(发布说明)**
|
|
139
|
+
- **构建产物(Assets)**
|
|
140
|
+
|
|
141
|
+
支持两种创建方式:
|
|
94
142
|
|
|
143
|
+
1. **自动化方式**:使用 `GITHUB_TOKEN` 直接创建
|
|
144
|
+
2. **手动方式**:通过 GitHub Web UI 创建(工具预填充字段)
|
|
145
|
+
|
|
146
|
+
## Dry Run
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
pnpm release --dry-run
|
|
150
|
+
```
|
|
95
151
|
|
|
96
|
-
|
|
152
|
+
可以**完整展示发布流程,但不会执行任何实际修改**,适合调试和验证配置。
|
|
97
153
|
|
|
98
|
-
使用 `--dry-run` 可以展示整个交互流程,以及工具原本将要执行的所有命令,但不会真正执行任何操作。
|
|
99
154
|
|
|
155
|
+
## 相关链接
|
|
100
156
|
|
|
101
|
-
[
|
|
157
|
+
- [npm Trusted Publishing](https://docs.npmjs.com/trusted-publishers)
|
|
158
|
+
- [GitHub Releases 官方文档](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases)
|
|
102
159
|
|
|
103
|
-
[
|
|
160
|
+
[1]: #bump-版本号
|
|
104
161
|
|
|
105
|
-
[
|
|
162
|
+
[2]: #changelog
|
|
106
163
|
|
|
107
|
-
[
|
|
164
|
+
[3]: #git-自动化
|
|
108
165
|
|
|
109
|
-
[
|
|
166
|
+
[4]: #npm-发布trusted-publishing
|
|
110
167
|
|
|
111
|
-
[
|
|
168
|
+
[5]: #github-releases
|