@quiteer/scripts 0.0.3 → 0.0.4

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 ADDED
@@ -0,0 +1,68 @@
1
+ # @quiteer/scripts
2
+
3
+ 简化多包仓库的版本管理与变更日志生成,提供便捷的 CLI 命令。
4
+
5
+ ## 安装
6
+
7
+ - 全局安装(推荐)
8
+
9
+ ```bash
10
+ pnpm i -g @quiteer/scripts
11
+ # 或者
12
+ npm i -g @quiteer/scripts
13
+ ```
14
+
15
+ - 项目内安装(作为开发依赖)
16
+
17
+ ```bash
18
+ pnpm add -D @quiteer/scripts
19
+ ```
20
+
21
+ > 运行环境:Node.js ≥ 22.14.0,建议使用 pnpm 管理依赖。
22
+
23
+ ## 快速使用
24
+
25
+ - 查看版本
26
+
27
+ ```bash
28
+ qui -v
29
+ ```
30
+
31
+ - 版本管理与打标签(支持多包选择与自定义前缀标签,同时生成全量 changelog)
32
+
33
+ ```bash
34
+ # 交互选择需要提升版本的包
35
+ qui r --tag-prefix scripts
36
+ ```
37
+
38
+ - 生成全量变更日志(中文,生成 CHANGELOG.md 与 CHANGELOG_TIMELINE.md)
39
+
40
+ ```bash
41
+ qui cl
42
+ ```
43
+
44
+ - 规范化提交(交互式生成符合 Conventional Commits 的提交信息)
45
+
46
+ ```bash
47
+ qui gc
48
+ ```
49
+
50
+ ## 常用工作流示例
51
+
52
+ ```bash
53
+ # 1) 更新版本并创建标签(例如为 scripts 包增加前缀)
54
+ qui r --tag-prefix scripts
55
+
56
+ # 2) 生成 changelog(默认生成全部历史)
57
+ qui cl
58
+
59
+ # 3) 提交并推送(如需发布)
60
+ git add -A && git commit -m "docs(changelog): update"
61
+ # 可选:git push && git push --tags
62
+ ```
63
+
64
+ ## 说明
65
+
66
+ - 多包仓库:发布时可交互选择要更新的包,未选中的包不受影响。
67
+ - 标签前缀:标签命名为 `<prefix>-vX.Y.Z`,可避免多包仓库中的全局标签冲突。
68
+ - changelog:默认基于仓库最初提交到当前 HEAD 的全量历史生成。
package/dist/index.mjs CHANGED
@@ -12,7 +12,7 @@ import enquirer from "enquirer";
12
12
  import { versionBump } from "bumpp";
13
13
 
14
14
  //#region package.json
15
- var version = "0.0.2";
15
+ var version = "0.0.3";
16
16
 
17
17
  //#endregion
18
18
  //#region src/locales/changelog.ts
@@ -196,13 +196,6 @@ function getTypeIcon(type) {
196
196
  "typo": "✏️ "
197
197
  }[type] || "";
198
198
  }
199
- async function getTags() {
200
- return (await execCommand("git", [
201
- "tag",
202
- "--list",
203
- "--sort=-version:refname"
204
- ])).split("\n").filter(Boolean);
205
- }
206
199
  async function getRootCommit() {
207
200
  return await execCommand("git", [
208
201
  "rev-list",
@@ -210,15 +203,6 @@ async function getRootCommit() {
210
203
  "HEAD"
211
204
  ]);
212
205
  }
213
- async function getDateForRef(ref) {
214
- return await execCommand("git", [
215
- "log",
216
- "-1",
217
- "--date=short",
218
- "--format=%ad",
219
- ref
220
- ]) || (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
221
- }
222
206
  async function getCommitsInRange(range) {
223
207
  return (await execCommand("git", [
224
208
  "log",
@@ -378,18 +362,10 @@ function formatTimeline(items, repoUrl) {
378
362
  async function generateChangelogFiles(options) {
379
363
  const repoRoot = await execCommand("git", ["rev-parse", "--show-toplevel"]);
380
364
  const homepage = await readHomepage();
381
- const tags = await getTags();
382
- let title = "未发布";
383
- let date = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
384
- let range = "";
385
- if (tags.length >= 1) {
386
- const latest = tags[0];
387
- const prev = tags[1];
388
- title = latest;
389
- date = await getDateForRef(latest);
390
- range = prev ? `${prev}..${latest}` : `${await getRootCommit()}..${latest}`;
391
- } else range = "HEAD";
392
- let items = await getCommitsInRange(range);
365
+ const root = await getRootCommit();
366
+ const title = "全部历史";
367
+ const date = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
368
+ let items = await getCommitsInRange(`${root}..HEAD`);
393
369
  items = await enrichCommit(items);
394
370
  const fallback = [
395
371
  `## ${title} - ${date}`,
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@quiteer/scripts",
3
3
  "type": "module",
4
- "version": "0.0.3",
5
- "homepage": "https://github.com/TaiAiAc/web",
4
+ "version": "0.0.4",
5
+ "homepage": "https://taiaiac.github.io/web/ci/scripts.html",
6
6
  "publishConfig": {
7
7
  "access": "public",
8
8
  "registry": "https://registry.npmjs.org/"