@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 CHANGED
@@ -1,7 +1,250 @@
1
1
  # @done-coding/cli-publish
2
2
 
3
- 项目发布命令行工具
3
+ 项目发布命令行工具 - 自动化项目版本管理和发布流程
4
4
 
5
- ## 使用
5
+ [![npm version](https://badge.fury.io/js/@done-coding%2Fcli-publish.svg)](https://www.npmjs.com/package/@done-coding/cli-publish)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
7
 
7
- npm install @done-coding/cli-publish
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
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { c as m } from "./index-d28c260e.js";
2
+ import { c as m } from "./index-b589f4ab.js";
3
3
  import "@done-coding/cli-utils";
4
4
  import "node:child_process";
5
5
  import "semver";
@@ -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.12",
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: a, version: i } = s;
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 ${a}@${i}`, {
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 ${a}`).toString().trim().split(`
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 === i
69
+ ([, E]) => E === a
70
70
  )) == null ? void 0 : g[0];
71
71
  if (!h)
72
- return m.warn(`没有找到 ${a}@${i} 对应的dist-tag`);
73
- const C = z.resolve(n, "node_modules", a), u = $({
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 = "", a;
129
- const { version: i } = e;
130
- if (!i)
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(i, t), a = o || f.LATEST;
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(i, t, f.ALPHA), a = o || f.ALPHA;
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(i, t, n), a = o || 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, a = o || f.LATEST;
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: a
167
+ tag: i
168
168
  };
169
- }, ie = async ({
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 a = [
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
- ], i = (await L({
207
+ ], a = (await L({
208
208
  type: "select",
209
209
  name: "selectType",
210
210
  message: `请选择发布类型,当前版本:${t.version}`,
211
- choices: a
211
+ choices: i
212
212
  })).selectType;
213
- return s.includes(i) ? d[i] : P({
213
+ return s.includes(a) ? d[a] : P({
214
214
  packageJson: t,
215
- type: i,
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: a } = e, i = await H(e, () => ({})), n = i[t], A = await W(n), T = $({ rootDir: s }), p = await ie({
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: a
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(i) && M(e);
273
- }, ae = {
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
- ae,
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-d28c260e.js";
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.12",
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.19",
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.2.2",
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": "e68f726aa899f75c4d294b11620f343c953a74c3"
60
+ "gitHead": "b09dd794f69ba2dafe22a3519d712d059c2eb376"
61
61
  }