@vc-shell/release-config 1.1.0 → 1.1.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/CHANGELOG.md +9 -0
- package/dist/release-config.js +85 -70
- package/dist/release.d.ts.map +1 -1
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
## [1.1.1](https://github.com/VirtoCommerce/vc-shell/compare/v1.1.0...v1.1.1) (2025-04-29)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* enhance release process with npm tag detection and commit message generation ([fbc92b6](https://github.com/VirtoCommerce/vc-shell/commit/fbc92b62922a5ba118a87507293334fa5138b9f1))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
1
10
|
# [1.1.0](https://github.com/VirtoCommerce/vc-shell/compare/v1.1.0-alpha.2...v1.1.0) (2025-04-29)
|
|
2
11
|
|
|
3
12
|
|
package/dist/release-config.js
CHANGED
|
@@ -1,37 +1,45 @@
|
|
|
1
1
|
import c from "prompts";
|
|
2
|
-
import { inc as v, valid as C, parse as
|
|
3
|
-
import { readFileSync as V } from "node:fs";
|
|
4
|
-
import
|
|
2
|
+
import { inc as v, valid as C, parse as S } from "semver";
|
|
3
|
+
import { readFileSync as V, writeFileSync as I } from "node:fs";
|
|
4
|
+
import k from "node:path";
|
|
5
5
|
import o from "chalk";
|
|
6
|
-
import
|
|
7
|
-
import { argv as
|
|
8
|
-
import { sync as
|
|
9
|
-
const
|
|
6
|
+
import R from "mri";
|
|
7
|
+
import { argv as U } from "node:process";
|
|
8
|
+
import { sync as A } from "cross-spawn";
|
|
9
|
+
const e = R(U.slice(2)), b = !!e.dry;
|
|
10
10
|
b && (console.log(o.inverse(o.yellow(" DRY RUN "))), console.log());
|
|
11
|
-
function y(
|
|
12
|
-
const s =
|
|
11
|
+
function y(t) {
|
|
12
|
+
const s = k.resolve(t), l = k.resolve(s, "package.json");
|
|
13
13
|
return { pkg: JSON.parse(V(l, "utf-8")), pkgDir: s, pkgPath: l };
|
|
14
14
|
}
|
|
15
|
-
async function
|
|
16
|
-
|
|
15
|
+
async function D(t, s) {
|
|
16
|
+
if (b) {
|
|
17
|
+
console.log(o.blue(`[dryrun] Writing package.json to ${t}`));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
I(t, JSON.stringify(s, null, 2) + `
|
|
21
|
+
`, "utf-8");
|
|
17
22
|
}
|
|
18
|
-
async function
|
|
19
|
-
return
|
|
23
|
+
async function N(t, s, l) {
|
|
24
|
+
return A(t, s, { stdio: "inherit", ...l });
|
|
20
25
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return console.log(o.cyan(n));
|
|
26
|
+
async function M(t, s, l) {
|
|
27
|
+
return console.log(o.blue(`[dryrun] ${t} ${s.join(" ")}`), l || "");
|
|
24
28
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
const u = b ? M : N;
|
|
30
|
+
function $(t) {
|
|
31
|
+
return console.log(o.cyan(t));
|
|
32
|
+
}
|
|
33
|
+
function E(t) {
|
|
34
|
+
function s(r, n) {
|
|
35
|
+
if (r === "prerelease" && n === "alpha") {
|
|
36
|
+
if (t.includes("-alpha")) {
|
|
37
|
+
const [f, m] = t.split("-alpha."), h = parseInt(m) + 1;
|
|
38
|
+
return `${f}-alpha.${h}`;
|
|
31
39
|
}
|
|
32
|
-
return `${v(
|
|
40
|
+
return `${v(t, "patch")}-alpha.0`;
|
|
33
41
|
}
|
|
34
|
-
return v(
|
|
42
|
+
return v(t, r);
|
|
35
43
|
}
|
|
36
44
|
return [
|
|
37
45
|
{
|
|
@@ -56,35 +64,35 @@ function S(n) {
|
|
|
56
64
|
}
|
|
57
65
|
].map((r) => (r.title = `${r.title} (${r.value})`, r));
|
|
58
66
|
}
|
|
59
|
-
const
|
|
60
|
-
packages:
|
|
67
|
+
const Y = async ({
|
|
68
|
+
packages: t,
|
|
61
69
|
bumpVersion: s,
|
|
62
70
|
generateChangelog: l,
|
|
63
71
|
toTag: r
|
|
64
72
|
}) => {
|
|
65
|
-
let
|
|
66
|
-
if (
|
|
73
|
+
let n;
|
|
74
|
+
if (t.length === 0)
|
|
67
75
|
throw new Error("No packages to release");
|
|
68
|
-
const { pkg:
|
|
69
|
-
if (!
|
|
70
|
-
const { release:
|
|
76
|
+
const { pkg: d } = y(t[0]);
|
|
77
|
+
if (!n) {
|
|
78
|
+
const { release: a } = await c({
|
|
71
79
|
type: "select",
|
|
72
80
|
name: "release",
|
|
73
81
|
message: "Select release type",
|
|
74
|
-
choices:
|
|
82
|
+
choices: E(d.version)
|
|
75
83
|
});
|
|
76
|
-
|
|
84
|
+
a === "custom" ? n = (await c({
|
|
77
85
|
type: "text",
|
|
78
86
|
name: "version",
|
|
79
87
|
message: "Input custom version",
|
|
80
|
-
initial:
|
|
81
|
-
})).version :
|
|
88
|
+
initial: d.version
|
|
89
|
+
})).version : n = a;
|
|
82
90
|
}
|
|
83
|
-
if (!C(
|
|
84
|
-
throw new Error(`invalid target version: ${
|
|
85
|
-
const
|
|
86
|
-
if (
|
|
87
|
-
const { npmTag:
|
|
91
|
+
if (!C(n))
|
|
92
|
+
throw new Error(`invalid target version: ${n}`);
|
|
93
|
+
const f = n.match(/-([a-zA-Z]+)(?:\.(\d+))?$/);
|
|
94
|
+
if (f && !e.tag && (e.tag = f[1]), !e.tag) {
|
|
95
|
+
const { npmTag: a } = await c({
|
|
88
96
|
type: "select",
|
|
89
97
|
name: "npmTag",
|
|
90
98
|
message: "Select npm distribution tag",
|
|
@@ -96,60 +104,67 @@ const H = async ({
|
|
|
96
104
|
{ title: "custom", value: "custom" }
|
|
97
105
|
]
|
|
98
106
|
});
|
|
99
|
-
if (
|
|
107
|
+
if (a === "custom") {
|
|
100
108
|
const g = await c({
|
|
101
109
|
type: "text",
|
|
102
110
|
name: "customTag",
|
|
103
111
|
message: "Input custom npm tag",
|
|
104
112
|
initial: "latest"
|
|
105
113
|
});
|
|
106
|
-
|
|
107
|
-
} else
|
|
114
|
+
e.tag = g.customTag;
|
|
115
|
+
} else a !== "latest" && (e.tag = a);
|
|
108
116
|
}
|
|
109
|
-
if (
|
|
110
|
-
const
|
|
111
|
-
if (
|
|
112
|
-
let i,
|
|
113
|
-
|
|
114
|
-
const { usePreNum:
|
|
117
|
+
if (e.tag && e.tag !== "latest") {
|
|
118
|
+
const a = S(n);
|
|
119
|
+
if (a && !n.includes(`-${e.tag}`)) {
|
|
120
|
+
let i, p = 0;
|
|
121
|
+
a.prerelease.length > 0 ? (a.prerelease.length > 1 && typeof a.prerelease[1] == "number" && (p = a.prerelease[1]), i = `${`${a.major}.${a.minor}.${a.patch}`}-${e.tag}`) : i = `${v(n, "minor")}-${e.tag}`;
|
|
122
|
+
const { usePreNum: w } = await c({
|
|
115
123
|
type: "confirm",
|
|
116
124
|
name: "usePreNum",
|
|
117
|
-
message: `Add prerelease number to version? (e.g. ${i}.${
|
|
125
|
+
message: `Add prerelease number to version? (e.g. ${i}.${p})`,
|
|
118
126
|
initial: !0
|
|
119
127
|
});
|
|
120
|
-
|
|
121
|
-
const { confirmVersionChange:
|
|
128
|
+
w && (i = `${i}.${p}`);
|
|
129
|
+
const { confirmVersionChange: j } = await c({
|
|
122
130
|
type: "confirm",
|
|
123
131
|
name: "confirmVersionChange",
|
|
124
|
-
message: `Update version from ${o.yellow(
|
|
132
|
+
message: `Update version from ${o.yellow(n)} to ${o.green(i)} to match ${o.blue(e.tag)} tag?`
|
|
125
133
|
});
|
|
126
|
-
|
|
134
|
+
j && (n = i, console.log(`Version updated to ${o.green(n)}`));
|
|
127
135
|
}
|
|
128
136
|
}
|
|
129
|
-
const m = r(
|
|
137
|
+
const m = r(n);
|
|
138
|
+
let h = `release: ${m}`;
|
|
139
|
+
e.tag && e.tag !== "latest" && (h += ` with npm tag ${e.tag}`);
|
|
140
|
+
const { yes: P } = await c({
|
|
130
141
|
type: "confirm",
|
|
131
142
|
name: "yes",
|
|
132
|
-
message: `Releasing ${o.yellow(m)}${
|
|
143
|
+
message: `Releasing ${o.yellow(m)}${e.tag && e.tag !== "latest" ? ` with npm tag ${o.blue(e.tag)}` : ""} Confirm?`
|
|
133
144
|
});
|
|
134
|
-
if (
|
|
135
|
-
for (let
|
|
136
|
-
const g =
|
|
137
|
-
|
|
138
|
-
Updating ${o.green(i.name)} package version to ${o.green(
|
|
139
|
-
|
|
145
|
+
if (!P) return;
|
|
146
|
+
for (let a = 0; a < t.length; a++) {
|
|
147
|
+
const g = t[a], { pkg: i } = y(g);
|
|
148
|
+
if ($(`
|
|
149
|
+
Updating ${o.green(i.name)} package version to ${o.green(n)}...`), await s(i.name, n), e.tag && e.tag !== "latest") {
|
|
150
|
+
const p = y(g), w = { ...p.pkg, npmTag: e.tag };
|
|
151
|
+
await D(p.pkgPath, w), console.log(`Added npmTag: ${o.blue(e.tag)} to ${o.green(i.name)}`);
|
|
152
|
+
}
|
|
153
|
+
$(`
|
|
154
|
+
Generating ${o.green(i.name)} changelog...`), await l(i.name, n, g);
|
|
140
155
|
}
|
|
141
|
-
const { stdout:
|
|
142
|
-
if (
|
|
143
|
-
|
|
144
|
-
Committing changes...`), await
|
|
156
|
+
const { stdout: T } = await N("git", ["diff"], { stdio: "pipe" });
|
|
157
|
+
if (T)
|
|
158
|
+
$(`
|
|
159
|
+
Committing changes...`), await u("git", ["add", "-A"]), await u("git", ["commit", "-m", h, "--no-verify"]), await u("git", ["tag", m]);
|
|
145
160
|
else {
|
|
146
161
|
console.log("No changes to commit.");
|
|
147
162
|
return;
|
|
148
163
|
}
|
|
149
|
-
|
|
150
|
-
Pushing to GitHub...`), await
|
|
151
|
-
NOTE: This release will be published to npm with tag ${o.blue(
|
|
164
|
+
$(`
|
|
165
|
+
Pushing to GitHub...`), await u("git", ["push", "origin", `refs/tags/${m}`]), await u("git", ["push"]), e.tag && e.tag !== "latest" && console.log(`
|
|
166
|
+
NOTE: This release will be published to npm with tag ${o.blue(e.tag)}`), console.log();
|
|
152
167
|
};
|
|
153
168
|
export {
|
|
154
|
-
|
|
169
|
+
Y as release
|
|
155
170
|
};
|
package/dist/release.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"AAQA;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAU,sDAK3B;IACD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtG,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC,
|
|
1
|
+
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"AAQA;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAU,sDAK3B;IACD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtG,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC,kBAqLA,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vc-shell/release-config",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/release-config.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -22,12 +22,13 @@
|
|
|
22
22
|
"@types/cross-spawn": "^6.0.6",
|
|
23
23
|
"@types/prompts": "^2.4.7",
|
|
24
24
|
"@types/semver": "^7.5.4",
|
|
25
|
-
"@vc-shell/ts-config": "^1.1.
|
|
25
|
+
"@vc-shell/ts-config": "^1.1.1",
|
|
26
26
|
"typescript": "^5.8.3",
|
|
27
27
|
"vite-plugin-dts": "^3.6.4"
|
|
28
28
|
},
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "public",
|
|
31
31
|
"registry": "https://registry.npmjs.org/"
|
|
32
|
-
}
|
|
32
|
+
},
|
|
33
|
+
"npmTag": "next"
|
|
33
34
|
}
|