@vc-shell/release-config 1.1.91-alpha.5 → 1.1.92
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 +504 -305
- package/README.md +32 -280
- package/dist/release-config.js +126 -246
- package/dist/release.d.ts +6 -18
- package/dist/release.d.ts.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/package.json +3 -6
package/README.md
CHANGED
|
@@ -1,313 +1,65 @@
|
|
|
1
1
|
# @vc-shell/release-config
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A utility package for managing releases in VC-Shell projects.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
- **npm distribution tags** - automated tag management
|
|
12
|
-
- **Hybrid changelog format** - detailed in root + minimal in packages
|
|
13
|
-
- **Root package versioning** - root package.json stays synchronized
|
|
14
|
-
- **Apps synchronization** - automatic @vc-shell/* dependency updates in apps/
|
|
15
|
-
- **Initial changelog generation** - create changelogs from entire git history
|
|
16
|
-
- **Backward compatible** - maintains existing release script API
|
|
7
|
+
- Versioning with [semver](https://semver.org/) support
|
|
8
|
+
- Changelog generation with [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog)
|
|
9
|
+
- Git tagging and commits
|
|
10
|
+
- Support for npm distribution tags (`latest`, `next`, `beta`, `alpha`, etc.)
|
|
17
11
|
|
|
18
12
|
## Usage
|
|
19
13
|
|
|
20
|
-
The package provides a
|
|
14
|
+
The release-config package provides a streamlined workflow for versioning and publishing packages:
|
|
21
15
|
|
|
22
|
-
```
|
|
16
|
+
```ts
|
|
23
17
|
import { release } from "@vc-shell/release-config";
|
|
24
18
|
|
|
25
19
|
release({
|
|
26
|
-
packages: [
|
|
20
|
+
packages: [
|
|
21
|
+
".", // root
|
|
22
|
+
"packages/a",
|
|
23
|
+
"packages/b",
|
|
24
|
+
],
|
|
27
25
|
toTag: (version) => `v${version}`,
|
|
28
|
-
bumpVersion: async (pkgName,
|
|
29
|
-
//
|
|
26
|
+
bumpVersion: async (pkgName, pkgVersion) => {
|
|
27
|
+
// Your version bump implementation
|
|
30
28
|
},
|
|
31
|
-
generateChangelog: async (pkgName,
|
|
32
|
-
//
|
|
29
|
+
generateChangelog: async (pkgName, pkgVersion, workspaceName) => {
|
|
30
|
+
// Your changelog generation implementation
|
|
33
31
|
},
|
|
34
32
|
});
|
|
35
33
|
```
|
|
36
34
|
|
|
37
|
-
##
|
|
38
|
-
|
|
39
|
-
**Pre-version:**
|
|
40
|
-
1. User prompts - select release type (automatic/prerelease/graduate/custom)
|
|
41
|
-
2. User prompts - select npm tag (latest/next/alpha/beta/rc)
|
|
42
|
-
3. User confirmation
|
|
35
|
+
## NPM Distribution Tags
|
|
43
36
|
|
|
44
|
-
|
|
45
|
-
4. Lerna analyzes git history using conventional commits
|
|
46
|
-
5. Determines which packages changed
|
|
47
|
-
6. Updates all package versions (fixed versioning)
|
|
48
|
-
7. Generates CHANGELOG.md for each package
|
|
49
|
-
8. Synchronizes internal dependencies automatically
|
|
50
|
-
9. Creates git commit and tag
|
|
37
|
+
Release-config now supports setting npm distribution tags during the release process. When running a release, you will be prompted to select a distribution tag:
|
|
51
38
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
14. Generates root CHANGELOG.md with package grouping
|
|
58
|
-
15. Updates npmTag field in package.json
|
|
59
|
-
16. Amends git commit with all changes
|
|
39
|
+
- `latest` (default) - The default distribution tag for stable releases
|
|
40
|
+
- `next` - For upcoming features that are ready for testing
|
|
41
|
+
- `beta` - For beta releases (automatically selected for versions containing "beta")
|
|
42
|
+
- `alpha` - For alpha releases (automatically selected for versions containing "alpha")
|
|
43
|
+
- `custom` - Allows specifying a custom distribution tag
|
|
60
44
|
|
|
61
|
-
|
|
45
|
+
After selecting a tag, you'll receive instructions on how to publish the packages with the selected tag:
|
|
62
46
|
|
|
63
47
|
```bash
|
|
64
|
-
#
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
# Dry run - performs all steps except git operations
|
|
68
|
-
yarn release:dry
|
|
48
|
+
# Using npm directly
|
|
49
|
+
npm publish --tag next
|
|
69
50
|
|
|
70
|
-
#
|
|
71
|
-
yarn
|
|
72
|
-
|
|
73
|
-
# Show changed packages
|
|
74
|
-
yarn changed
|
|
75
|
-
|
|
76
|
-
# Show diff since last release
|
|
77
|
-
yarn diff
|
|
51
|
+
# Using yarn workspaces script
|
|
52
|
+
yarn publish:tag --tag next
|
|
78
53
|
```
|
|
79
54
|
|
|
80
|
-
|
|
55
|
+
## Configuration
|
|
81
56
|
|
|
82
|
-
|
|
57
|
+
You can also provide the tag via command line arguments:
|
|
83
58
|
|
|
84
59
|
```bash
|
|
85
|
-
yarn
|
|
60
|
+
yarn release --tag next
|
|
86
61
|
```
|
|
87
62
|
|
|
88
|
-
This command:
|
|
89
|
-
- Creates `CHANGELOG.md` for all packages from **all git commits**
|
|
90
|
-
- Backs up existing changelogs (`.backup` extension)
|
|
91
|
-
- Formats according to conventional commits standard
|
|
92
|
-
- Cleans up generated files (removes guidelines, fixes formatting)
|
|
93
|
-
- **Automatically adds "Version bump only"** notes for empty versions
|
|
94
|
-
- Works with both `## 1.2.3` and `## [1.2.3]` version formats
|
|
95
|
-
- **Generates root CHANGELOG with package grouping** - shows changes by package for each version
|
|
96
|
-
|
|
97
|
-
**Note:** This is typically a one-time operation during initial setup or migration.
|
|
98
|
-
|
|
99
|
-
### Root CHANGELOG Format
|
|
100
|
-
|
|
101
|
-
The root `CHANGELOG.md` groups changes by package for each version:
|
|
102
|
-
|
|
103
|
-
```markdown
|
|
104
|
-
## 1.2.0
|
|
105
|
-
|
|
106
|
-
### Framework (@vc-shell/framework)
|
|
107
|
-
|
|
108
|
-
#### Features
|
|
109
|
-
* **components:** add VcTable component with sorting
|
|
110
|
-
|
|
111
|
-
#### Bug Fixes
|
|
112
|
-
* **router:** fix navigation guards in nested routes
|
|
113
|
-
|
|
114
|
-
### API Client Generator (@vc-shell/api-client-generator)
|
|
115
|
-
|
|
116
|
-
**Note:** Version bump only for package
|
|
117
|
-
|
|
118
|
-
### Create VC App (@vc-shell/create-vc-app)
|
|
119
|
-
|
|
120
|
-
#### Features
|
|
121
|
-
* add new scaffolding templates
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
This makes it easy to see what changed in which package for a specific version.
|
|
125
|
-
|
|
126
|
-
### Dry-run Mode
|
|
127
|
-
|
|
128
|
-
The `yarn release:dry` command performs all release steps without creating git commits or tags:
|
|
129
|
-
|
|
130
|
-
**What it does:**
|
|
131
|
-
- ✅ Updates package versions
|
|
132
|
-
- ✅ Generates/updates CHANGELOG.md files
|
|
133
|
-
- ✅ Updates npmTag fields in package.json
|
|
134
|
-
- ✅ Synchronizes internal dependencies
|
|
135
|
-
|
|
136
|
-
**What it skips:**
|
|
137
|
-
- ❌ Git commit
|
|
138
|
-
- ❌ Git tag creation
|
|
139
|
-
- ❌ Push to GitHub
|
|
140
|
-
|
|
141
|
-
After dry-run, you can review changes with `git diff` and revert with `git checkout -- .` if needed.
|
|
142
|
-
|
|
143
|
-
## Release Types
|
|
144
|
-
|
|
145
|
-
When running `yarn release`, you'll be prompted to select a release type:
|
|
146
|
-
|
|
147
|
-
1. **Automatic (based on commits)** - Lerna analyzes conventional commits and suggests appropriate version
|
|
148
|
-
2. **Prerelease (alpha/beta/rc)** - Create prerelease versions (e.g., 1.0.0-alpha.0)
|
|
149
|
-
3. **Graduate prerelease to stable** - Convert prerelease to stable (e.g., 1.0.0-alpha.0 → 1.0.0)
|
|
150
|
-
4. **Custom version** - Manually specify any valid semver version
|
|
151
|
-
|
|
152
|
-
## NPM Distribution Tags
|
|
153
|
-
|
|
154
|
-
The system automatically manages npm distribution tags:
|
|
155
|
-
|
|
156
|
-
- For prerelease versions, the tag is derived from the prerelease identifier (alpha/beta/rc)
|
|
157
|
-
- For stable versions, you can choose between `latest`, `next`, or custom tags
|
|
158
|
-
- Tags are stored in package.json `npmTag` field
|
|
159
|
-
- GitHub Actions workflow uses these tags for publishing
|
|
160
|
-
|
|
161
|
-
## Professional Changelog Format
|
|
162
|
-
|
|
163
|
-
Our changelogs follow industry best practices with:
|
|
164
|
-
|
|
165
|
-
- 📊 **Clear categorization** by commit type
|
|
166
|
-
- 🔗 **Direct links** to commits and issues
|
|
167
|
-
- 📝 **Detailed descriptions** with scope information
|
|
168
|
-
- ⚠️ **Breaking changes** prominently displayed
|
|
169
|
-
- 🎯 **Version comparison** links
|
|
170
|
-
- 📋 **"Version bump only"** notes for packages without direct changes
|
|
171
|
-
|
|
172
|
-
### For Packages with Changes
|
|
173
|
-
|
|
174
|
-
```markdown
|
|
175
|
-
# CHANGELOG
|
|
176
|
-
|
|
177
|
-
All notable changes to this package will be documented in this file.
|
|
178
|
-
|
|
179
|
-
## [1.2.0-alpha.0](https://github.com/VirtoCommerce/vc-shell/compare/v1.1.91...v1.2.0-alpha.0) (2025-01-15)
|
|
180
|
-
|
|
181
|
-
### Features
|
|
182
|
-
|
|
183
|
-
* **components:** add new VcTable component with sorting ([a1b2c3d](https://github.com/VirtoCommerce/vc-shell/commit/a1b2c3d))
|
|
184
|
-
* **framework:** implement lazy loading for modules ([b2c3d4e](https://github.com/VirtoCommerce/vc-shell/commit/b2c3d4e))
|
|
185
|
-
|
|
186
|
-
### Bug Fixes
|
|
187
|
-
|
|
188
|
-
* **router:** fix navigation guards in nested routes ([e4f5g6h](https://github.com/VirtoCommerce/vc-shell/commit/e4f5g6h))
|
|
189
|
-
* **i18n:** resolve translation fallback issue ([f5g6h7i](https://github.com/VirtoCommerce/vc-shell/commit/f5g6h7i))
|
|
190
|
-
|
|
191
|
-
### Performance Improvements
|
|
192
|
-
|
|
193
|
-
* **components:** optimize VcTable rendering with virtual scrolling ([c3d4e5f](https://github.com/VirtoCommerce/vc-shell/commit/c3d4e5f))
|
|
194
|
-
|
|
195
|
-
### Documentation
|
|
196
|
-
|
|
197
|
-
* **api:** update API documentation for new methods ([d4e5f6g](https://github.com/VirtoCommerce/vc-shell/commit/d4e5f6g))
|
|
198
|
-
|
|
199
|
-
### Code Refactoring
|
|
200
|
-
|
|
201
|
-
* **core:** extract common utilities to shared module ([g6h7i8j](https://github.com/VirtoCommerce/vc-shell/commit/g6h7i8j))
|
|
202
|
-
|
|
203
|
-
### BREAKING CHANGES
|
|
204
|
-
|
|
205
|
-
* API endpoints now require authentication token in headers
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
### For Packages without Changes
|
|
209
|
-
|
|
210
|
-
```markdown
|
|
211
|
-
# CHANGELOG
|
|
212
|
-
|
|
213
|
-
All notable changes to this package will be documented in this file.
|
|
214
|
-
|
|
215
|
-
## [1.2.0-alpha.0](https://github.com/VirtoCommerce/vc-shell/compare/v1.1.91...v1.2.0-alpha.0) (2025-01-15)
|
|
216
|
-
|
|
217
|
-
**Note:** Version bump only - Updated dependencies to match framework version
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
### Supported Sections
|
|
221
|
-
|
|
222
|
-
All commit types are now visible in changelogs:
|
|
223
|
-
|
|
224
|
-
| Type | Section | Description |
|
|
225
|
-
|------|---------|-------------|
|
|
226
|
-
| `feat` | Features | New features |
|
|
227
|
-
| `fix` | Bug Fixes | Bug fixes |
|
|
228
|
-
| `perf` | Performance Improvements | Performance improvements |
|
|
229
|
-
| `revert` | Reverts | Reverted changes |
|
|
230
|
-
| `docs` | Documentation | Documentation updates |
|
|
231
|
-
| `style` | Styles | Code style changes |
|
|
232
|
-
| `refactor` | Code Refactoring | Code refactoring |
|
|
233
|
-
| `test` | Tests | Test updates |
|
|
234
|
-
| `build` | Build System | Build system changes |
|
|
235
|
-
| `ci` | CI/CD | CI/CD changes |
|
|
236
|
-
| `chore` | Chores | Maintenance tasks |
|
|
237
|
-
|
|
238
|
-
## Benefits
|
|
239
|
-
|
|
240
|
-
- ✅ **Battle-tested** - Used by Babel, Jest, React Router, and other major projects
|
|
241
|
-
- ✅ **Zero manual work** - Automatic dependency management
|
|
242
|
-
- ✅ **Beautiful changelogs** - Grouped by type with commit links
|
|
243
|
-
- ✅ **Proper versioning** - Correct alpha/beta/rc incrementing
|
|
244
|
-
- ✅ **Backward compatible** - Maintains existing workflow
|
|
245
|
-
- ✅ **Type safe** - Full TypeScript support
|
|
246
|
-
|
|
247
|
-
## Integration with CI/CD
|
|
248
|
-
|
|
249
|
-
The package automatically sets `npmTag` field in package.json files during release:
|
|
250
|
-
|
|
251
|
-
### How it works
|
|
252
|
-
|
|
253
|
-
1. **During Release:**
|
|
254
|
-
```bash
|
|
255
|
-
yarn release
|
|
256
|
-
# Select: Prerelease → alpha
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
2. **What happens:**
|
|
260
|
-
- Lerna bumps versions to `1.2.0-alpha.0`
|
|
261
|
-
- `updateNpmTags()` adds `"npmTag": "alpha"` to package.json
|
|
262
|
-
- Git commit includes both version and npmTag changes
|
|
263
|
-
|
|
264
|
-
3. **In GitHub Actions:**
|
|
265
|
-
- Workflow reads `npmTag` field from package.json
|
|
266
|
-
- Publishes packages with correct dist tag
|
|
267
|
-
- Fallback: detects tag from version string if npmTag is missing
|
|
268
|
-
|
|
269
|
-
### Tag mapping
|
|
270
|
-
|
|
271
|
-
- `alpha` → npm tag `alpha` (for alpha prereleases)
|
|
272
|
-
- `beta` → npm tag `beta` (for beta prereleases)
|
|
273
|
-
- `rc` → npm tag `rc` (for release candidates)
|
|
274
|
-
- `next` → npm tag `next` (for next versions)
|
|
275
|
-
- No field → npm tag `latest` (for stable releases)
|
|
276
|
-
|
|
277
|
-
### Example workflow integration
|
|
278
|
-
|
|
279
|
-
```yaml
|
|
280
|
-
- name: Determine npm tag
|
|
281
|
-
run: |
|
|
282
|
-
# Reads npmTag from package.json (set by release process)
|
|
283
|
-
NPM_TAG=$(node -p "require('./framework/package.json').npmTag || 'latest'")
|
|
284
|
-
echo "NPM_TAG=$NPM_TAG" >> $GITHUB_ENV
|
|
285
|
-
|
|
286
|
-
- name: Publish
|
|
287
|
-
run: |
|
|
288
|
-
yarn workspaces foreach npm publish --tag $NPM_TAG
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
**No changes needed** to your existing GitHub Actions - the workflow already supports this!
|
|
292
|
-
|
|
293
|
-
## Configuration
|
|
294
|
-
|
|
295
|
-
The release behavior is configured in `lerna.json` at the repository root:
|
|
296
|
-
|
|
297
|
-
- `conventionalCommits: true` - Enable conventional changelog generation
|
|
298
|
-
- `exact: true` - Fixed versioning (all packages same version)
|
|
299
|
-
- Lerna v9+ automatically uses workspace configuration
|
|
300
|
-
- `changelogPreset` - Controls which commit types appear in changelog
|
|
301
|
-
|
|
302
|
-
## Migration from Old System
|
|
303
|
-
|
|
304
|
-
This version maintains backward compatibility with the previous custom release system:
|
|
305
|
-
|
|
306
|
-
- Same API for `release()` function
|
|
307
|
-
- Same npm scripts (`yarn release`, `yarn release:dry`)
|
|
308
|
-
- Same workflow in GitHub Actions
|
|
309
|
-
- Enhanced with Lerna's capabilities under the hood
|
|
310
|
-
|
|
311
63
|
## License
|
|
312
64
|
|
|
313
|
-
MIT
|
|
65
|
+
MIT
|