super-release 1.5.2 → 1.6.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 CHANGED
@@ -103,7 +103,7 @@ In monorepos, use `--package` to select which package: `super-release --show-nex
103
103
  ## Conventional Commits
104
104
 
105
105
  | Commit | Bump |
106
- |-------------------------------------------------------|------------|
106
+ | ----------------------------------------------------- | ---------- |
107
107
  | `fix: ...` | patch |
108
108
  | `feat: ...` | minor |
109
109
  | `feat!: ...` or `BREAKING CHANGE:` in footer | major |
@@ -121,38 +121,40 @@ to bypass validation.
121
121
  For editor autocompletion:
122
122
 
123
123
  ```yaml
124
- # yaml-language-server: $schema=https://raw.githubusercontent.com/bowlingx/super-release/main/schema.json
124
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/bowlingx/super-release/v1.4.0/schema.json
125
125
  ```
126
126
 
127
127
  ```jsonc
128
128
  // .release.jsonc
129
129
  {
130
- "$schema": "https://raw.githubusercontent.com/bowlingx/super-release/main/schema.json"
130
+ "$schema": "https://raw.githubusercontent.com/bowlingx/super-release/v1.4.0/schema.json",
131
131
  }
132
132
  ```
133
133
 
134
+ Or, if you installed it locally directly via `./node_modules/super-release/config-schema.json`
135
+
134
136
  ### Full Example
135
137
 
136
138
  ```yaml
137
139
  branches:
138
140
  - main
139
141
  - name: next
140
- channel: next # publishes to "next" npm dist-tag
142
+ channel: next # publishes to "next" npm dist-tag
141
143
  - name: next-major
142
144
  channel: next-major
143
145
  - name: beta
144
146
  prerelease: beta
145
- - name: "test-*"
147
+ - name: 'test-*'
146
148
  prerelease: true
147
- packages: [ "@acme/core" ] # only release core on test branches
148
- - name: "1.x"
149
+ packages: ['@acme/core'] # only release core on test branches
150
+ - name: '1.x'
149
151
  maintenance: true
150
152
 
151
- tag_format: "v{version}"
152
- tag_format_package: "{name}/v{version}"
153
+ tag_format: 'v{version}'
154
+ tag_format_package: '{name}/v{version}'
153
155
 
154
156
  packages:
155
- - "@acme/*"
157
+ - '@acme/*'
156
158
 
157
159
  exclude:
158
160
  - my-monorepo-root
@@ -164,9 +166,9 @@ dependencies:
164
166
 
165
167
  # Files to ignore -- commits touching only these won't trigger releases
166
168
  ignore:
167
- - "README.md"
168
- - "docs/**"
169
- - "**/*.md"
169
+ - 'README.md'
170
+ - 'docs/**'
171
+ - '**/*.md'
170
172
 
171
173
  steps:
172
174
  - name: changelog
@@ -175,13 +177,13 @@ steps:
175
177
  provenance: true
176
178
  - name: exec
177
179
  options:
