specweave 1.0.0 → 1.0.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/README.md +6 -10
- package/dist/src/cli/helpers/init/external-import-grouping.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/external-import-grouping.js +44 -8
- package/dist/src/cli/helpers/init/external-import-grouping.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave-kafka/package.json +1 -1
- package/plugins/specweave-release/commands/npm.md +129 -27
package/README.md
CHANGED
|
@@ -4,19 +4,18 @@
|
|
|
4
4
|
|
|
5
5
|
*Drop it into a 10-year-old codebase — it understands everything. Use it on your weekend MVP — specs write themselves. Scale it to 50 teams — JIRA, GitHub, Azure DevOps sync automatically.*
|
|
6
6
|
|
|
7
|
-
[](https://www.npmjs.com/package/specweave/v/1.0.0-rc.1)
|
|
7
|
+
[](https://www.npmjs.com/package/specweave)
|
|
9
8
|
[](https://opensource.org/licenses/MIT)
|
|
10
9
|
[](https://discord.gg/UYg4BGJ65V)
|
|
11
10
|
[](https://www.youtube.com/@antonabyzov)
|
|
12
11
|
[](https://smithery.ai/skills?ns=anton-abyzov&utm_source=github&utm_medium=badge)
|
|
13
12
|
|
|
14
|
-
> ###
|
|
13
|
+
> ### 🎉 v1.0.1 — Production Ready!
|
|
15
14
|
> ```bash
|
|
16
|
-
> npm install -g specweave
|
|
15
|
+
> npm install -g specweave
|
|
17
16
|
> ```
|
|
18
|
-
> **
|
|
19
|
-
> [See release notes →](https://github.com/anton-abyzov/specweave/releases/tag/v1.0.
|
|
17
|
+
> **Highlights:** Multi-project support, GitHub/JIRA/Azure DevOps sync, 24 plugins, living docs, resilient background jobs.
|
|
18
|
+
> [See release notes →](https://github.com/anton-abyzov/specweave/releases/tag/v1.0.1)
|
|
20
19
|
|
|
21
20
|
---
|
|
22
21
|
|
|
@@ -102,10 +101,7 @@ Every AI coding tool promises productivity. But after the chat ends:
|
|
|
102
101
|
## Quick Start
|
|
103
102
|
|
|
104
103
|
```bash
|
|
105
|
-
# Install v1.0.
|
|
106
|
-
npm install -g specweave@1.0.0-rc.1
|
|
107
|
-
|
|
108
|
-
# Or install stable version
|
|
104
|
+
# Install SpecWeave (v1.0.1 — production ready)
|
|
109
105
|
npm install -g specweave
|
|
110
106
|
|
|
111
107
|
# Initialize your project
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-import-grouping.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/external-import-grouping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAI1F;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,iBAAiB,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACxD,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAiCzF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,CA8B3G;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"external-import-grouping.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/external-import-grouping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAI1F;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,iBAAiB,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACxD,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAiCzF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,CA8B3G;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE,CAgLtF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE,CA+E9E"}
|
|
@@ -130,8 +130,23 @@ export function groupAdoItemsByParentHierarchy(items) {
|
|
|
130
130
|
// Create groups for each top-level parent first
|
|
131
131
|
// CRITICAL FIX (v0.30.3): Use area path for projectId, NOT item title
|
|
132
132
|
// This ensures boards like "digital-service-operations" instead of "software-maintenance-..."
|
|
133
|
+
// CRITICAL FIX (v0.37.0): Normalize containerId to prevent duplicate folders
|
|
134
|
+
// Bug: "Nova CAD" creates both "Nova CAD/" and "nova-cad/" folders
|
|
135
|
+
// Root cause: containerId used display name, not normalized form
|
|
133
136
|
for (const [parentId, parentItem] of topLevelParents) {
|
|
134
|
-
|
|
137
|
+
// CRITICAL: Extract PROJECT name (first segment) from area path and normalize
|
|
138
|
+
// This prevents duplicate folders like "Nova CAD" and "nova-cad"
|
|
139
|
+
let containerId = 'default';
|
|
140
|
+
if (parentItem.adoAreaPath) {
|
|
141
|
+
const segments = parentItem.adoAreaPath.split('\\');
|
|
142
|
+
// First segment is the ADO Project name - normalize it for folder use
|
|
143
|
+
const projectSegment = segments[0];
|
|
144
|
+
containerId = normalizeToProjectId(projectSegment) || 'default';
|
|
145
|
+
}
|
|
146
|
+
else if (parentItem.adoProjectName) {
|
|
147
|
+
// Fallback: normalize the project display name
|
|
148
|
+
containerId = normalizeToProjectId(parentItem.adoProjectName) || 'default';
|
|
149
|
+
}
|
|
135
150
|
// CRITICAL (v0.30.3): projectId MUST come from area path, not title
|
|
136
151
|
// Area path: "Acme\Digital-Service-Operations" → "digital-service-operations"
|
|
137
152
|
let projectId = 'default';
|
|
@@ -150,7 +165,7 @@ export function groupAdoItemsByParentHierarchy(items) {
|
|
|
150
165
|
externalContainer: {
|
|
151
166
|
type: 'ado-project',
|
|
152
167
|
containerId,
|
|
153
|
-
containerName: containerId,
|
|
168
|
+
containerName: parentItem.adoProjectName || containerId, // Keep original name for display
|
|
154
169
|
areaPath: parentItem.adoAreaPath
|
|
155
170
|
},
|
|
156
171
|
parentItem
|
|
@@ -176,7 +191,18 @@ export function groupAdoItemsByParentHierarchy(items) {
|
|
|
176
191
|
// No parent found - group by area path (2-level structure: project/areaPath)
|
|
177
192
|
// This handles orphan items (User Stories with parents outside our dataset)
|
|
178
193
|
// CRITICAL FIX (2025-12-01): Group by area path, NOT by User Story title
|
|
179
|
-
|
|
194
|
+
// CRITICAL FIX (v0.37.0): Normalize containerId to prevent duplicate folders
|
|
195
|
+
let containerId = 'default';
|
|
196
|
+
if (item.adoAreaPath) {
|
|
197
|
+
const segments = item.adoAreaPath.split('\\');
|
|
198
|
+
// First segment is the ADO Project name - normalize it for folder use
|
|
199
|
+
const projectSegment = segments[0];
|
|
200
|
+
containerId = normalizeToProjectId(projectSegment) || 'default';
|
|
201
|
+
}
|
|
202
|
+
else if (item.adoProjectName) {
|
|
203
|
+
// Fallback: normalize the project display name
|
|
204
|
+
containerId = normalizeToProjectId(item.adoProjectName) || 'default';
|
|
205
|
+
}
|
|
180
206
|
// Extract area path leaf segment for grouping (e.g., "Project\Platform-Engineering" → "platform-engineering")
|
|
181
207
|
let areaFolder = '_default';
|
|
182
208
|
if (item.adoAreaPath) {
|
|
@@ -198,7 +224,7 @@ export function groupAdoItemsByParentHierarchy(items) {
|
|
|
198
224
|
externalContainer: {
|
|
199
225
|
type: 'ado-project',
|
|
200
226
|
containerId,
|
|
201
|
-
containerName: containerId,
|
|
227
|
+
containerName: item.adoProjectName || containerId, // Keep original name for display
|
|
202
228
|
areaPath: item.adoAreaPath
|
|
203
229
|
}
|
|
204
230
|
});
|
|
@@ -230,17 +256,27 @@ export function groupNonHierarchyItems(items) {
|
|
|
230
256
|
let projectId;
|
|
231
257
|
let externalContainer;
|
|
232
258
|
// JIRA: 1-level structure (Project → SpecWeave Project)
|
|
259
|
+
// CRITICAL FIX (v0.37.0): Normalize containerId to prevent duplicate folders
|
|
260
|
+
// Even though JIRA keys are typically alphanumeric, normalize for safety
|
|
233
261
|
if (item.jiraProjectKey) {
|
|
234
262
|
containerType = 'jira';
|
|
235
|
-
containerId = item.jiraProjectKey;
|
|
236
|
-
projectId =
|
|
263
|
+
containerId = normalizeToProjectId(item.jiraProjectKey) || '_default';
|
|
264
|
+
projectId = containerId; // Same as containerId for 1-level structure
|
|
237
265
|
groupKey = `jira:${containerId}`;
|
|
238
266
|
externalContainer = undefined;
|
|
239
267
|
}
|
|
240
268
|
// Check for ADO container context (without hierarchy)
|
|
269
|
+
// CRITICAL FIX (v0.37.0): Normalize containerId to prevent duplicate folders
|
|
241
270
|
else if (item.adoProjectName) {
|
|
242
271
|
containerType = 'ado';
|
|
243
|
-
containerId
|
|
272
|
+
// Normalize containerId from area path first segment or project name
|
|
273
|
+
if (item.adoAreaPath) {
|
|
274
|
+
const segments = item.adoAreaPath.split('\\');
|
|
275
|
+
containerId = normalizeToProjectId(segments[0]) || 'default';
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
containerId = normalizeToProjectId(item.adoProjectName) || 'default';
|
|
279
|
+
}
|
|
244
280
|
// Project ID from area path (extract last segment) or default
|
|
245
281
|
if (item.adoAreaPath) {
|
|
246
282
|
const areaSegments = item.adoAreaPath.split('\\');
|
|
@@ -254,7 +290,7 @@ export function groupNonHierarchyItems(items) {
|
|
|
254
290
|
externalContainer = {
|
|
255
291
|
type: 'ado-project',
|
|
256
292
|
containerId: containerId,
|
|
257
|
-
containerName:
|
|
293
|
+
containerName: item.adoProjectName, // Keep original name for display
|
|
258
294
|
areaPath: item.adoAreaPath
|
|
259
295
|
};
|
|
260
296
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-import-grouping.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/external-import-grouping.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"external-import-grouping.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/init/external-import-grouping.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -7,6 +7,44 @@ description: Bump patch version, auto-commit dirty changes, push to GitHub, buil
|
|
|
7
7
|
|
|
8
8
|
You are the NPM Release Assistant. Your job is to automate the patch version release process.
|
|
9
9
|
|
|
10
|
+
## CRITICAL: Prerelease Version Handling
|
|
11
|
+
|
|
12
|
+
**⚠️ NEVER use `npm version patch` on prerelease versions!**
|
|
13
|
+
|
|
14
|
+
`npm version patch` converts `1.0.0-rc.1` → `1.0.0` (WRONG!)
|
|
15
|
+
|
|
16
|
+
**CORRECT behavior:**
|
|
17
|
+
- `1.0.0-rc.1` → `1.0.0-rc.2` (increment prerelease)
|
|
18
|
+
- `1.0.0-beta.5` → `1.0.0-beta.6` (increment prerelease)
|
|
19
|
+
- `1.0.0` → `1.0.1` (increment patch - stable version)
|
|
20
|
+
|
|
21
|
+
**Use `--stable` flag ONLY when intentionally promoting to stable release!**
|
|
22
|
+
|
|
23
|
+
### Version Detection Algorithm
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Get current version
|
|
27
|
+
CURRENT=$(node -p "require('./package.json').version")
|
|
28
|
+
|
|
29
|
+
# Check if it's a prerelease (contains hyphen: 1.0.0-rc.1, 1.0.0-beta.2, etc.)
|
|
30
|
+
if [[ "$CURRENT" == *"-"* ]]; then
|
|
31
|
+
IS_PRERELEASE=true
|
|
32
|
+
else
|
|
33
|
+
IS_PRERELEASE=false
|
|
34
|
+
fi
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Version Bump Command Selection
|
|
38
|
+
|
|
39
|
+
| Current Version | Flag | Command | Result |
|
|
40
|
+
|-----------------|------|---------|--------|
|
|
41
|
+
| `1.0.0-rc.1` | (none) | `npm version prerelease` | `1.0.0-rc.2` |
|
|
42
|
+
| `1.0.0-rc.5` | `--stable` | `npm version patch` | `1.0.1` |
|
|
43
|
+
| `1.0.0` | (none) | `npm version patch` | `1.0.1` |
|
|
44
|
+
| `1.0.0` | `--stable` | `npm version patch` | `1.0.1` |
|
|
45
|
+
|
|
46
|
+
**Rule**: If prerelease AND no `--stable` flag → use `npm version prerelease`
|
|
47
|
+
|
|
10
48
|
## Command Modes
|
|
11
49
|
|
|
12
50
|
| Command | Flow | Use Case |
|
|
@@ -16,6 +54,7 @@ You are the NPM Release Assistant. Your job is to automate the patch version rel
|
|
|
16
54
|
| `/sw-release:npm --ci` | Bump → Push → **CI publishes** | Let GitHub Actions handle npm publish |
|
|
17
55
|
| `/sw-release:npm --only` | Bump → Build → **Publish locally** → NO push | Quick local release, push later |
|
|
18
56
|
| `/sw-release:npm --only --local` | **Bump ONLY** → NO build, NO publish, NO git | FASTEST: Local testing only |
|
|
57
|
+
| `/sw-release:npm --stable` | Same as default, but promotes prerelease to stable | **PROMOTE TO STABLE** |
|
|
19
58
|
|
|
20
59
|
## Detecting Mode
|
|
21
60
|
|
|
@@ -26,16 +65,18 @@ Check flags in the command invocation:
|
|
|
26
65
|
--ci → CI MODE: push to git, GitHub Actions publishes (requires clean working tree)
|
|
27
66
|
--only --local → Version bump ONLY (no build, no publish, no git) - FASTEST
|
|
28
67
|
--only → Direct publish to npm (bypass CI), no git push
|
|
68
|
+
--stable → Force promote prerelease to stable (use with any mode)
|
|
29
69
|
(no flags) → DEFAULT: INSTANT RELEASE (auto-commit, push, build, publish, push tag)
|
|
30
70
|
```
|
|
31
71
|
|
|
32
72
|
**Flag Detection Order:**
|
|
33
|
-
1. Check for `--
|
|
34
|
-
2. Check for `--
|
|
35
|
-
3. Check for `--
|
|
36
|
-
4.
|
|
37
|
-
5. If `--only`
|
|
38
|
-
6.
|
|
73
|
+
1. Check for `--stable` flag → Set PROMOTE_TO_STABLE=true (affects version bump command)
|
|
74
|
+
2. Check for `--quick` flag → QUICK MODE (save + local publish, NO GH workflow)
|
|
75
|
+
3. Check for `--ci` flag → CI MODE (GitHub Actions publishes)
|
|
76
|
+
4. Check for `--only` flag
|
|
77
|
+
5. If `--only` present, check for `--local` flag → LOCAL MODE (fastest)
|
|
78
|
+
6. If `--only` only → DIRECT MODE
|
|
79
|
+
7. No flags → **DEFAULT: INSTANT RELEASE** (auto-commit dirty, push, build, publish)
|
|
39
80
|
|
|
40
81
|
**If `--quick`**: Use QUICK MODE (section "Quick Mode Workflow")
|
|
41
82
|
**If `--ci`**: Use CI MODE (section "CI Mode Workflow")
|
|
@@ -104,11 +145,36 @@ git push origin develop
|
|
|
104
145
|
- ✅ No risk of "released but not pushed" state
|
|
105
146
|
- ✅ Clean recovery if anything fails mid-release
|
|
106
147
|
|
|
107
|
-
### 4. Bump
|
|
148
|
+
### 4. Smart Version Bump (Prerelease-Aware!)
|
|
149
|
+
|
|
150
|
+
**CRITICAL: Detect prerelease and bump correctly!**
|
|
108
151
|
|
|
109
152
|
```bash
|
|
110
|
-
|
|
111
|
-
|
|
153
|
+
# Get current version
|
|
154
|
+
CURRENT=$(node -p "require('./package.json').version")
|
|
155
|
+
echo "Current version: $CURRENT"
|
|
156
|
+
|
|
157
|
+
# Check if prerelease (contains hyphen like 1.0.0-rc.1, 1.0.0-beta.2)
|
|
158
|
+
if [[ "$CURRENT" == *"-"* ]]; then
|
|
159
|
+
echo "Detected PRERELEASE version"
|
|
160
|
+
# Check for --stable flag in command args
|
|
161
|
+
if [[ "--stable flag was passed" ]]; then
|
|
162
|
+
echo "Promoting to stable (--stable flag)"
|
|
163
|
+
npm version patch -m "chore: release stable version %s"
|
|
164
|
+
else
|
|
165
|
+
echo "Incrementing prerelease number"
|
|
166
|
+
npm version prerelease -m "chore: bump version to %s"
|
|
167
|
+
fi
|
|
168
|
+
else
|
|
169
|
+
echo "Detected STABLE version"
|
|
170
|
+
npm version patch -m "chore: bump version to %s"
|
|
171
|
+
fi
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Examples:**
|
|
175
|
+
- `1.0.0-rc.1` → `1.0.0-rc.2` (prerelease increment, DEFAULT)
|
|
176
|
+
- `1.0.0-rc.5` + `--stable` → `1.0.1` (promote to stable, EXPLICIT)
|
|
177
|
+
- `1.0.0` → `1.0.1` (patch increment)
|
|
112
178
|
|
|
113
179
|
This creates a NEW commit + tag locally.
|
|
114
180
|
|
|
@@ -215,10 +281,20 @@ git commit -m "[auto-generated message based on changed files]"
|
|
|
215
281
|
git push origin develop
|
|
216
282
|
```
|
|
217
283
|
|
|
218
|
-
### 4. Bump
|
|
284
|
+
### 4. Smart Version Bump (Prerelease-Aware!)
|
|
285
|
+
|
|
286
|
+
**CRITICAL: Same logic as Default Mode - detect prerelease!**
|
|
219
287
|
|
|
220
288
|
```bash
|
|
221
|
-
|
|
289
|
+
CURRENT=$(node -p "require('./package.json').version")
|
|
290
|
+
|
|
291
|
+
if [[ "$CURRENT" == *"-"* ]]; then
|
|
292
|
+
# Prerelease: bump prerelease number (1.0.0-rc.1 → 1.0.0-rc.2)
|
|
293
|
+
npm version prerelease -m "chore: bump version to %s"
|
|
294
|
+
else
|
|
295
|
+
# Stable: bump patch (1.0.0 → 1.0.1)
|
|
296
|
+
npm version patch -m "chore: bump version to %s"
|
|
297
|
+
fi
|
|
222
298
|
```
|
|
223
299
|
|
|
224
300
|
This creates a NEW commit + tag locally.
|
|
@@ -303,11 +379,18 @@ node -p "require('./package.json').version"
|
|
|
303
379
|
- Not on `develop` branch (ask user to switch)
|
|
304
380
|
- Uncommitted changes exist (ask user to commit first)
|
|
305
381
|
|
|
306
|
-
### 2. Bump
|
|
382
|
+
### 2. Smart Version Bump (Prerelease-Aware!)
|
|
307
383
|
|
|
308
384
|
```bash
|
|
309
|
-
|
|
310
|
-
|
|
385
|
+
CURRENT=$(node -p "require('./package.json').version")
|
|
386
|
+
|
|
387
|
+
if [[ "$CURRENT" == *"-"* ]]; then
|
|
388
|
+
# Prerelease: bump prerelease number
|
|
389
|
+
npm version prerelease -m "chore: bump version to %s"
|
|
390
|
+
else
|
|
391
|
+
# Stable: bump patch
|
|
392
|
+
npm version patch -m "chore: bump version to %s"
|
|
393
|
+
fi
|
|
311
394
|
```
|
|
312
395
|
|
|
313
396
|
### 3. Extract New Version
|
|
@@ -370,11 +453,18 @@ node -p "require('./package.json').version"
|
|
|
370
453
|
- Not on `develop` branch (ask user to switch)
|
|
371
454
|
- Uncommitted changes exist (ask user to commit first)
|
|
372
455
|
|
|
373
|
-
### 2.
|
|
456
|
+
### 2. Smart Version Bump (Prerelease-Aware!)
|
|
374
457
|
|
|
375
458
|
```bash
|
|
376
|
-
|
|
377
|
-
|
|
459
|
+
CURRENT=$(node -p "require('./package.json').version")
|
|
460
|
+
|
|
461
|
+
if [[ "$CURRENT" == *"-"* ]]; then
|
|
462
|
+
# Prerelease: bump prerelease number (1.0.0-rc.1 → 1.0.0-rc.2)
|
|
463
|
+
npm version prerelease -m "chore: bump version to %s"
|
|
464
|
+
else
|
|
465
|
+
# Stable: bump patch (1.0.0 → 1.0.1)
|
|
466
|
+
npm version patch -m "chore: bump version to %s"
|
|
467
|
+
fi
|
|
378
468
|
```
|
|
379
469
|
|
|
380
470
|
**What this does**:
|
|
@@ -473,15 +563,19 @@ Show the user:
|
|
|
473
563
|
|
|
474
564
|
# FASTEST: Version bump only (no publish, no git, no build)
|
|
475
565
|
/sw-release:npm --only --local
|
|
566
|
+
|
|
567
|
+
# PROMOTE prerelease to stable (1.0.0-rc.5 → 1.0.1)
|
|
568
|
+
/sw-release:npm --stable
|
|
476
569
|
```
|
|
477
570
|
|
|
478
|
-
| Scenario | Command |
|
|
479
|
-
|
|
480
|
-
| **INSTANT RELEASE** | (no flags) |
|
|
481
|
-
| **QUICK RELEASE** | `--quick` |
|
|
482
|
-
| CI release | `--ci` |
|
|
483
|
-
|
|
|
484
|
-
|
|
|
571
|
+
| Scenario | Command | Prerelease Handling | Git Pushed | Tag Pushed |
|
|
572
|
+
|----------|---------|---------------------|------------|------------|
|
|
573
|
+
| **INSTANT RELEASE** | (no flags) | `rc.1`→`rc.2` (smart) | ✅ Yes | ✅ Yes |
|
|
574
|
+
| **QUICK RELEASE** | `--quick` | `rc.1`→`rc.2` (smart) | ✅ Yes | ❌ No |
|
|
575
|
+
| CI release | `--ci` | `rc.1`→`rc.2` (smart) | ✅ Yes | ✅ Yes |
|
|
576
|
+
| Local publish | `--only` | `rc.1`→`rc.2` (smart) | ❌ No | ❌ No |
|
|
577
|
+
| Local bump | `--only --local` | `rc.1`→`rc.2` (smart) | ❌ No | ❌ No |
|
|
578
|
+
| **PROMOTE** | `--stable` | `rc.X`→`X.Y.Z+1` | ✅ Yes | ✅ Yes |
|
|
485
579
|
|
|
486
580
|
---
|
|
487
581
|
|
|
@@ -503,16 +597,24 @@ node -p "require('./package.json').version"
|
|
|
503
597
|
|
|
504
598
|
**NO git checks** - we're not committing or pushing anything!
|
|
505
599
|
|
|
506
|
-
### 2.
|
|
600
|
+
### 2. Smart Version Bump (NO git commit, NO tag)
|
|
507
601
|
|
|
508
602
|
```bash
|
|
509
|
-
|
|
510
|
-
|
|
603
|
+
CURRENT=$(node -p "require('./package.json').version")
|
|
604
|
+
|
|
605
|
+
if [[ "$CURRENT" == *"-"* ]]; then
|
|
606
|
+
# Prerelease: bump prerelease number (1.0.0-rc.1 → 1.0.0-rc.2)
|
|
607
|
+
npm version prerelease --no-git-tag-version
|
|
608
|
+
else
|
|
609
|
+
# Stable: bump patch (1.0.0 → 1.0.1)
|
|
610
|
+
npm version patch --no-git-tag-version
|
|
611
|
+
fi
|
|
511
612
|
```
|
|
512
613
|
|
|
513
614
|
**What this does**:
|
|
514
615
|
- Updates `package.json` version ONLY
|
|
515
616
|
- Updates `package-lock.json` version ONLY
|
|
617
|
+
- Respects prerelease versions!
|
|
516
618
|
- NO git commit created
|
|
517
619
|
- NO git tag created
|
|
518
620
|
- INSTANT (< 1 second)
|