diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fdc9512..5793c09 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -189,8 +189,8 @@ catalogs: specifier: 3.1.0 version: 3.1.0 '@exadev/semantic-release-workspace': - specifier: 3.1.29 - version: 3.1.29 + specifier: 3.2.0 + version: 3.2.0 '@orpc/client': specifier: 2.0.0-beta.41 version: 2.0.0-beta.41 @@ -405,7 +405,7 @@ importers: version: 3.1.0(@eslint/json@2.1.0)(@eslint/markdown@8.0.3(supports-color@7.2.0))(eslint-plugin-jsx-a11y@6.10.2(eslint@10.12.0(jiti@2.7.0)(supports-color@7.2.0)))(eslint-plugin-react-hooks@7.1.1(eslint@10.12.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(eslint-plugin-react@7.37.5(eslint@10.12.0(jiti@2.7.0)(supports-color@7.2.0)))(eslint@10.12.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript-eslint@8.71.0(eslint@10.12.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(typescript@6.0.3) '@exadev/semantic-release-workspace': specifier: 'catalog:' - version: 3.1.29(@semantic-release/changelog@7.0.0(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3)))(@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/git@11.0.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/github@12.0.10(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/npm@13.2.0(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3)))(@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0)(typescript@6.0.3) + version: 3.2.0(@semantic-release/changelog@7.0.0(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3)))(@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/git@11.0.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/github@12.0.10(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/npm@13.2.0(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3)))(@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0)(typescript@6.0.3) '@semantic-release/changelog': specifier: 'catalog:' version: 7.0.0(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3)) @@ -2769,8 +2769,8 @@ packages: resolution: {integrity: sha512-ps8sYs4Ky+8QTtsDvafQpvvjcyAgXeWFmjxRWL6zaoMsrfX2ifliIKhLfDf0Xd3td5c6L9DJGAZJOtHRzIDy2Q==} engines: {node: '>=20'} - '@exadev/semantic-release-workspace@3.1.29': - resolution: {integrity: sha512-aE5vDOoUFI4HRgoxoUJ7cZSMM1Ggs3qL/u9NzBOXha64lCqPtWTCUe2fuA+pXsqo4JXZ962ZjlyA65m0jTbbng==} + '@exadev/semantic-release-workspace@3.2.0': + resolution: {integrity: sha512-HBiqCUIBUmN6Khe1IcirE77XXmnIeYzrgyqTaEFRD5Dylp3FGk80IJks2yU2xGPATMJx7ka3rAENVxP3TpEHXw==} engines: {node: ^22.18 || >=24} hasBin: true peerDependencies: @@ -9226,7 +9226,7 @@ snapshots: - supports-color - typescript - '@exadev/semantic-release-workspace@3.1.29(@semantic-release/changelog@7.0.0(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3)))(@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/git@11.0.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/github@12.0.10(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/npm@13.2.0(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3)))(@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0)(typescript@6.0.3)': + '@exadev/semantic-release-workspace@3.2.0(@semantic-release/changelog@7.0.0(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3)))(@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/git@11.0.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/github@12.0.10(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(@semantic-release/npm@13.2.0(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3)))(@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0))(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: '@exadev/release-gate': 1.0.2(supports-color@7.2.0)(typescript@6.0.3) '@semantic-release/changelog': 7.0.0(semantic-release@25.0.9(supports-color@7.2.0)(typescript@6.0.3)) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index bbea6b1..99a4209 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -42,7 +42,7 @@ catalog: "@eslint/json": 2.1.0 "@eslint/markdown": 8.0.3 "@exadev/eslint-config": 3.1.0 - "@exadev/semantic-release-workspace": 3.1.29 + "@exadev/semantic-release-workspace": 3.2.0 "@orpc/client": 2.0.0-beta.41 "@orpc/contract": 2.0.0-beta.41 "@orpc/server": 2.0.0-beta.41 diff --git a/release-workspace.config.ts b/release-workspace.config.ts index 13356a3..e91229e 100644 --- a/release-workspace.config.ts +++ b/release-workspace.config.ts @@ -56,11 +56,14 @@ const config: Pick< | "commitStrategy" | "plugins" | "packagePlugins" + | "bundlingPackages" | "analyzeCommits" | "generateNotes" > = { branches: ["main"], commitStrategy: "single", + // The one published package inlines the private workspace packages, so it releases at the highest type among the bundled packages that released in the run: a `feat` in a bundled package is a minor release of `process-graph`, not a patch. + bundlingPackages: ["process-graph"], plugins, packagePlugins: Object.fromEntries( workspace.packages diff --git a/release-workspace.config.unit.test.ts b/release-workspace.config.unit.test.ts index a13a5f1..0bd7c2c 100644 --- a/release-workspace.config.unit.test.ts +++ b/release-workspace.config.unit.test.ts @@ -131,4 +131,16 @@ describe("release-workspace.config.ts", () => { expect(config.plugins).toContain("@semantic-release/changelog"); expect(config.plugins).toContain("@semantic-release/github"); }); + + it("names every published package as one that bundles its private siblings", async () => { + const workspace = await discoverWorkspace(import.meta.dirname); + const published = workspace.packages + .filter((pkg) => !pkg.private) + .map((pkg) => pkg.name) + .sort(); + + expect([...(config.bundlingPackages ?? [])].sort()).toStrictEqual( + published, + ); + }); });