super-release 0.13.3 → 0.15.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.
Files changed (2) hide show
  1. package/README.md +27 -11
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -35,6 +35,8 @@ pnpm add -D super-release
35
35
 
36
36
  The npm package automatically downloads the prebuilt native binary for your platform on first run.
37
37
 
38
+ Supported platforms: Linux (x86_64, aarch64, musl/Alpine), macOS (x86_64, Apple Silicon), Windows (x86_64).
39
+
38
40
  Alternatively, build from source:
39
41
 
40
42
  ```bash
@@ -127,6 +129,7 @@ branches:
127
129
  prerelease: beta
128
130
  - name: "test-*"
129
131
  prerelease: true
132
+ packages: [ "@acme/core" ] # only release core on test branches
130
133
  - name: "1.x"
131
134
  maintenance: true
132
135
 
@@ -182,6 +185,17 @@ exits cleanly.
182
185
  | `- name: "test-*"`<br>` prerelease: true` | Prerelease (branch name as channel) | `2.0.0-test-my-feature.1` |
183
186
  | `- name: "1.x"`<br>` maintenance: true` | Maintenance | `1.5.1`, `1.6.0` (major capped) |
184
187
 
188
+ Branches can also filter which packages they release with `packages`:
189
+
190
+ ```yaml
191
+ branches:
192
+ - name: "test-*"
193
+ prerelease: true
194
+ packages: # only release these on test branches
195
+ - "@acme/core"
196
+ - "@acme/utils"
197
+ ```
198
+
185
199
  **Tag filtering by branch**: Stable branches only see stable tags. Prerelease branches see their own channel's tags plus
186
200
  stable tags. Tags on other branches that haven't been merged are ignored.
187
201
 
@@ -253,6 +267,7 @@ plugins:
253
267
  tag: next # dist-tag (default: auto from prerelease channel)
254
268
  publish_args: [ "--otp=123456" ]
255
269
  package_manager: yarn # force specific PM (default: auto-detect)
270
+ check_registry: true # check if version exists before publishing (default: true)
256
271
 
257
272
  - name: exec
258
273
  packages: [ "my-rust-lib" ]
@@ -262,12 +277,13 @@ plugins:
262
277
  files: [ Cargo.toml, Cargo.lock ] # include in git commit
263
278
  ```
264
279
 
265
- | Plugin | Prepare | Publish |
266
- |-------------|--------------------------------------------------------------|--------------------------------------------------------|
267
- | `changelog` | Generates/updates changelog per package (parallel) | -- |
268
- | `npm` | Updates `package.json` versions (auto-detects npm/yarn/pnpm) | Publishes packages (parallel within dependency levels) |
269
- | `exec` | Runs custom shell command per package | Runs custom shell command per package |
280
+ | Plugin | Prepare | Publish |
281
+ |-------------|----------------------------------------------------|--------------------------------------------------------|
282
+ | `changelog` | Generates/updates changelog per package (parallel) | -- |
283
+ | `npm` | -- | Publishes packages (parallel within dependency levels) |
284
+ | `exec` | Runs custom shell command per package | Runs custom shell command per package |
270
285
 
286
+ Package version bumps (`package.json`) happen automatically before plugins run (part of core).
271
287
  Plugins return the files they modified. The core git step stages exactly those files for the commit -- no `git add .`.
272
288
 
273
289
  Default: `[changelog, npm]`
@@ -291,13 +307,13 @@ Commit message placeholders:
291
307
 
292
308
  The git step:
293
309
 
294
- 1. Stages only files reported by plugins
295
- 2. Also stages any tracked-file changes (for exec commands that can't report files)
296
- 3. Commits (or skips if nothing changed)
297
- 4. Creates annotated tags for each release
298
- 5. Pushes commit + tags if `push: true`
310
+ 1. Stages files reported by plugins (changelogs, exec `files`, package.json bumps)
311
+ 2. Commits (or skips if nothing changed)
312
+ 3. Creates annotated tags for each release
313
+ 4. Pushes commit + tags if `push: true`
299
314
 
300
- Tags are idempotent -- existing tags are skipped. Already-published npm packages are detected and skipped on rerun.
315
+ Tags are idempotent -- existing tags are skipped. The npm plugin checks the registry before publishing (`npm view`) and
316
+ skips versions that already exist. Non-404 errors (auth, network) abort the release to prevent partial publishes.
301
317
 
302
318
  ## Monorepo Structure
303
319
 
package/package.json CHANGED
@@ -28,7 +28,7 @@
28
28
  "url": "git+https://github.com/BowlingX/super-release.git"
29
29
  },
30
30
  "type": "module",
31
- "version": "0.13.3",
31
+ "version": "0.15.0",
32
32
  "scripts": {
33
33
  "super-release": "node npm/bin/super-release.js"
34
34
  }