178
- prepare_cmd: "sed -i'' -e 's/^version = .*/version = \"{version}\"/' Cargo.toml"
180
+ prepare_cmd: 'sed -i'''' -e ''s/^version = .*/version = "{version}"/'' Cargo.toml'
179
181
  files:
180
182
  - Cargo.toml
181
183
  - Cargo.lock
182
184
 
183
185
  git:
184
- commit_message: "chore(release): {releases} [skip ci]"
186
+ commit_message: 'chore(release): {releases} [skip ci]'
185
187
  push: false
186
188
  remote: origin
187
189
  ```
@@ -194,7 +196,7 @@ Defines which branches can produce releases. Only configured branches are allowe
194
196
  exits cleanly.
195
197
 
196
198
  | Form | Type | Example versions |
197
- |-------------------------------------------------|-------------------------------------|----------------------------------|
199
+ | ----------------------------------------------- | ----------------------------------- | -------------------------------- |
198
200
  | `- main` | Stable (primary) | `1.0.0`, `1.1.0`, `2.0.0` |
199
201
  | `- name: next`<br>` channel: next` | Stable (next channel) | `1.1.0` on `next` dist-tag |
200
202
  | `- name: next-major`<br>` channel: next-major` | Stable (next-major channel) | `2.0.0` on `next-major` dist-tag |
@@ -210,11 +212,11 @@ non-primary branch should set a `channel` so it publishes to a different npm dis
210
212
 
211
213
  ```yaml
212
214
  branches:
213
- - main # primary: publishes to "latest"
215
+ - main # primary: publishes to "latest"
214
216
  - name: next
215
- channel: next # publishes to "next" dist-tag
217
+ channel: next # publishes to "next" dist-tag
216
218
  - name: next-major
217
- channel: next-major # publishes to "next-major" dist-tag
219
+ channel: next-major # publishes to "next-major" dist-tag
218
220
  ```
219
221
 
220
222
  **Version collision detection**: If a branch tries to release a version that already exists as a tag (e.g. `next`
@@ -234,7 +236,7 @@ If the branch name doesn't follow the `N.x` / `N.N.x` pattern, set `range` expli
234
236
  branches:
235
237
  - name: legacy-support
236
238
  maintenance: true
237
- range: "1.5.x" # cap to 1.5.x patch range
239
+ range: '1.5.x' # cap to 1.5.x patch range
238
240
  ```
239
241
 
240
242
  In monorepos, packages whose version is outside the maintenance range are automatically skipped. For example, on branch
@@ -246,11 +248,11 @@ Branches can filter which packages they release with `packages`:
246
248
 
247
249
  ```yaml
248
250
  branches:
249
- - name: "test-*"
251
+ - name: 'test-*'
250
252
  prerelease: true
251
253
  packages: # only release these on test branches
252
- - "@acme/core"
253
- - "@acme/utils"
254
+ - '@acme/core'
255
+ - '@acme/utils'
254
256
  ```
255
257
 
256
258
  **Tag filtering by branch**: Stable branches only see stable tags. Prerelease branches see their own channel's tags plus
@@ -277,7 +279,7 @@ dependencies:
277
279
  - yarn.lock
278
280
  - pnpm-lock.yaml
279
281
  - package.json
280
- - ".github/**"
282
+ - '.github/**'
281
283
  ```
282
284
 
283
285
  #### `ignore`
@@ -287,10 +289,10 @@ both ignored and non-ignored files, only the non-ignored files determine which p
287
289
 
288
290
  ```yaml
289
291
  ignore:
290
- - "README.md"
291
- - "docs/**"
292
- - "**/*.md"
293
- - ".prettierrc"
292
+ - 'README.md'
293
+ - 'docs/**'
294
+ - '**/*.md'
295
+ - '.prettierrc'
294
296
  ```
295
297
 
296
298
  #### `packages` / `exclude`
@@ -299,7 +301,7 @@ Filter which packages are released. `packages` is an allow-list (glob patterns),
299
301
 
300
302
  ```yaml
301
303
  packages:
302
- - "@acme/*"
304
+ - '@acme/*'
303
305
  exclude:
304
306
  - my-monorepo-root
305
307
  ```
@@ -317,23 +319,23 @@ steps:
317
319
  preview_lines: 20
318
320
 
319
321
  - name: npm
320
- packages: [ "@acme/*" ] # only publish @acme packages
321
- branches: [ "main", "beta" ] # only run on main and beta branches
322
+ packages: ['@acme/*'] # only publish @acme packages
323
+ branches: ['main', 'beta'] # only run on main and beta branches
322
324
  options:
323
325
  access: public
324
326
  provenance: true
325
327
  registry: https://registry.npmjs.org
326
- tag: next # dist-tag (default: auto from prerelease channel)
327
- publish_args: [ "--otp=123456" ]
328
- package_manager: yarn # force specific PM (default: auto-detect)
329
- check_registry: true # check if version exists before publishing (default: true)
328
+ tag: next # dist-tag (default: auto from prerelease channel)
329
+ publish_args: ['--otp=123456']
330
+ package_manager: yarn # force specific PM (default: auto-detect)
331
+ check_registry: true # check if version exists before publishing (default: true)
330
332
 
331
333
  - name: exec
332
- packages: [ "my-rust-lib" ]
334
+ packages: ['my-rust-lib']
333
335
  options:
334
- prepare_cmd: "sed -i'' -e 's/^version = .*/version = \"{version}\"/' Cargo.toml"
335
- publish_cmd: "cargo publish"
336
- files: [ Cargo.toml, Cargo.lock ] # include in git commit
336
+ prepare_cmd: 'sed -i'''' -e ''s/^version = .*/version = "{version}"/'' Cargo.toml'
337
+ publish_cmd: 'cargo publish'
338
+ files: [Cargo.toml, Cargo.lock] # include in git commit
337
339
  ```
338
340
 
339
341
  Each step can be scoped:
@@ -344,7 +346,7 @@ Each step can be scoped:
344
346
  For example, `branches: ["main"]` ensures a step only runs on the main branch.
345
347
 
346
348
  | Step | Prepare | Publish |
347
- |-------------|----------------------------------------------------|--------------------------------------------------------|
349
+ | ----------- | -------------------------------------------------- | ------------------------------------------------------ |
348
350
  | `changelog` | Generates/updates changelog per package (parallel) | -- |
349
351
  | `npm` | -- | Publishes packages (parallel within dependency levels) |
350
352
  | `exec` | Runs custom shell command per package | Runs custom shell command per package |
@@ -360,8 +362,8 @@ Core git behavior after all steps run. Not a step -- always runs.
360
362
 
361
363
  ```yaml
