@done-coding/cli-publish 0.7.12 → 0.7.14-alpha.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/README.md +246 -3
- package/es/cli.mjs +1 -1
- package/es/{index-d28c260e.js → index-b589f4ab.js} +26 -26
- package/es/index.mjs +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,7 +1,250 @@
|
|
|
1
1
|
# @done-coding/cli-publish
|
|
2
2
|
|
|
3
|
-
项目发布命令行工具
|
|
3
|
+
项目发布命令行工具 - 自动化项目版本管理和发布流程
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/@done-coding/cli-publish)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
## 安装
|
|
9
|
+
|
|
10
|
+
### 独立安装
|
|
11
|
+
```bash
|
|
12
|
+
npm install @done-coding/cli-publish
|
|
13
|
+
# 或
|
|
14
|
+
pnpm add @done-coding/cli-publish
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### 作为 done-coding CLI 的一部分
|
|
18
|
+
```bash
|
|
19
|
+
npm install -g @done-coding/cli
|
|
20
|
+
# 然后使用
|
|
21
|
+
DC publish [command]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 快速开始
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# 独立使用
|
|
28
|
+
dc-publish [command]
|
|
29
|
+
|
|
30
|
+
# 作为主 CLI 的子命令
|
|
31
|
+
DC publish [command]
|
|
32
|
+
|
|
33
|
+
# 查看帮助
|
|
34
|
+
dc-publish --help
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 功能特性
|
|
38
|
+
|
|
39
|
+
- ✅ **版本管理**: 支持语义化版本号管理
|
|
40
|
+
- 📦 **多模式发布**: 支持 npm 和 web 两种发布模式
|
|
41
|
+
- 🏷️ **标签管理**: 支持不同的发布标签(latest、next、alpha、beta、rc)
|
|
42
|
+
- 🔄 **Git 集成**: 支持自动推送到远程仓库
|
|
43
|
+
- ⚙️ **配置管理**: 支持配置文件管理发布规则
|
|
44
|
+
|
|
45
|
+
## API 文档
|
|
46
|
+
|
|
47
|
+
### 基础命令
|
|
48
|
+
|
|
49
|
+
#### `dc-publish init`
|
|
50
|
+
初始化配置文件
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# 创建默认配置文件
|
|
54
|
+
dc-publish init
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### `dc-publish` (默认命令)
|
|
58
|
+
执行发布命令
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# 使用默认配置发布
|
|
62
|
+
dc-publish
|
|
63
|
+
|
|
64
|
+
# 指定发布类型
|
|
65
|
+
dc-publish -t patch
|
|
66
|
+
|
|
67
|
+
# 指定发布模式
|
|
68
|
+
dc-publish -m npm
|
|
69
|
+
|
|
70
|
+
# 指定发布标签
|
|
71
|
+
dc-publish -d next
|
|
72
|
+
|
|
73
|
+
# 禁用推送到远程仓库
|
|
74
|
+
dc-publish -p false
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### `dc-publish alias`
|
|
78
|
+
别名发布
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# 执行别名发布
|
|
82
|
+
dc-publish alias
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 命令选项
|
|
86
|
+
|
|
87
|
+
- `-R, --rootDir`: 运行目录
|
|
88
|
+
- `-C, --configPath`: 配置文件相对路径,默认为 `./.done-coding/publish.json`
|
|
89
|
+
- `-m, --mode`: 发布模式,可选值:`npm`(默认)、`web`
|
|
90
|
+
- `-t, --type`: 发布类型,可选值:`major`、`minor`、`patch`、`premajor`、`preminor`、`prepatch`、`prerelease`、`custom version`
|
|
91
|
+
- `-p, --push`: 是否推送至远程仓库,默认为 `true`
|
|
92
|
+
- `-d, --distTag`: 发布标签,可选值:`latest`、`next`、`alpha`、`beta`、`rc`
|
|
93
|
+
|
|
94
|
+
## 使用示例
|
|
95
|
+
|
|
96
|
+
### 基础使用场景
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# 1. 初始化配置
|
|
100
|
+
dc-publish init
|
|
101
|
+
|
|
102
|
+
# 2. 发布补丁版本
|
|
103
|
+
dc-publish -t patch
|
|
104
|
+
|
|
105
|
+
# 3. 发布到 next 标签
|
|
106
|
+
dc-publish -t minor -d next
|
|
107
|
+
|
|
108
|
+
# 4. 发布但不推送到远程仓库
|
|
109
|
+
dc-publish -t patch -p false
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 不同发布类型
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# 主版本发布 (1.0.0 -> 2.0.0)
|
|
116
|
+
dc-publish -t major
|
|
117
|
+
|
|
118
|
+
# 次版本发布 (1.0.0 -> 1.1.0)
|
|
119
|
+
dc-publish -t minor
|
|
120
|
+
|
|
121
|
+
# 补丁版本发布 (1.0.0 -> 1.0.1)
|
|
122
|
+
dc-publish -t patch
|
|
123
|
+
|
|
124
|
+
# 预发布版本 (1.0.0 -> 1.0.1-0)
|
|
125
|
+
dc-publish -t prerelease
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### 不同发布模式
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# npm 模式发布
|
|
132
|
+
dc-publish -m npm
|
|
133
|
+
|
|
134
|
+
# web 模式发布
|
|
135
|
+
dc-publish -m web
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 作为主 CLI 的一部分
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Windows 系统
|
|
142
|
+
dc publish init
|
|
143
|
+
dc publish -t patch
|
|
144
|
+
dc publish alias
|
|
145
|
+
|
|
146
|
+
# macOS/Linux 系统
|
|
147
|
+
DC publish init
|
|
148
|
+
DC publish -t patch
|
|
149
|
+
DC publish alias
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 配置
|
|
153
|
+
|
|
154
|
+
通过 `dc-publish init` 命令可以初始化配置文件 `.done-coding/publish.json`。
|
|
155
|
+
|
|
156
|
+
具体的配置选项需要查看初始化后生成的配置文件内容。
|
|
157
|
+
|
|
158
|
+
## 编程接口
|
|
159
|
+
|
|
160
|
+
本包提供了编程接口,具体的导出内容请查看包的类型定义文件。
|
|
161
|
+
|
|
162
|
+
## 故障排除
|
|
163
|
+
|
|
164
|
+
### 常见问题
|
|
165
|
+
|
|
166
|
+
**Q: 配置文件找不到**
|
|
167
|
+
```bash
|
|
168
|
+
# 检查配置文件是否存在
|
|
169
|
+
ls -la .done-coding/publish.json
|
|
170
|
+
|
|
171
|
+
# 重新初始化配置
|
|
172
|
+
dc-publish init
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Q: 发布失败**
|
|
176
|
+
```bash
|
|
177
|
+
# 检查 npm 登录状态
|
|
178
|
+
npm whoami
|
|
179
|
+
|
|
180
|
+
# 检查包名是否已存在
|
|
181
|
+
npm view @your-package-name
|
|
182
|
+
|
|
183
|
+
# 检查网络连接
|
|
184
|
+
npm ping
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Q: Git 推送失败**
|
|
188
|
+
```bash
|
|
189
|
+
# 检查 Git 远程仓库配置
|
|
190
|
+
git remote -v
|
|
191
|
+
|
|
192
|
+
# 检查 Git 认证
|
|
193
|
+
git config --list | grep user
|
|
194
|
+
|
|
195
|
+
# 禁用自动推送
|
|
196
|
+
dc-publish -p false
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### 调试模式
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# 查看版本信息
|
|
203
|
+
dc-publish --version
|
|
204
|
+
|
|
205
|
+
# 查看帮助信息
|
|
206
|
+
dc-publish --help
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## 贡献指南
|
|
210
|
+
|
|
211
|
+
我们欢迎贡献!请遵循以下步骤:
|
|
212
|
+
|
|
213
|
+
1. Fork 本仓库
|
|
214
|
+
2. 创建功能分支:`git checkout -b feature/amazing-feature`
|
|
215
|
+
3. 提交更改:`git commit -m "feat: add amazing feature"`
|
|
216
|
+
4. 推送分支:`git push origin feature/amazing-feature`
|
|
217
|
+
5. 创建 Pull Request
|
|
218
|
+
|
|
219
|
+
### 开发环境设置
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# 克隆仓库
|
|
223
|
+
git clone https://gitee.com/done-coding/done-coding-cli.git
|
|
224
|
+
cd done-coding-cli/packages/publish
|
|
225
|
+
|
|
226
|
+
# 安装依赖
|
|
227
|
+
pnpm install
|
|
228
|
+
|
|
229
|
+
# 开发模式
|
|
230
|
+
pnpm dev
|
|
231
|
+
|
|
232
|
+
# 构建
|
|
233
|
+
pnpm build
|
|
234
|
+
|
|
235
|
+
# 本地开发测试
|
|
236
|
+
node es/cli.mjs --help
|
|
237
|
+
|
|
238
|
+
# 注意:本地使用 node + 入口文件,发布后使用 bin 命令名
|
|
239
|
+
# 功能完全一致,只是调用方式不同
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## 许可证
|
|
243
|
+
|
|
244
|
+
MIT © [JustSoSu](https://gitee.com/done-coding)
|
|
245
|
+
|
|
246
|
+
## 相关链接
|
|
247
|
+
|
|
248
|
+
- [主 CLI 工具](https://www.npmjs.com/package/@done-coding/cli)
|
|
249
|
+
- [Gitee 仓库](https://gitee.com/done-coding/done-coding-cli)
|
|
250
|
+
- [更新日志](./CHANGELOG.md)
|
package/es/cli.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import S, { rmSync as K } from "node:fs";
|
|
|
7
7
|
var I = /* @__PURE__ */ ((e) => (e.INIT = "init", e.EXEC = "exec", e.ALIAS = "alias", e))(I || {}), r = /* @__PURE__ */ ((e) => (e.MAJOR = "major", e.MINOR = "minor", e.PATCH = "patch", e.PREMAJOR = "premajor", e.PREMINOR = "preminor", e.PREPATCH = "prepatch", e.PRERELEASE = "prerelease", e.CUSTOM_VERSION = "custom version", e))(r || {}), f = /* @__PURE__ */ ((e) => (e.LATEST = "latest", e.NEXT = "next", e.ALPHA = "alpha", e.BETA = "beta", e.RC = "rc", e))(f || {}), c = /* @__PURE__ */ ((e) => (e.NPM = "npm", e.WEB = "web", e))(c || {});
|
|
8
8
|
const R = {
|
|
9
9
|
name: "@done-coding/cli-publish",
|
|
10
|
-
version: "0.7.
|
|
10
|
+
version: "0.7.14-alpha.0",
|
|
11
11
|
description: "项目发布命令行工具",
|
|
12
12
|
bin: {
|
|
13
13
|
"dc-publish": "es/cli.mjs"
|
|
@@ -55,22 +55,22 @@ const R = {
|
|
|
55
55
|
m.warn("没有配置别名发布信息");
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
|
-
const { rootDir: d } = e, s = $({ rootDir: d }), { name:
|
|
58
|
+
const { rootDir: d } = e, s = $({ rootDir: d }), { name: i, version: a } = s;
|
|
59
59
|
return U({
|
|
60
60
|
dir: G(R.cliConfig.moduleName),
|
|
61
61
|
fn: async (n) => {
|
|
62
62
|
var g;
|
|
63
|
-
S.mkdirSync(n, { recursive: !0 }), l(`pnpm add ${
|
|
63
|
+
S.mkdirSync(n, { recursive: !0 }), l(`pnpm add ${i}@${a}`, {
|
|
64
64
|
stdio: "inherit",
|
|
65
65
|
cwd: n
|
|
66
66
|
});
|
|
67
|
-
const h = (g = l(`npm dist-tag ${
|
|
67
|
+
const h = (g = l(`npm dist-tag ${i}`).toString().trim().split(`
|
|
68
68
|
`).map((E) => E.split(":").map((w) => w.trim())).find(
|
|
69
|
-
([, E]) => E ===
|
|
69
|
+
([, E]) => E === a
|
|
70
70
|
)) == null ? void 0 : g[0];
|
|
71
71
|
if (!h)
|
|
72
|
-
return m.warn(`没有找到 ${
|
|
73
|
-
const C = z.resolve(n, "node_modules",
|
|
72
|
+
return m.warn(`没有找到 ${i}@${a} 对应的dist-tag`);
|
|
73
|
+
const C = z.resolve(n, "node_modules", i), u = $({
|
|
74
74
|
rootDir: C
|
|
75
75
|
});
|
|
76
76
|
for (let E of o) {
|
|
@@ -125,21 +125,21 @@ const R = {
|
|
|
125
125
|
type: t,
|
|
126
126
|
distTag: o
|
|
127
127
|
}) => {
|
|
128
|
-
let d = e.name, s = "",
|
|
129
|
-
const { version:
|
|
130
|
-
if (!
|
|
128
|
+
let d = e.name, s = "", i;
|
|
129
|
+
const { version: a } = e;
|
|
130
|
+
if (!a)
|
|
131
131
|
throw new Error("当前版本号为空");
|
|
132
132
|
switch (t) {
|
|
133
133
|
case r.PATCH:
|
|
134
134
|
case r.MINOR:
|
|
135
135
|
case r.MAJOR: {
|
|
136
|
-
s = N(
|
|
136
|
+
s = N(a, t), i = o || f.LATEST;
|
|
137
137
|
break;
|
|
138
138
|
}
|
|
139
139
|
case r.PREPATCH:
|
|
140
140
|
case r.PREMINOR:
|
|
141
141
|
case r.PREMAJOR: {
|
|
142
|
-
s = N(
|
|
142
|
+
s = N(a, t, f.ALPHA), i = o || f.ALPHA;
|
|
143
143
|
break;
|
|
144
144
|
}
|
|
145
145
|
case r.PRERELEASE: {
|
|
@@ -149,7 +149,7 @@ const R = {
|
|
|
149
149
|
message: "请输入修饰符",
|
|
150
150
|
initial: f.ALPHA
|
|
151
151
|
})).identifier;
|
|
152
|
-
s = N(
|
|
152
|
+
s = N(a, t, n), i = o || n;
|
|
153
153
|
break;
|
|
154
154
|
}
|
|
155
155
|
default:
|
|
@@ -157,16 +157,16 @@ const R = {
|
|
|
157
157
|
type: "text",
|
|
158
158
|
name: "customVersion",
|
|
159
159
|
message: "请输入自定义版本号"
|
|
160
|
-
})).customVersion,
|
|
160
|
+
})).customVersion, i = o || f.LATEST;
|
|
161
161
|
}
|
|
162
162
|
if (!s)
|
|
163
163
|
throw new Error("version is empty");
|
|
164
164
|
return {
|
|
165
165
|
name: d,
|
|
166
166
|
version: s,
|
|
167
|
-
tag:
|
|
167
|
+
tag: i
|
|
168
168
|
};
|
|
169
|
-
},
|
|
169
|
+
}, ae = async ({
|
|
170
170
|
type: e,
|
|
171
171
|
packageJson: t,
|
|
172
172
|
distTag: o
|
|
@@ -192,7 +192,7 @@ const R = {
|
|
|
192
192
|
type: n,
|
|
193
193
|
distTag: o
|
|
194
194
|
});
|
|
195
|
-
const
|
|
195
|
+
const i = [
|
|
196
196
|
...s.map((n) => ({
|
|
197
197
|
title: `${n} (${d[n].version})`,
|
|
198
198
|
value: n
|
|
@@ -204,23 +204,23 @@ const R = {
|
|
|
204
204
|
title: n,
|
|
205
205
|
value: n
|
|
206
206
|
}))
|
|
207
|
-
],
|
|
207
|
+
], a = (await L({
|
|
208
208
|
type: "select",
|
|
209
209
|
name: "selectType",
|
|
210
210
|
message: `请选择发布类型,当前版本:${t.version}`,
|
|
211
|
-
choices:
|
|
211
|
+
choices: i
|
|
212
212
|
})).selectType;
|
|
213
|
-
return s.includes(
|
|
213
|
+
return s.includes(a) ? d[a] : P({
|
|
214
214
|
packageJson: t,
|
|
215
|
-
type:
|
|
215
|
+
type: a,
|
|
216
216
|
distTag: o
|
|
217
217
|
});
|
|
218
218
|
}
|
|
219
219
|
}, x = async (e) => {
|
|
220
|
-
const { mode: t, type: o, push: d, rootDir: s, distTag:
|
|
220
|
+
const { mode: t, type: o, push: d, rootDir: s, distTag: i } = e, a = await H(e, () => ({})), n = a[t], A = await W(n), T = $({ rootDir: s }), p = await ae({
|
|
221
221
|
type: o,
|
|
222
222
|
packageJson: T,
|
|
223
|
-
distTag:
|
|
223
|
+
distTag: i
|
|
224
224
|
}), { version: h } = p;
|
|
225
225
|
l(`npm version ${h}`, {
|
|
226
226
|
cwd: s,
|
|
@@ -269,8 +269,8 @@ const R = {
|
|
|
269
269
|
branchName: A.branchName,
|
|
270
270
|
version: p.version,
|
|
271
271
|
remoteInfo: A.remoteInfo
|
|
272
|
-
}), m.success(`发布成功,版本号:${h}`), t === c.NPM && J(
|
|
273
|
-
},
|
|
272
|
+
}), m.success(`发布成功,版本号:${h}`), t === c.NPM && J(a) && M(e);
|
|
273
|
+
}, ie = {
|
|
274
274
|
command: "$0",
|
|
275
275
|
describe: "执行发布命令",
|
|
276
276
|
options: re(),
|
|
@@ -291,7 +291,7 @@ const R = {
|
|
|
291
291
|
version: ce,
|
|
292
292
|
subcommands: [
|
|
293
293
|
ne,
|
|
294
|
-
|
|
294
|
+
ie,
|
|
295
295
|
se
|
|
296
296
|
].map(y),
|
|
297
297
|
demandCommandCount: 1,
|
package/es/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { d as u, b as e, P as b, S as p, a as t, h as d } from "./index-
|
|
2
|
+
import { d as u, b as e, P as b, S as p, a as t, h as d } from "./index-b589f4ab.js";
|
|
3
3
|
import "@done-coding/cli-utils";
|
|
4
4
|
import "node:child_process";
|
|
5
5
|
import "semver";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@done-coding/cli-publish",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.14-alpha.0",
|
|
4
4
|
"description": "项目发布命令行工具",
|
|
5
5
|
"private": false,
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"sideEffects": false,
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@done-coding/cli-inject": "0.5.
|
|
44
|
+
"@done-coding/cli-inject": "0.5.21-alpha.0",
|
|
45
45
|
"@types/node": "^18.0.0",
|
|
46
46
|
"@types/semver": "^7.5.3",
|
|
47
47
|
"@types/yargs": "^17.0.28",
|
|
48
48
|
"rimraf": "^6.0.1",
|
|
49
|
-
"typescript": "^5.
|
|
49
|
+
"typescript": "^5.8.3",
|
|
50
50
|
"vite": "^4.4.11",
|
|
51
51
|
"vite-plugin-dts": "^3.6.0"
|
|
52
52
|
},
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
"node": ">=18.0.0"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@done-coding/cli-utils": "0.8.0",
|
|
57
|
+
"@done-coding/cli-utils": "0.8.2-alpha.0",
|
|
58
58
|
"semver": "^7.5.4"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "b09dd794f69ba2dafe22a3519d712d059c2eb376"
|
|
61
61
|
}
|