release-monorepo-semantically 1.13.0 → 1.14.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
@@ -84,6 +84,8 @@ Non-release types: `docs`, `test`, `ci`, `chore`, `refactor`, `style`.
84
84
 
85
85
  Package scope is matched by package name.
86
86
 
87
+ To force a level regardless of rules, put `[major]`, `[minor]`, `[patch]`, or `[skip-bump]` in the commit subject, e.g. `chore: drop node 18 [major]`. The tag is stripped from the subject and overrides the rule-based level for that commit. A scoped tag (for example, `feat(pkg-a): ... [major]`) applies only to the package matching the scope; an unscoped tag (for example, `[major] feat: ...`) applies to every public package.
88
+
87
89
  This mapping is `report`'s default configuration, not a fixed rule — see [Configuring release rules](#configuring-release-rules) to change or extend it.
88
90
 
89
91
  ## Steps
@@ -128,14 +130,17 @@ Steps read settings from a `release` section in the root `package.json`, a root
128
130
  }
129
131
  ```
130
132
 
131
- `.release.json` uses the same shape without the `release` wrapper:
133
+ `.release.json` uses the same shape without the `release` wrapper. Point `$schema` at the JSON Schema shipped with the package to get editor validation and autocompletion:
132
134
 
133
135
  ```json
134
136
  {
137
+ "$schema": "./node_modules/release-monorepo-semantically/dist/release.schema.json",
135
138
  "vcs": { "template": "templates/release-commit-msg.hbs" }
136
139
  }
137
140
  ```
138
141
 
142
+ The schema is generated from the same definitions the CLI validates with, and is also importable as `release-monorepo-semantically/release.schema.json`.
143
+
139
144
  `dryRun: true` in any section makes that step always preview, equivalent to always passing `--dry-run` to it.
140
145
 
141
146
  ## Configuring release rules
@@ -235,6 +240,10 @@ Default templates ship with the package and are used automatically. Override per
235
240
 
236
241
  Templates are [Handlebars](https://handlebarsjs.com/), with `now`, `hasBreakingChanges`, `hasFeatures`, `hasFixes`, `hasPerformance`, `hasOthers`, `findBreakingChanges`, `findFeatures`, `findFixes`, `findPerformance`, `findOthers`, `lookup`, and `call` helpers registered. `hasOthers`/`findOthers` cover any commit type that isn't `feat`, `fix`, or `perf` — the bucket a custom `report.bumps` matcher (e.g. `docs`) lands in.
237
242
 
243
+ ## For AI agents
244
+
245
+ The package ships [`llms.txt`](llms.txt), a compact guide for coding agents: the pipeline, the release context format, config, and every error code with its fix. After installation it is at `node_modules/release-monorepo-semantically/llms.txt`. Point your agent at it (e.g. from your `AGENTS.md` or `CLAUDE.md`) when it sets up or debugs a release pipeline.
246
+
238
247
  ## Development
239
248
 
240
249
  ```bash