362
364
  git:
363
- commit_message: "chore(release): {releases} [skip ci]"
364
- push: false # push commit + tags to remote
365
+ commit_message: 'chore(release): {releases} [skip ci]'
366
+ push: false # push commit + tags to remote
365
367
  remote: origin
366
368
  ```
367
369
 
@@ -413,7 +415,7 @@ Use `packages` (allow-list) and `exclude` (deny-list) at the top level to contro
413
415
 
414
416
  ```yaml
415
417
  packages:
416
- - "@acme/*" # only release @acme-scoped packages
418
+ - '@acme/*' # only release @acme-scoped packages
417
419
  exclude:
418
420
  - my-monorepo-root # skip the root package
419
421
  ```
@@ -445,10 +447,10 @@ You can also use per-branch `packages` filters for explicit control:
445
447
 
446
448
  ```yaml
447
449
  branches:
448
- - name: "1.x"
450
+ - name: '1.x'
449
451
  maintenance: true
450
452
  packages:
451
- - "@acme/utils" # only release utils on this maintenance branch
453
+ - '@acme/utils' # only release utils on this maintenance branch
452
454
  ```
453
455
 
454
456
  ## Performance
@@ -1 +1 @@
1
- fe6fea5666588e92b2914f5acf8bc65b24ccf406299a81a96519165a45260d98 super-release-darwin-aarch64.tar.gz
1
+ 242480267110c1c629f7ea7c0e5afb5f3d276cd3efd62e82113bd97abbbc93f5 super-release-darwin-aarch64.tar.gz
@@ -1 +1 @@
1
- 4297daede1e4c7cbd52275ee271de053dff63765de4034dbd33838a93d2550a1 super-release-darwin-x86_64.tar.gz
1
+ 2554c2c39538522c7cef889222a913218ed2200b4224e7d5844827d7252575ab super-release-darwin-x86_64.tar.gz
@@ -1 +1 @@
1
- 924669f5db88d8b2dd3ca566cc6510b6c8748d3b0c2920c7405861a8e1ccd47c super-release-linux-aarch64.tar.gz
1
+ f4db8a76a97105c97e6518a301eeb41157925a03c17791eac97f2a299cb9f765 super-release-linux-aarch64.tar.gz
@@ -1 +1 @@
1
- a2d0c6fea728465a2d566e8259a3fbd9cf7b82f2310c3365c88a80da0e64f00e super-release-linux-x86_64-musl.tar.gz
1
+ 70875b20523d5653becb8a3fae79af24c77c44b8cc8a07f1324b2a6c4f11e9f2 super-release-linux-x86_64-musl.tar.gz
@@ -1 +1 @@
1
- 6c72879cf4cdf7d55d62694a243043b8b6fd5e09bf23dd6eb4d82f315a4d3819 super-release-linux-x86_64.tar.gz
1
+ 50158b54b3833aa99cd0fc652d3e3b543f8d995a35f56be4b600aeb7623e7dae super-release-linux-x86_64.tar.gz
@@ -1 +1 @@
1
- C385AA8C6D60D6D47207A27960B2884C600F7E0A55D7BAD32BFB972293D9F229
1
+ 895C1A18BFC50973F32A909AAC9FCEEC12BFC2D479BF50D6379EBFD0B30512C8
@@ -1,48 +1,52 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { spawnSync, execFileSync } from "node:child_process";
4
- import { existsSync } from "node:fs";
5
- import { arch, platform } from "node:os";
6
- import { fileURLToPath } from "node:url";
7
- import pkg from "../package.json" with { type: "json" };
3
+ import { spawnSync, execFileSync } from 'node:child_process'
4
+ import { existsSync } from 'node:fs'
5
+ import { arch, platform } from 'node:os'
6
+ import { fileURLToPath } from 'node:url'
7
+ import pkg from '../package.json' with { type: 'json' }
8
8
 
9
9
  function isMusl() {
10
10
  try {
11
- const result = execFileSync("ldd", ["--version"], {
12
- stdio: ["pipe", "pipe", "pipe"],
13
- });
14
- return result.toString().includes("musl");
11
+ const result = execFileSync('ldd', ['--version'], {
12
+ stdio: ['pipe', 'pipe', 'pipe'],
13
+ })
14
+ return result.toString().includes('musl')
15
15
  } catch (err) {
16
- if (err.stderr && err.stderr.toString().includes("musl")) {
17
- return true;
16
+ if (err.stderr && err.stderr.toString().includes('musl')) {
17
+ return true
18
18
  }
19
19
  return (
20
- existsSync("/lib/ld-musl-x86_64.so.1") ||
21
- existsSync("/lib/ld-musl-aarch64.so.1")
22
- );
20
+ existsSync('/lib/ld-musl-x86_64.so.1') ||
21
+ existsSync('/lib/ld-musl-aarch64.so.1')
22
+ )
23
23
  }
24
24
  }
25
25
 
26
26
  function getBinaryPath() {
27
- const os = platform() === "win32" ? "windows" : platform();
28
- const cpu = arch();
29
- const pkgName = `super-release-${os}-${cpu}`;
27
+ const os = platform() === 'win32' ? 'windows' : platform()
28
+ const cpu = arch()
29
+ const pkgName = `super-release-${os}-${cpu}`
30
30
 
31
31
  try {
32
- if (os === "linux" && isMusl()) {
33
- return fileURLToPath(import.meta.resolve(`${pkgName}/musl`));
32
+ if (os === 'linux' && isMusl()) {
33
+ return fileURLToPath(import.meta.resolve(`${pkgName}/musl`))
34
34
  }
35
- return fileURLToPath(import.meta.resolve(pkgName));
35
+ return fileURLToPath(import.meta.resolve(pkgName))
36
36
  } catch {
37
37
  throw new Error(
38
- `Unsupported platform: ${os}-${cpu}. Install the platform-specific package "${pkgName}" manually.`
39
- );
38
+ `Unsupported platform: ${os}-${cpu}. Install the platform-specific package "${pkgName}" manually.`,
39
+ )
40
40
  }
41
41
  }
42
42
 
43
43
  const result = spawnSync(getBinaryPath(), process.argv.slice(2), {
44
- stdio: "inherit",
44
+ stdio: 'inherit',
45
45
  env: { ...process.env, SUPER_RELEASE_VERSION: pkg.version },
46
- });
46
+ })
47
47
 
48
- process.exit(result.status ?? 1);
48
+ if (result.error) {
49
+ console.error(result.error)
50
+ }
51
+
52
+ process.exit(result.status ?? 1)
@@ -0,0 +1,259 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/bowlingx/super-release/main/schema.json",
4
+ "title": "super-release configuration",
5
+ "description": "Configuration file for super-release (.release.yaml)",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "branches": {
10
+ "description": "Branch configurations for release channels",
11
+ "type": ["array", "null"],
12
+ "default": ["main", "master"],
13
+ "items": {
14
+ "oneOf": [
15
+ {
16
+ "type": "string",
17
+ "description": "Simple branch name (stable releases)"
18
+ },
19
+ {
20
+ "$ref": "#/$defs/branchConfig"
21
+ }
22
+ ]
23
+ }
24
+ },
25
+ "tag_format": {
26
+ "description": "Tag format template for root packages. Placeholders: {version}, {name}",
27
+ "type": "string",
28
+ "default": "v{version}",
29
+ "examples": ["v{version}", "{name}-v{version}", "release-{version}"]
30
+ },
31
+ "tag_format_package": {
32
+ "description": "Tag format template for sub-packages in monorepos. Placeholders: {version}, {name}",
33
+ "type": "string",
34
+ "default": "{name}/v{version}",
35
+ "examples": ["{name}/v{version}", "{name}@{version}"]
36
+ },
37
+ "packages": {
38
+ "description": "Glob patterns to include. Only matching packages are released. Default: all",
39
+ "type": ["array", "null"],
40
+ "items": { "type": "string" },
41
+ "examples": [["@acme/*"], ["@acme/core", "@acme/utils"]]
42
+ },
43
+ "exclude": {
44
+ "description": "Glob patterns to exclude from releasing",
45
+ "type": ["array", "null"],
46
+ "default": [],
47
+ "items": { "type": "string" },
48
+ "examples": [["my-monorepo-root", "@acme/internal-*"]]
49
+ },
50
+ "ignore": {
51
+ "description": "Glob patterns for files to ignore. Commits that only touch ignored files will not trigger a release.",
52
+ "type": ["array", "null"],
53
+ "default": [],
54
+ "items": { "type": "string" },
55
+ "examples": [["README.md", "docs/**", ".prettierrc", "**/*.md"]]
56
+ },
57
+ "dependencies": {
58
+ "description": "Global file dependency patterns. When a commit changes any matching file, ALL packages are considered affected. Useful for lock files, shared configs, etc.",
59
+ "type": ["array", "null"],
60
+ "default": [],
61
+ "items": { "type": "string" },
62
+ "examples": [
63
+ ["yarn.lock", "pnpm-lock.yaml", "package.json", ".github/**"]
64
+ ]
65
+ },
66
+ "steps": {
67
+ "description": "Ordered list of steps to execute",
68
+ "type": ["array", "null"],
69
+ "default": [{ "name": "changelog" }, { "name": "npm" }],
70
+ "items": {
71
+ "$ref": "#/$defs/stepConfig"
72
+ }
73
+ },
74
+ "git": {
75
+ "description": "Git commit and tag behavior after steps run",
76
+ "$ref": "#/$defs/gitConfig"
77
+ }
78
+ },
79
+ "$defs": {
80
+ "branchConfig": {
81
+ "type": "object",
82
+ "required": ["name"],
83
+ "additionalProperties": false,
84
+ "properties": {
85
+ "name": {
86
+ "type": "string",
87
+ "description": "Branch name or glob pattern (e.g. \"main\", \"beta\", \"test-*\", \"1.x\")"
88
+ },
89
+ "prerelease": {
90
+ "description": "Prerelease channel. true = use branch name as channel, string = fixed channel name, false/absent = stable",
91
+ "oneOf": [{ "type": "boolean" }, { "type": "string" }],
92
+ "examples": [true, "beta", "next", "rc"]
93
+ },
94
+ "maintenance": {
95
+ "type": "boolean",
96
+ "default": false,
97
+ "description": "Maintenance branch. Version bumps are capped to the range inferred from the branch name (e.g. 1.x allows minor, 1.5.x allows only patch)"
98
+ },
99
+ "range": {
100
+ "type": "string",
101
+ "description": "Explicit version range for maintenance branches (e.g. \"1.x\", \"1.5.x\"). If omitted, inferred from branch name.",
102
+ "examples": ["1.x", "1.5.x", "2.x"]
103
+ },
104
+ "channel": {
105
+ "type": "string",
106
+ "description": "Distribution channel (npm dist-tag). Defaults to prerelease name for prerelease branches, branch name for maintenance branches, unset (latest) for the primary release branch.",
107
+ "examples": ["next", "next-major", "1.x"]
108
+ },
109
+ "packages": {
110
+ "type": "array",
111
+ "items": { "type": "string" },
112
+ "description": "Glob patterns to include. Only matching packages are released on this branch. Empty = all."
113
+ }
114
+ }
115
+ },
116
+ "stepConfig": {
117
+ "type": "object",
118
+ "required": ["name"],
119
+ "additionalProperties": false,
120
+ "properties": {
121
+ "name": {
122
+ "type": "string",
123
+ "enum": ["changelog", "npm", "exec"],
124
+ "description": "Step name"
125
+ },
126
+ "packages": {
127
+ "type": "array",
128
+ "items": { "type": "string" },
129
+ "description": "Glob patterns to filter which packages this step operates on. Empty = all."
130
+ },
131
+ "branches": {
132
+ "type": "array",
133
+ "items": { "type": "string" },
134
+ "description": "Glob patterns for branch names this step runs on. Empty = all branches."
135
+ },
136
+ "options": {
137
+ "description": "Step-specific options"
138
+ }
139
+ },
140
+ "allOf": [
141
+ {
142
+ "if": { "properties": { "name": { "const": "changelog" } } },
143
+ "then": {
144
+ "properties": { "options": { "$ref": "#/$defs/changelogOptions" } }
145
+ }
146
+ },
147
+ {
148
+ "if": { "properties": { "name": { "const": "npm" } } },
149
+ "then": {
150
+ "properties": { "options": { "$ref": "#/$defs/npmOptions" } }
151
+ }
152
+ },
153
+ {
154
+ "if": { "properties": { "name": { "const": "exec" } } },
155
+ "then": {
156
+ "properties": { "options": { "$ref": "#/$defs/execOptions" } }
157
+ }
158
+ }
159
+ ]
160
+ },
161
+ "gitConfig": {
162
+ "type": "object",
163
+ "additionalProperties": false,
164
+ "properties": {
165
+ "commit_message": {
166
+ "type": "string",
167
+ "default": "chore(release): {releases} [skip ci]",
168
+ "description": "Commit message template. Placeholders: {releases}, {summary}, {count}"
169
+ },
170
+ "push": {
171
+ "type": "boolean",
172
+ "default": false,
173
+ "description": "Push commit and tags to remote after release"
174
+ },
175
+ "remote": {
176
+ "type": "string",
177
+ "default": "origin",
178
+ "description": "Git remote name"
179
+ }
180
+ }
181
+ },
182
+ "changelogOptions": {
183
+ "type": "object",
184
+ "additionalProperties": false,
185
+ "properties": {
186
+ "filename": {
187
+ "type": "string",
188
+ "default": "CHANGELOG.md",
189
+ "description": "Output filename per package"
190
+ },
191
+ "preview_lines": {
192
+ "type": "integer",
193
+ "default": 20,
194
+ "description": "Max lines shown in dry-run preview"
195
+ }
196
+ }
197
+ },
198
+ "npmOptions": {
199
+ "type": "object",
200
+ "additionalProperties": false,
201
+ "properties": {
202
+ "access": {
203
+ "type": "string",
204
+ "enum": ["public", "restricted"],
205
+ "description": "npm access level. If unset, npm's default applies (restricted for scoped, public for unscoped)."
206
+ },
207
+ "registry": {
208
+ "type": "string",
209
+ "description": "Custom registry URL",
210
+ "format": "uri"
211
+ },
212
+ "tag": {
213
+ "type": "string",
214
+ "description": "Dist-tag override. Default: auto from prerelease channel"
215
+ },
216
+ "provenance": {
217
+ "type": "boolean",
218
+ "default": false,
219
+ "description": "Enable npm provenance (--provenance). Requires npm 9.5+ and supported CI"
220
+ },
221
+ "publish_args": {
222
+ "type": "array",
223
+ "items": { "type": "string" },
224
+ "description": "Extra args passed to the publish command"
225
+ },
226
+ "check_registry": {
227
+ "type": "boolean",
228
+ "default": true,
229
+ "description": "Check the registry before publishing to skip already-published versions. Set to false to always attempt publish."
230
+ },
231
+ "package_manager": {
232
+ "type": "string",
233
+ "enum": ["npm", "yarn", "pnpm"],
234
+ "description": "Force specific package manager (default: auto-detect)"
235
+ }
236
+ }
237
+ },
238
+ "execOptions": {
239
+ "type": "object",
240
+ "additionalProperties": false,
241
+ "properties": {
242
+ "prepare_cmd": {
243
+ "type": "string",
244
+ "description": "Shell command for prepare phase. Placeholders: {version}, {name}, {channel}"
245
+ },
246
+ "publish_cmd": {
247
+ "type": "string",
248
+ "description": "Shell command for publish phase. Placeholders: {version}, {name}, {channel}"
249
+ },
250
+ "files": {
251
+ "type": "array",
252
+ "items": { "type": "string" },
253
+ "description": "Files to include in the git commit. Supports {version} and {name} placeholders.",
254
+ "examples": [["Cargo.toml", "Cargo.lock"]]
255
+ }
256
+ }
257
+ }
258
+ }
259
+ }
package/package.json CHANGED
@@ -1,43 +1,44 @@
1
1
  {
2
2
  "name": "super-release",
3
- "type": "module",
4
- "version": "1.5.2",
3
+ "version": "1.6.1",
4
+ "description": "A fast semantic-release alternative for monorepos, written in Rust",
5
+ "keywords": [
6
+ "changelog",
7
+ "conventional-commits",
8
+ "monorepo",
9
+ "release",
10
+ "semantic-release"
11
+ ],
12
+ "license": "MIT",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/BowlingX/super-release.git"
16
+ },
5
17
  "bin": {
6
18
  "super-release": "bin/super-release.js"
7
19
  },
8
- "description": "A fast semantic-release alternative for monorepos, written in Rust",
9
- "engines": {
10
- "node": ">=20"
11
- },
12
20
  "files": [
13
21
  "bin",
22
+ "config-schema.json",
14
23
  "README.md"
15
24
  ],
16
- "keywords": [
17
- "semantic-release",
18
- "monorepo",
19
- "release",
20
- "changelog",
21
- "conventional-commits"
22
- ],
23
- "license": "MIT",
25
+ "type": "module",
24
26
  "publishConfig": {
25
27
  "access": "public",
26
28
  "provenance": true
27
29
  },
28
- "repository": {
29
- "type": "git",
30
- "url": "git+https://github.com/BowlingX/super-release.git"
31
- },
32
30
  "optionalDependencies": {
33
- "super-release-linux-x64": "1.3.1",
34
- "super-release-linux-arm64": "1.3.1",
35
- "super-release-darwin-x64": "1.3.1",
36
- "super-release-darwin-arm64": "1.3.1",
37
- "super-release-windows-x64": "1.3.0"
31
+ "super-release-darwin-arm64": "1.4.1",
32
+ "super-release-darwin-x64": "1.4.1",
33
+ "super-release-linux-x64": "1.4.1",
34
+ "super-release-windows-x64": "1.4.1",
35
+ "super-release-linux-arm64": "1.4.1"
36
+ },
37
+ "engines": {
38
+ "node": ">=20"
38
39
  },
39
40
  "scripts": {
40
- "prepublish": "cp ../../README.md README.md",
41
+ "prepublish": "cp ../../README.md README.md && cp ../../schema.json config-schema.json",
41
42
  "super-release": "node bin/super-release.js"
42
43
  }
43
44
  }