@@ -1 +1 @@
1
- {"version":3,"file":"ConventionalCommit.d.ts","sourceRoot":"","sources":["../../src/domain/ConventionalCommit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,cAAc,CAAC;CAC/B;AAGD,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAAyB,CAAC;AAC9E,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAA6C,CAAC;AAClG,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAGnD,CAAC;AAEF,qBAAa,kBAAkB;IAU3B,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,UAAU,EAAE,OAAO;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAC5B,QAAQ,CAAC,YAAY,EAAE,cAAc,GAAG,SAAS;IAdnD,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;gBAS9D,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,OAAO,EACnB,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,YAAY,GAAE,cAAc,GAAG,SAAqB;IAG/D,MAAM,IAAI,sBAAsB;IAQhC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB;IAIjE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAmB7C,oGAAoG;IACpG,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc;IAQxE,mFAAmF;IACnF,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,kBAAkB;CAM3B;AAED,eAAO,MAAM,mBAAmB,GAAI,SAAS,kBAAkB,EAAE,EAAE,MAAM,MAAM,KAAG,kBAAkB,EAAsD,CAAC;AAE3J,eAAO,MAAM,2BAA2B,GAAI,SAAS,kBAAkB,EAAE,EAAE,OAAO,MAAM,EAAE,KAAG,kBAAkB,EACrD,CAAC"}
1
+ {"version":3,"file":"ConventionalCommit.d.ts","sourceRoot":"","sources":["../../src/domain/ConventionalCommit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,cAAc,CAAC;CAC/B;AAGD,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAAyB,CAAC;AAC9E,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAA6C,CAAC;AAClG,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAGnD,CAAC;AAEF,qBAAa,kBAAkB;IAU3B,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,UAAU,EAAE,OAAO;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAC5B,QAAQ,CAAC,YAAY,EAAE,cAAc,GAAG,SAAS;IAdnD,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;gBAS9D,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,OAAO,EACnB,IAAI,GAAE,MAAM,GAAG,IAAW,EAC1B,YAAY,GAAE,cAAc,GAAG,SAAqB;IAG/D,MAAM,IAAI,sBAAsB;IAQhC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB;IAIjE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAmB7C,oGAAoG;IACpG,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc;IAWxE,mFAAmF;IACnF,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,kBAAkB;CAM3B;AAED,eAAO,MAAM,mBAAmB,GAAI,SAAS,kBAAkB,EAAE,EAAE,MAAM,MAAM,KAAG,kBAAkB,EAAsD,CAAC;AAE3J,eAAO,MAAM,2BAA2B,GAAI,SAAS,kBAAkB,EAAE,EAAE,OAAO,MAAM,EAAE,KAAG,kBAAkB,EACrD,CAAC"}
@@ -60,8 +60,11 @@ export class ConventionalCommit {
60
60
  }
61
61
  /** Highest bump level this commit triggers for the given package, or NONE if it matches nothing. */
62
62
  bumpMatch(bumpConfig, packageName) {
63
- if (this.explicitBump !== undefined)
64
- return this.explicitBump;
63
+ if (this.explicitBump !== undefined) {
64
+ if (this.scope === null || this.scope === packageName)
65
+ return this.explicitBump;
66
+ return SemVerBumpType.NONE;
67
+ }
65
68
  if (this.matchesAny(bumpConfig.major, packageName))
66
69
  return SemVerBumpType.MAJOR;
67
70
  if (this.matchesAny(bumpConfig.minor, packageName))
@@ -1 +1 @@
1
- {"version":3,"file":"ConventionalCommit.js","sourceRoot":"","sources":["../../src/domain/ConventionalCommit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConventionalCommit.js","sourceRoot":"","sources":["../../src/domain/ConventionalCommit.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  export const CONFIG_KEY = 'changelog';
3
3
  export const PLUGIN_CONFIG_SCHEMA = z.object({
4
- dryRun: z.boolean().default(false),
5
- template: z.string().optional(),
6
- changelogName: z.string().trim().default('CHANGELOG.md'),
4
+ dryRun: z.boolean().default(false).describe('Always preview this step (same as passing --dry-run): no file, git, or registry mutation.'),
5
+ template: z.string().optional().describe('Path (relative to the working directory) to a Handlebars template for each changelog entry.'),
6
+ changelogName: z.string().trim().default('CHANGELOG.md').describe('Changelog file name inside each released package directory.'),
7
7
  });
8
8
  //# sourceMappingURL=ChangelogConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChangelogConfig.js","sourceRoot":"","sources":["../../../src/features/changelog/ChangelogConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC;CACzD,CAAC,CAAC"}
1
+ {"version":3,"file":"ChangelogConfig.js","sourceRoot":"","sources":["../../../src/features/changelog/ChangelogConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2FAA2F,CAAC;IACxI,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6FAA6F,CAAC;IACvI,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,6DAA6D,CAAC;CACjI,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  export const CONFIG_KEY = 'package-json';
3
3
  export const PLUGIN_CONFIG_SCHEMA = z.object({
4
- dryRun: z.boolean().default(false),
4
+ dryRun: z.boolean().default(false).describe('Always preview this step (same as passing --dry-run): no file, git, or registry mutation.'),
5
5
  });
6
6
  //# sourceMappingURL=PackageJsonConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PackageJsonConfig.js","sourceRoot":"","sources":["../../../src/features/packageJson/PackageJsonConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACnC,CAAC,CAAC"}
1
+ {"version":3,"file":"PackageJsonConfig.js","sourceRoot":"","sources":["../../../src/features/packageJson/PackageJsonConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2FAA2F,CAAC;CACzI,CAAC,CAAC"}
@@ -3,8 +3,8 @@ import { IPluginsConfigServiceKey } from '../../services/PluginsConfigService.js
3
3
  import { z } from 'zod';
4
4
  export const CONFIG_KEY = 'package-manager';
5
5
  export const PLUGIN_CONFIG_SCHEMA = z.object({
6
- dryRun: z.boolean().default(false),
7
- kind: z.enum(['npm', 'pnpm', 'yarn']).default('pnpm'),
6
+ dryRun: z.boolean().default(false).describe('Always preview this step (same as passing --dry-run): no file, git, or registry mutation.'),
7
+ kind: z.enum(['npm', 'pnpm', 'yarn']).default('pnpm').describe('Package manager used to refresh the lockfile and publish.'),
8
8
  });
9
9
  export const whenPackageManagerConfigEqual = (key, value) => scope((c, prev = true) => {
10
10
  const config = IPluginsConfigServiceKey.resolve(c).getConfig(CONFIG_KEY, PLUGIN_CONFIG_SCHEMA);
@@ -1 +1 @@
1
- {"version":3,"file":"PackageManagerConfig.js","sourceRoot":"","sources":["../../../src/features/packageManager/PackageManagerConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAE5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;CACtD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAA+B,GAAM,EAAE,KAAsB,EAAE,EAAE,CAC5G,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE;IACvB,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC/F,OAAO,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACvC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"PackageManagerConfig.js","sourceRoot":"","sources":["../../../src/features/packageManager/PackageManagerConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAE5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2FAA2F,CAAC;IACxI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC;CAC5H,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAA+B,GAAM,EAAE,KAAsB,EAAE,EAAE,CAC5G,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE;IACvB,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC/F,OAAO,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACvC,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReleaseNotesConfig.d.ts","sourceRoot":"","sources":["../../../src/features/releaseNotes/ReleaseNotesConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,kBAAkB,CAAC;AAE1C,eAAO,MAAM,oBAAoB;;;;;;;;iBAY/B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAChE,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,YAAY,CAAC,CAAC,CAAC,oFAInF,CAAC"}
1
+ {"version":3,"file":"ReleaseNotesConfig.d.ts","sourceRoot":"","sources":["../../../src/features/releaseNotes/ReleaseNotesConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,kBAAkB,CAAC;AAE1C,eAAO,MAAM,oBAAoB;;;;;;;;iBAkB/B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAChE,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,YAAY,CAAC,CAAC,CAAC,oFAInF,CAAC"}
@@ -9,11 +9,17 @@ export const PLUGIN_CONFIG_SCHEMA = z.object({
9
9
  .string()
10
10
  .trim()
11
11
  .regex(/^[^/\s]+\/[^/\s]+$/)
12
- .optional(),
13
- token: z.string().trim().min(1).optional(),
14
- dryRun: z.boolean().default(false),
15
- template: z.string().optional(),
16
- kind: z.enum(['github']).default('github'),
12
+ .optional()
13
+ .describe('GitHub repository as owner/name. Falls back to the GITHUB_REPOSITORY environment variable.'),
14
+ token: z
15
+ .string()
16
+ .trim()
17
+ .min(1)
18
+ .optional()
19
+ .describe('GitHub token. Falls back to the GITHUB_TOKEN environment variable; prefer the env var over committing a token.'),
20
+ dryRun: z.boolean().default(false).describe('Always preview this step (same as passing --dry-run): no file, git, or registry mutation.'),
21
+ template: z.string().optional().describe('Path (relative to the working directory) to a Handlebars template for the release notes body.'),
22
+ kind: z.enum(['github']).default('github').describe('Release notes provider.'),
17
23
  });
18
24
  export const whenConfig = (key, value) => scope((c, prev = true) => {
19
25
  const config = IPluginsConfigServiceKey.resolve(c).getConfig(CONFIG_KEY, PLUGIN_CONFIG_SCHEMA);
@@ -1 +1 @@
1
- {"version":3,"file":"ReleaseNotesConfig.js","sourceRoot":"","sources":["../../../src/features/releaseNotes/ReleaseNotesConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC;AAE1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,4EAA4E;IAC5E,kEAAkE;IAClE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,IAAI,EAAE;SACN,KAAK,CAAC,oBAAoB,CAAC;SAC3B,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAA+B,GAAM,EAAE,KAAsB,EAAE,EAAE,CACzF,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE;IACvB,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC/F,OAAO,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACvC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ReleaseNotesConfig.js","sourceRoot":"","sources":["../../../src/features/releaseNotes/ReleaseNotesConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC;AAE1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,4EAA4E;IAC5E,kEAAkE;IAClE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,IAAI,EAAE;SACN,KAAK,CAAC,oBAAoB,CAAC;SAC3B,QAAQ,EAAE;SACV,QAAQ,CAAC,4FAA4F,CAAC;IACzG,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,gHAAgH,CAAC;IAC7H,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2FAA2F,CAAC;IACxI,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+FAA+F,CAAC;IACzI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CAC/E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAA+B,GAAM,EAAE,KAAsB,EAAE,EAAE,CACzF,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE;IACvB,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC/F,OAAO,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACvC,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReportConfig.d.ts","sourceRoot":"","sources":["../../../src/features/report/ReportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,eAAO,MAAM,UAAU,WAAW,CAAC;AAsBnC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS/B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"ReportConfig.d.ts","sourceRoot":"","sources":["../../../src/features/report/ReportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,eAAO,MAAM,UAAU,WAAW,CAAC;AAmCnC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAc/B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -2,12 +2,17 @@ import { z } from 'zod';
2
2
  import { DEFAULT_MAJOR_MATCHERS, DEFAULT_MINOR_MATCHERS, DEFAULT_PATCH_MATCHERS } from '../../domain/ConventionalCommit.js';
3
3
  import { SquashCommitPattern } from '../../domain/SquashCommitPattern.js';
4
4
  export const CONFIG_KEY = 'report';
5
- const BUMP_MATCHER_SCHEMA = z.object({
6
- type: z.string().optional(),
7
- scope: z.string().optional(),
8
- breaking: z.boolean().optional(),
9
- packages: z.union([z.literal('*'), z.array(z.string())]).optional(),
10
- });
5
+ const BUMP_MATCHER_SCHEMA = z
6
+ .object({
7
+ type: z.string().optional().describe('Conventional-commit type (feat, fix, docs, ...). Omitted: any type.'),
8
+ scope: z.string().optional().describe('Literal scope, or "<package>" meaning "equals the name of the package being considered". Omitted: any scope.'),
9
+ breaking: z.boolean().optional().describe('true matches "!" or a BREAKING CHANGE body, false matches its absence. Omitted: not considered.'),
10
+ packages: z
11
+ .union([z.literal('*'), z.array(z.string())])
12
+ .optional()
13
+ .describe('Packages a match releases: "*" for every public package, or a list of names. Ignored when scope is "<package>".'),
14
+ })
15
+ .describe('A commit matching every given field triggers the bump level this matcher is listed under.');
11
16
  const isValidRegExp = (source) => {
12
17
  try {
13
18
  new RegExp(source);
@@ -18,7 +23,13 @@ const isValidRegExp = (source) => {
18
23
  }
19
24
  };
20
25
  const REGEXP_SCHEMA = z.string().min(1).refine(isValidRegExp, 'must be a valid regular expression');
21
- const SQUASH_SCHEMA = z.union([z.literal('github'), z.object({ detect: REGEXP_SCHEMA, entry: REGEXP_SCHEMA })]);
26
+ const SQUASH_SCHEMA = z.union([
27
+ z.literal('github'),
28
+ z.object({
29
+ detect: REGEXP_SCHEMA.describe('Regex tested against a commit subject; a match marks it as a squash commit.'),
30
+ entry: REGEXP_SCHEMA.describe('Regex tested against each body line of a squash commit; a match is one squashed commit header (capture group 1 if present).'),
31
+ }),
32
+ ]);
22
33
  export const PLUGIN_CONFIG_SCHEMA = z.object({
23
34
  bumps: z
24
35
  .object({
@@ -26,7 +37,10 @@ export const PLUGIN_CONFIG_SCHEMA = z.object({
26
37
  minor: z.array(BUMP_MATCHER_SCHEMA).default(DEFAULT_MINOR_MATCHERS),
27
38
  patch: z.array(BUMP_MATCHER_SCHEMA).default(DEFAULT_PATCH_MATCHERS),
28
39
  })
29
- .default({ major: DEFAULT_MAJOR_MATCHERS, minor: DEFAULT_MINOR_MATCHERS, patch: DEFAULT_PATCH_MATCHERS }),
30
- squash: SQUASH_SCHEMA.optional().transform((squash) => (squash === undefined ? undefined : SquashCommitPattern.fromConfig(squash))),
40
+ .default({ major: DEFAULT_MAJOR_MATCHERS, minor: DEFAULT_MINOR_MATCHERS, patch: DEFAULT_PATCH_MATCHERS })
41
+ .describe("Matchers per bump level. A configured level replaces that level's defaults entirely (no merging); unconfigured levels keep their defaults."),
42
+ squash: SQUASH_SCHEMA.optional()
43
+ .describe('How to recognize squash-merge commits and read the conventional commits listed in their body: "github" for GitHub\'s default squash message, or { detect, entry } regexes. Omitted: squash commits are read by their subject only.')
44
+ .transform((squash) => (squash === undefined ? undefined : SquashCommitPattern.fromConfig(squash))),
31
45
  });
32
46
  //# sourceMappingURL=ReportConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReportConfig.js","sourceRoot":"","sources":["../../../src/features/report/ReportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5H,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAEnC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpE,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,MAAc,EAAW,EAAE;IAChD,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC,CAAC;AAEpG,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;AAEhH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;KACpE,CAAC;SACD,OAAO,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAC3G,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;CACpI,CAAC,CAAC"}
1
+ {"version":3,"file":"ReportConfig.js","sourceRoot":"","sources":["../../../src/features/report/ReportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5H,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAEnC,MAAM,mBAAmB,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;IAC3G,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8GAA8G,CAAC;IACrJ,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iGAAiG,CAAC;IAC5I,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SAC5C,QAAQ,EAAE;SACV,QAAQ,CAAC,iHAAiH,CAAC;CAC/H,CAAC;KACD,QAAQ,CAAC,2FAA2F,CAAC,CAAC;AAEzG,MAAM,aAAa,GAAG,CAAC,MAAc,EAAW,EAAE;IAChD,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC,CAAC;AAEpG,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnB,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,6EAA6E,CAAC;QAC7G,KAAK,EAAE,aAAa,CAAC,QAAQ,CAC3B,6HAA6H,CAC9H;KACF,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;KACpE,CAAC;SACD,OAAO,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;SACxG,QAAQ,CAAC,4IAA4I,CAAC;IACzJ,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE;SAC7B,QAAQ,CACP,oOAAoO,CACrO;SACA,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;CACtG,CAAC,CAAC"}
@@ -3,9 +3,9 @@ import { IPluginsConfigServiceKey } from '../../services/PluginsConfigService.js
3
3
  import { z } from 'zod';
4
4
  export const CONFIG_KEY = 'vcs';
5
5
  export const PLUGIN_CONFIG_SCHEMA = z.object({
6
- dryRun: z.boolean().default(false),
7
- template: z.string().optional(),
8
- kind: z.enum(['git']).default('git'),
6
+ dryRun: z.boolean().default(false).describe('Always preview this step (same as passing --dry-run): no file, git, or registry mutation.'),
7
+ template: z.string().optional().describe('Path (relative to the working directory) to a Handlebars template for the release commit message.'),
8
+ kind: z.enum(['git']).default('git').describe('Version control system.'),
9
9
  });
10
10
  export const whenConfig = (key, value) => scope((c, prev = true) => {
11
11
  const config = IPluginsConfigServiceKey.resolve(c).getConfig(CONFIG_KEY, PLUGIN_CONFIG_SCHEMA);
@@ -1 +1 @@
1
- {"version":3,"file":"VCSConfig.js","sourceRoot":"","sources":["../../../src/features/vcs/VCSConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;AAEhC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAA+B,GAAM,EAAE,KAAsB,EAAE,EAAE,CACzF,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE;IACvB,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC/F,OAAO,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACvC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"VCSConfig.js","sourceRoot":"","sources":["../../../src/features/vcs/VCSConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;AAEhC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2FAA2F,CAAC;IACxI,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mGAAmG,CAAC;IAC7I,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CACzE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAA+B,GAAM,EAAE,KAAsB,EAAE,EAAE,CACzF,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE;IACvB,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC/F,OAAO,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACvC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,305 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "$schema": {
6
+ "type": "string"
7
+ },
8
+ "report": {
9
+ "type": "object",
10
+ "properties": {
11
+ "bumps": {
12
+ "default": {
13
+ "major": [
14
+ {
15
+ "breaking": true
16
+ }
17
+ ],
18
+ "minor": [
19
+ {
20
+ "type": "feat",
21
+ "scope": "<package>"
22
+ }
23
+ ],
24
+ "patch": [
25
+ {
26
+ "type": "fix",
27
+ "scope": "<package>"
28
+ },
29
+ {
30
+ "type": "perf",
31
+ "scope": "<package>"
32
+ }
33
+ ]
34
+ },
35
+ "description": "Matchers per bump level. A configured level replaces that level's defaults entirely (no merging); unconfigured levels keep their defaults.",
36
+ "type": "object",
37
+ "properties": {
38
+ "major": {
39
+ "default": [
40
+ {
41
+ "breaking": true
42
+ }
43
+ ],
44
+ "type": "array",
45
+ "items": {
46
+ "type": "object",
47
+ "properties": {
48
+ "type": {
49
+ "description": "Conventional-commit type (feat, fix, docs, ...). Omitted: any type.",
50
+ "type": "string"
51
+ },
52
+ "scope": {
53
+ "description": "Literal scope, or \"<package>\" meaning \"equals the name of the package being considered\". Omitted: any scope.",
54
+ "type": "string"
55
+ },
56
+ "breaking": {
57
+ "description": "true matches \"!\" or a BREAKING CHANGE body, false matches its absence. Omitted: not considered.",
58
+ "type": "boolean"
59
+ },
60
+ "packages": {
61
+ "description": "Packages a match releases: \"*\" for every public package, or a list of names. Ignored when scope is \"<package>\".",
62
+ "anyOf": [
63
+ {
64
+ "type": "string",
65
+ "const": "*"
66
+ },
67
+ {
68
+ "type": "array",
69
+ "items": {
70
+ "type": "string"
71
+ }
72
+ }
73
+ ]
74
+ }
75
+ },
76
+ "description": "A commit matching every given field triggers the bump level this matcher is listed under."
77
+ }
78
+ },
79
+ "minor": {
80
+ "default": [
81
+ {
82
+ "type": "feat",
83
+ "scope": "<package>"
84
+ }
85
+ ],
86
+ "type": "array",
87
+ "items": {
88
+ "type": "object",
89
+ "properties": {
90
+ "type": {
91
+ "description": "Conventional-commit type (feat, fix, docs, ...). Omitted: any type.",
92
+ "type": "string"
93
+ },
94
+ "scope": {
95
+ "description": "Literal scope, or \"<package>\" meaning \"equals the name of the package being considered\". Omitted: any scope.",
96
+ "type": "string"
97
+ },
98
+ "breaking": {
99
+ "description": "true matches \"!\" or a BREAKING CHANGE body, false matches its absence. Omitted: not considered.",
100
+ "type": "boolean"
101
+ },
102
+ "packages": {
103
+ "description": "Packages a match releases: \"*\" for every public package, or a list of names. Ignored when scope is \"<package>\".",
104
+ "anyOf": [
105
+ {
106
+ "type": "string",
107
+ "const": "*"
108
+ },
109
+ {
110
+ "type": "array",
111
+ "items": {
112
+ "type": "string"
113
+ }
114
+ }
115
+ ]
116
+ }
117
+ },
118
+ "description": "A commit matching every given field triggers the bump level this matcher is listed under."
119
+ }
120
+ },
121
+ "patch": {
122
+ "default": [
123
+ {
124
+ "type": "fix",
125
+ "scope": "<package>"
126
+ },
127
+ {
128
+ "type": "perf",
129
+ "scope": "<package>"
130
+ }
131
+ ],
132
+ "type": "array",
133
+ "items": {
134
+ "type": "object",
135
+ "properties": {
136
+ "type": {
137
+ "description": "Conventional-commit type (feat, fix, docs, ...). Omitted: any type.",
138
+ "type": "string"
139
+ },
140
+ "scope": {
141
+ "description": "Literal scope, or \"<package>\" meaning \"equals the name of the package being considered\". Omitted: any scope.",
142
+ "type": "string"
143
+ },
144
+ "breaking": {
145
+ "description": "true matches \"!\" or a BREAKING CHANGE body, false matches its absence. Omitted: not considered.",
146
+ "type": "boolean"
147
+ },
148
+ "packages": {
149
+ "description": "Packages a match releases: \"*\" for every public package, or a list of names. Ignored when scope is \"<package>\".",
150
+ "anyOf": [
151
+ {
152
+ "type": "string",
153
+ "const": "*"
154
+ },
155
+ {
156
+ "type": "array",
157
+ "items": {
158
+ "type": "string"
159
+ }
160
+ }
161
+ ]
162
+ }
163
+ },
164
+ "description": "A commit matching every given field triggers the bump level this matcher is listed under."
165
+ }
166
+ }
167
+ }
168
+ },
169
+ "squash": {
170
+ "description": "How to recognize squash-merge commits and read the conventional commits listed in their body: \"github\" for GitHub's default squash message, or { detect, entry } regexes. Omitted: squash commits are read by their subject only.",
171
+ "anyOf": [
172
+ {
173
+ "type": "string",
174
+ "const": "github"
175
+ },
176
+ {
177
+ "type": "object",
178
+ "properties": {
179
+ "detect": {
180
+ "type": "string",
181
+ "minLength": 1,
182
+ "description": "Regex tested against a commit subject; a match marks it as a squash commit."
183
+ },
184
+ "entry": {
185
+ "type": "string",
186
+ "minLength": 1,
187
+ "description": "Regex tested against each body line of a squash commit; a match is one squashed commit header (capture group 1 if present)."
188
+ }
189
+ },
190
+ "required": [
191
+ "detect",
192
+ "entry"
193
+ ]
194
+ }
195
+ ]
196
+ }
197
+ }
198
+ },
199
+ "package-json": {
200
+ "type": "object",
201
+ "properties": {
202
+ "dryRun": {
203
+ "default": false,
204
+ "description": "Always preview this step (same as passing --dry-run): no file, git, or registry mutation.",
205
+ "type": "boolean"
206
+ }
207
+ }
208
+ },
209
+ "package-manager": {
210
+ "type": "object",
211
+ "properties": {
212
+ "dryRun": {
213
+ "default": false,
214
+ "description": "Always preview this step (same as passing --dry-run): no file, git, or registry mutation.",
215
+ "type": "boolean"
216
+ },
217
+ "kind": {
218
+ "default": "pnpm",
219
+ "description": "Package manager used to refresh the lockfile and publish.",
220
+ "type": "string",
221
+ "enum": [
222
+ "npm",
223
+ "pnpm",
224
+ "yarn"
225
+ ]
226
+ }
227
+ }
228
+ },
229
+ "changelog": {
230
+ "type": "object",
231
+ "properties": {
232
+ "dryRun": {
233
+ "default": false,
234
+ "description": "Always preview this step (same as passing --dry-run): no file, git, or registry mutation.",
235
+ "type": "boolean"
236
+ },
237
+ "template": {
238
+ "description": "Path (relative to the working directory) to a Handlebars template for each changelog entry.",
239
+ "type": "string"
240
+ },
241
+ "changelogName": {
242
+ "default": "CHANGELOG.md",
243
+ "description": "Changelog file name inside each released package directory.",
244
+ "type": "string"
245
+ }
246
+ }
247
+ },
248
+ "vcs": {
249
+ "type": "object",
250
+ "properties": {
251
+ "dryRun": {
252
+ "default": false,
253
+ "description": "Always preview this step (same as passing --dry-run): no file, git, or registry mutation.",
254
+ "type": "boolean"
255
+ },
256
+ "template": {
257
+ "description": "Path (relative to the working directory) to a Handlebars template for the release commit message.",
258
+ "type": "string"
259
+ },
260
+ "kind": {
261
+ "default": "git",
262
+ "description": "Version control system.",
263
+ "type": "string",
264
+ "enum": [
265
+ "git"
266
+ ]
267
+ }
268
+ }
269
+ },
270
+ "release-notes": {
271
+ "type": "object",
272
+ "properties": {
273
+ "repository": {
274
+ "description": "GitHub repository as owner/name. Falls back to the GITHUB_REPOSITORY environment variable.",
275
+ "type": "string",
276
+ "pattern": "^[^/\\s]+\\/[^/\\s]+$"
277
+ },
278
+ "token": {
279
+ "description": "GitHub token. Falls back to the GITHUB_TOKEN environment variable; prefer the env var over committing a token.",
280
+ "type": "string",
281
+ "minLength": 1
282
+ },
283
+ "dryRun": {
284
+ "default": false,
285
+ "description": "Always preview this step (same as passing --dry-run): no file, git, or registry mutation.",
286
+ "type": "boolean"
287
+ },
288
+ "template": {
289
+ "description": "Path (relative to the working directory) to a Handlebars template for the release notes body.",
290
+ "type": "string"
291
+ },
292
+ "kind": {
293
+ "default": "github",
294
+ "description": "Release notes provider.",
295
+ "type": "string",
296
+ "enum": [
297
+ "github"
298
+ ]
299
+ }
300
+ }
301
+ }
302
+ },
303
+ "title": "release-monorepo-semantically configuration",
304
+ "description": "Contents of .release.json, or the \"release\" section of the workspace root package.json. Each key configures one step; CLI flags win over both."
305
+ }
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * The whole `.release.json` file (or `release` section of the root
4
+ * package.json): one optional section per step, keyed by that step's
5
+ * CONFIG_KEY. Built from the same zod schemas the steps validate with, so the
6
+ * published JSON Schema can't drift from what the CLI accepts.
7
+ */
8
+ export declare const RELEASE_CONFIG_SCHEMA: z.ZodObject<{
9
+ $schema: z.ZodOptional<z.ZodString>;
10
+ report: z.ZodOptional<z.ZodObject<{
11
+ bumps: z.ZodDefault<z.ZodObject<{
12
+ major: z.ZodDefault<z.ZodArray<z.ZodObject<{
13
+ type: z.ZodOptional<z.ZodString>;
14
+ scope: z.ZodOptional<z.ZodString>;
15
+ breaking: z.ZodOptional<z.ZodBoolean>;
16
+ packages: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodArray<z.ZodString>]>>;
17
+ }, z.core.$strip>>>;
18
+ minor: z.ZodDefault<z.ZodArray<z.ZodObject<{
19
+ type: z.ZodOptional<z.ZodString>;
20
+ scope: z.ZodOptional<z.ZodString>;
21
+ breaking: z.ZodOptional<z.ZodBoolean>;
22
+ packages: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodArray<z.ZodString>]>>;
23
+ }, z.core.$strip>>>;
24
+ patch: z.ZodDefault<z.ZodArray<z.ZodObject<{
25
+ type: z.ZodOptional<z.ZodString>;
26
+ scope: z.ZodOptional<z.ZodString>;
27
+ breaking: z.ZodOptional<z.ZodBoolean>;
28
+ packages: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodArray<z.ZodString>]>>;
29
+ }, z.core.$strip>>>;
30
+ }, z.core.$strip>>;
31
+ squash: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"github">, z.ZodObject<{
32
+ detect: z.ZodString;
33
+ entry: z.ZodString;
34
+ }, z.core.$strip>]>>, z.ZodTransform<import("../domain/SquashCommitPattern.js").SquashCommitPattern | undefined, "github" | {
35
+ detect: string;
36
+ entry: string;
37
+ } | undefined>>;
38
+ }, z.core.$strip>>;
39
+ "package-json": z.ZodOptional<z.ZodObject<{
40
+ dryRun: z.ZodDefault<z.ZodBoolean>;
41
+ }, z.core.$strip>>;
42
+ "package-manager": z.ZodOptional<z.ZodObject<{
43
+ dryRun: z.ZodDefault<z.ZodBoolean>;
44
+ kind: z.ZodDefault<z.ZodEnum<{
45
+ npm: "npm";
46
+ pnpm: "pnpm";
47
+ yarn: "yarn";
48
+ }>>;
49
+ }, z.core.$strip>>;
50
+ changelog: z.ZodOptional<z.ZodObject<{
51
+ dryRun: z.ZodDefault<z.ZodBoolean>;
52
+ template: z.ZodOptional<z.ZodString>;
53
+ changelogName: z.ZodDefault<z.ZodString>;
54
+ }, z.core.$strip>>;
55
+ vcs: z.ZodOptional<z.ZodObject<{
56
+ dryRun: z.ZodDefault<z.ZodBoolean>;
57
+ template: z.ZodOptional<z.ZodString>;
58
+ kind: z.ZodDefault<z.ZodEnum<{
59
+ git: "git";
60
+ }>>;
61
+ }, z.core.$strip>>;
62
+ "release-notes": z.ZodOptional<z.ZodObject<{
63
+ repository: z.ZodOptional<z.ZodString>;
64
+ token: z.ZodOptional<z.ZodString>;
65
+ dryRun: z.ZodDefault<z.ZodBoolean>;
66
+ template: z.ZodOptional<z.ZodString>;
67
+ kind: z.ZodDefault<z.ZodEnum<{
68
+ github: "github";
69
+ }>>;
70
+ }, z.core.$strip>>;
71
+ }, z.core.$strip>;
72
+ export declare function releaseConfigJsonSchema(): Record<string, unknown>;
73
+ //# sourceMappingURL=releaseConfigSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseConfigSchema.d.ts","sourceRoot":"","sources":["../../src/schema/releaseConfigSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQhC,CAAC;AAEH,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOjE"}
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+ import * as changelog from '../features/changelog/ChangelogConfig.js';
3
+ import * as packageJson from '../features/packageJson/PackageJsonConfig.js';
4
+ import * as packageManager from '../features/packageManager/PackageManagerConfig.js';
5
+ import * as releaseNotes from '../features/releaseNotes/ReleaseNotesConfig.js';
6
+ import * as report from '../features/report/ReportConfig.js';
7
+ import * as vcs from '../features/vcs/VCSConfig.js';
8
+ /**
9
+ * The whole `.release.json` file (or `release` section of the root
10
+ * package.json): one optional section per step, keyed by that step's
11
+ * CONFIG_KEY. Built from the same zod schemas the steps validate with, so the
12
+ * published JSON Schema can't drift from what the CLI accepts.
13
+ */
14
+ export const RELEASE_CONFIG_SCHEMA = z.object({
15
+ $schema: z.string().optional(),
16
+ [report.CONFIG_KEY]: report.PLUGIN_CONFIG_SCHEMA.optional(),
17
+ [packageJson.CONFIG_KEY]: packageJson.PLUGIN_CONFIG_SCHEMA.optional(),
18
+ [packageManager.CONFIG_KEY]: packageManager.PLUGIN_CONFIG_SCHEMA.optional(),
19
+ [changelog.CONFIG_KEY]: changelog.PLUGIN_CONFIG_SCHEMA.optional(),
20
+ [vcs.CONFIG_KEY]: vcs.PLUGIN_CONFIG_SCHEMA.optional(),
21
+ [releaseNotes.CONFIG_KEY]: releaseNotes.PLUGIN_CONFIG_SCHEMA.optional(),
22
+ });
23
+ export function releaseConfigJsonSchema() {
24
+ return {
25
+ ...z.toJSONSchema(RELEASE_CONFIG_SCHEMA, { io: 'input', target: 'draft-7' }),
26
+ title: 'release-monorepo-semantically configuration',
27
+ description: 'Contents of .release.json, or the "release" section of the workspace root package.json. Each key configures one step; CLI flags win over both.',
28
+ };
29
+ }
30
+ //# sourceMappingURL=releaseConfigSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseConfigSchema.js","sourceRoot":"","sources":["../../src/schema/releaseConfigSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,SAAS,MAAM,0CAA0C,CAAC;AACtE,OAAO,KAAK,WAAW,MAAM,8CAA8C,CAAC;AAC5E,OAAO,KAAK,cAAc,MAAM,oDAAoD,CAAC;AACrF,OAAO,KAAK,YAAY,MAAM,gDAAgD,CAAC;AAC/E,OAAO,KAAK,MAAM,MAAM,oCAAoC,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,8BAA8B,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE;IAC3D,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,oBAAoB,CAAC,QAAQ,EAAE;IACrE,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,oBAAoB,CAAC,QAAQ,EAAE;IAC3E,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE;IACjE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,oBAAoB,CAAC,QAAQ,EAAE;IACrD,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,QAAQ,EAAE;CACxE,CAAC,CAAC;AAEH,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,GAAG,CAAC,CAAC,YAAY,CAAC,qBAAqB,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC5E,KAAK,EAAE,6CAA6C;QACpD,WAAW,EACT,gJAAgJ;KACnJ,CAAC;AACJ,CAAC"}
package/llms.txt ADDED
@@ -0,0 +1,120 @@
1
+ # release-monorepo-semantically
2
+
3
+ > CLI (`monorepo-semantic-release`) that versions, changelogs, tags, and publishes the public packages of a pnpm workspace from conventional commits. It is a set of independent steps, not one command: `report` computes a JSON release context, and every other step consumes that context via `--context` and does one job. The caller (a CI pipeline or shell script) chooses which steps run and in what order.
4
+
5
+ Full docs: https://github.com/IgorBabkin/release-monorepo-semantically#readme
6
+ Config JSON Schema (shipped in the package): `release-monorepo-semantically/release.schema.json` (file: `node_modules/release-monorepo-semantically/dist/release.schema.json`)
7
+
8
+ ## Install
9
+
10
+ ```bash
11
+ pnpm add -D release-monorepo-semantically
12
+ ```
13
+
14
+ Requires Node >=20.11, a git repository, a root `package.json` with `workspaces` globs, and `name` plus a `major.minor.patch` `version` in every workspace package.
15
+
16
+ ## Canonical pipeline
17
+
18
+ Run from the workspace root, in this order:
19
+
20
+ ```bash
21
+ RELEASE_CONTEXT=$(monorepo-semantic-release report) # fails if the working tree is dirty
22
+ monorepo-semantic-release package-json --context "$RELEASE_CONTEXT" # pin internal deps to exact new versions, refresh lockfile
23
+ monorepo-semantic-release package-manager --context "$RELEASE_CONTEXT" # write new versions into package.json files
24
+ monorepo-semantic-release changelog --context "$RELEASE_CONTEXT" # prepend CHANGELOG.md entries
25
+ monorepo-semantic-release vcs --context "$RELEASE_CONTEXT" # commit, tag, push
26
+ monorepo-semantic-release package-manager publish --context "$RELEASE_CONTEXT" # optional: pnpm publish
27
+ monorepo-semantic-release release-notes --context "$RELEASE_CONTEXT" # optional: GitHub Releases via `gh`, needs GITHUB_TOKEN + GITHUB_REPOSITORY
28
+ ```
29
+
30
+ - Syntax: `monorepo-semantic-release <step> [action] [--flags]`.
31
+ - stdout of `report` is pure JSON; all progress logs go to stderr. Capture it directly, never with `2>&1`.
32
+ - Every step accepts `--dry-run` (no file, git, or registry mutation for that step).
33
+ - `vcs` actions: default runs `commit`, `tag`, `push`; each is also callable alone (`vcs commit`, `vcs tag`, `vcs push`).
34
+ - `package-manager` actions: default writes versions; `publish` publishes. They are separate on purpose.
35
+ - `--template <path>` overrides the Handlebars template for `changelog`, `vcs commit`, and `release-notes`. `changelog` also takes `--changelog-name <file>`.
36
+ - If nothing needs releasing, `report` emits a context with empty maps and the later steps are no-ops.
37
+
38
+ ## Release context (`report` output)
39
+
40
+ ```json
41
+ {
42
+ "releasedVersions": { "@acme/core": "1.3.0" },
43
+ "releasedPackages": [
44
+ { "name": "@acme/core", "dirname": "/abs/path/packages/core", "version": "1.2.4", "isPrivate": false, "dependencies": {}, "devDependencies": {} }
45
+ ],
46
+ "releasedCommits": {
47
+ "@acme/core": [{ "type": "feat", "scope": "@acme/core", "subject": "add thing", "isBreaking": false, "hash": "abc1234..." }]
48
+ }
49
+ }
50
+ ```
51
+
52
+ `releasedVersions` maps package name to its new version. `releasedPackages[].version` is the version before the release. A commit may also carry `explicitBump` (0 none, 1 patch, 2 minor, 3 major).
53
+
54
+ ## How bumps are computed
55
+
56
+ - Commits are read per package since its last tag `<package-name>@<version>` (tag format is fixed). With no tag, all history counts.
57
+ - Default rules: `feat(<package-name>)` -> minor; `fix(<package-name>)` / `perf(<package-name>)` -> patch; `!` (e.g. `feat(@acme/core)!: ...`) -> major. Only commit headers are read, so a `BREAKING CHANGE:` footer in the body is not seen; use `!`. The scope must equal the full package name, e.g. `fix(@acme/core): ...`.
58
+ - `docs`, `test`, `ci`, `chore`, `refactor`, `style`, and unparseable messages do not release by default.
59
+ - A package whose internal dependency was released in the same run gets at least a minor bump. Packages are processed dependencies-first.
60
+ - Priority: major > minor > patch > none.
61
+ - Explicit override: `[major]`, `[minor]`, `[patch]`, or `[skip-bump]` in a commit subject replaces the rule-based level for that commit. A scoped tag applies only to the package matching its scope; an unscoped tag applies to every public package.
62
+ - Squash merges: by default only a squash commit's subject (e.g. the PR title) is analyzed. Set `report.squash` to `"github"` (GitHub's default squash message) or `{ "detect": "<subject regex>", "entry": "<body line regex>" }` to analyze the commits listed in its body instead. Prefer merge or rebase merges, or a conventional squash title.
63
+ - Private packages (`"private": true`) are never released.
64
+ - Internal dependency versions are written as exact versions; `workspace:` specifiers and `peerDependencies` are left alone.
65
+
66
+ ## Configuration
67
+
68
+ Put it in `.release.json` at the workspace root, or under `"release"` in the root `package.json`. When both configure the same step, `.release.json` replaces that step's whole section. CLI flags win over both. Add `"$schema"` for editor validation:
69
+
70
+ ```json
71
+ {
72
+ "$schema": "./node_modules/release-monorepo-semantically/dist/release.schema.json",
73
+ "report": {
74
+ "bumps": {
75
+ "patch": [
76
+ { "type": "fix", "scope": "<package>" },
77
+ { "type": "perf", "scope": "<package>" },
78
+ { "type": "docs", "scope": "specs", "packages": "*" }
79
+ ]
80
+ }
81
+ },
82
+ "changelog": { "template": "templates/changelog.hbs", "changelogName": "CHANGELOG.md" },
83
+ "vcs": { "template": "templates/release-commit-msg.hbs" },
84
+ "release-notes": { "repository": "acme/repo" },
85
+ "package-manager": { "kind": "pnpm" }
86
+ }
87
+ ```
88
+
89
+ Sections: `report`, `package-json`, `package-manager`, `changelog`, `vcs`, `release-notes`. Any section accepts `"dryRun": true`.
90
+
91
+ `report.bumps.<major|minor|patch>` is a list of matchers `{ type?, scope?, breaking?, packages? }`. A configured level replaces that level's defaults entirely (repeat the defaults you want to keep); unconfigured levels keep their defaults. `scope: "<package>"` means "equals the package being considered". `packages: "*"` releases every public package on a match. `report.squash` is described above.
92
+
93
+ ## Templates
94
+
95
+ Handlebars. Default templates ship in `dist/features/{changelog/changelog.hbs,vcs/release-commit-msg.hbs,releaseNotes/github-release-notes.hbs}` and are good starting points to copy. Helpers: `now`, `hasBreakingChanges`, `hasFeatures`, `hasFixes`, `hasPerformance`, `hasOthers`, `findBreakingChanges`, `findFeatures`, `findFixes`, `findPerformance`, `findOthers`, `lookup`, `call`.
96
+
97
+ ## Errors
98
+
99
+ Failures print `[CODE] message` to stderr and exit with code 1.
100
+
101
+ | Code | Meaning / fix |
102
+ | --- | --- |
103
+ | `DIRTY_WORKING_TREE` | `report` needs a clean tree. Commit or stash first. |
104
+ | `INVALID_ROOT_PACKAGE_JSON` | Root `package.json` is missing `workspaces` or is malformed. |
105
+ | `INVALID_PACKAGE_JSON` | A workspace package lacks `name` or a `major.minor.patch` `version`. |
106
+ | `MISSING_PACKAGE_JSON` | A workspace glob matched a directory with no `package.json`. |
107
+ | `INVALID_CONFIG` | A config section fails the schema. The message names the section and field. |
108
+ | `MISSING_GITHUB_CREDENTIALS` | `release-notes` needs `repository`/`token` config or `GITHUB_REPOSITORY`/`GITHUB_TOKEN`. |
109
+ | `GITHUB_CLI_UNAVAILABLE` | `release-notes` needs `gh` on `PATH`. |
110
+ | `MISSING_DEPENDENCY_VERSION` | A dependency listed for update isn't declared in the package. |
111
+ | `MISSING_CONTROLLER` | No step name was given. |
112
+
113
+ ## Programmatic use
114
+
115
+ ```ts
116
+ import { runCli } from 'release-monorepo-semantically';
117
+ // Same arguments as the CLI; returns the exit code. Run with process.cwd() at the
118
+ // workspace root: git commands use the process working directory.
119
+ const exitCode = runCli(['report']);
120
+ ```
package/package.json CHANGED
@@ -1,9 +1,23 @@
1
1
  {
2
2
  "name": "release-monorepo-semantically",
3
- "version": "1.13.0",
4
- "description": "cli commands to manage versioning of package in monorepo and generate changelog",
3
+ "version": "1.14.1",
4
+ "description": "CLI that versions, changelogs, tags, and publishes the packages of a pnpm monorepo from conventional commits, as independent composable CI steps",
5
+ "keywords": [
6
+ "monorepo",
7
+ "pnpm",
8
+ "workspaces",
9
+ "semantic-release",
10
+ "semver",
11
+ "conventional-commits",
12
+ "changelog",
13
+ "release",
14
+ "versioning",
15
+ "cli",
16
+ "ci",
17
+ "github-actions"
18
+ ],
5
19
  "license": "ISC",
6
- "author": "",
20
+ "author": "Igor Babkin",
7
21
  "type": "module",
8
22
  "main": "dist/index.js",
9
23
  "types": "dist/index.d.ts",
@@ -11,14 +25,18 @@
11
25
  ".": {
12
26
  "types": "./dist/index.d.ts",
13
27
  "import": "./dist/index.js"
14
- }
28
+ },
29
+ "./release.schema.json": "./dist/release.schema.json",
30
+ "./llms.txt": "./llms.txt",
31
+ "./package.json": "./package.json"
15
32
  },
16
33
  "bin": {
17
34
  "monorepo-semantic-release": "bin/release.mjs"
18
35
  },
19
36
  "files": [
20
37
  "dist",
21
- "bin"
38
+ "bin",
39
+ "llms.txt"
22
40
  ],
23
41
  "publishConfig": {
24
42
  "access": "public",
@@ -28,12 +46,16 @@
28
46
  "type": "git",
29
47
  "url": "git+https://github.com/IgorBabkin/release-monorepo-semantically.git"
30
48
  },
49
+ "homepage": "https://github.com/IgorBabkin/release-monorepo-semantically#readme",
50
+ "bugs": {
51
+ "url": "https://github.com/IgorBabkin/release-monorepo-semantically/issues"
52
+ },
31
53
  "engines": {
32
54
  "node": ">=20.11"
33
55
  },
34
56
  "scripts": {
35
57
  "typecheck": "tsc --noEmit",
36
- "build": "node --input-type=module -e \"import { rmSync } from 'node:fs'; rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.build.json && node scripts/copy-templates.mjs",
58
+ "build": "node --input-type=module -e \"import { rmSync } from 'node:fs'; rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.build.json && node scripts/copy-templates.mjs && node scripts/generate-schema.mjs",
37
59
  "dev": "tsc --watch",
38
60
  "start": "node dist/index.js",
39
61
  "lint": "eslint src/",