From ee9e1e71b155a11d08595437bd3424b1f7308b5f Mon Sep 17 00:00:00 2001 From: Ambros Morscher Date: Mon, 7 Nov 2022 17:36:41 +0100 Subject: [PATCH] chore: integrated requested review changes --- commands/version/README.md | 6 +++--- .../__tests__/version-conventional-commits.test.js | 6 +++--- commands/version/command.js | 4 ++-- commands/version/index.js | 4 ++-- .../__tests__/conventional-commits.test.js | 6 +++--- core/conventional-commits/lib/recommend-version.js | 8 ++++---- core/lerna/schemas/lerna-schema.json | 7 +++++++ 7 files changed, 24 insertions(+), 17 deletions(-) diff --git a/commands/version/README.md b/commands/version/README.md index 44712c1f396..e78ce3b5713 100644 --- a/commands/version/README.md +++ b/commands/version/README.md @@ -55,7 +55,7 @@ Running `lerna version --conventional-commits` without the above flags will rele - [`--conventional-commits`](#--conventional-commits) - [`--conventional-graduate`](#--conventional-graduate) - [`--conventional-prerelease`](#--conventional-prerelease) - - [`--conventional-bumpprerelease`](#--conventional-bumpprerelease) + - [`--conventional-bump-prerelease`](#--conventional-bump-prerelease) - [`--create-release `](#--create-release-type) - [`--exact`](#--exact) - [`--force-publish`](#--force-publish) @@ -202,10 +202,10 @@ lerna version --conventional-commits --conventional-prerelease When run with this flag, `lerna version` will release with prerelease versions the specified packages (comma-separated) or all packages using `*`. Releases all unreleased changes as pre(patch/minor/major/release) by prefixing the version recommendation from `conventional-commits` with `pre`, eg. if present changes include a feature commit, the recommended bump will be `minor`, so this flag will result in a `preminor` release. If changes are present for packages that are not specified (if specifying packages), or for packages that are already in prerelease, those packages will be versioned as they normally would using `--conventional-commits`. -### `--conventional-bumpprerelease` +### `--conventional-bump-prerelease` ```sh -lerna version --conventional-commits --conventional-prerelease --conventional-bumpprerelease +lerna version --conventional-commits --conventional-prerelease --conventional-bump-prerelease ``` When run with this flag, `lerna version` will release with bumped prerelease versions even if already released packages are prereleases. Releases all unreleased changes as pre(patch/minor/major/release) by prefixing the version recommendation from `conventional-commits` with `pre`, eg. if present changes include a feature commit, the recommended bump will be `minor`, so this flag will result in a `preminor` release. If not used just a prerelease bump will be applied to prereleased packages. diff --git a/commands/version/__tests__/version-conventional-commits.test.js b/commands/version/__tests__/version-conventional-commits.test.js index 71dbdb37d3f..f5784ad6b1b 100644 --- a/commands/version/__tests__/version-conventional-commits.test.js +++ b/commands/version/__tests__/version-conventional-commits.test.js @@ -91,14 +91,14 @@ describe("--conventional-commits", () => { }); }); - it("should call recommended version with conventionalBumpprerelease set", async () => { + it("should call recommended version with conventionalBumpPrerelease set", async () => { prereleaseVersionBumps.forEach((bump) => recommendVersion.mockResolvedValueOnce(bump)); const cwd = await initFixture("prerelease-independent"); await lernaVersion(cwd)( "--conventional-commits", "--conventional-prerelease", - "--conventional-bumpprerelease" + "--conventional-bump-prerelease" ); prereleaseVersionBumps.forEach((version, name) => { @@ -108,7 +108,7 @@ describe("--conventional-commits", () => { rootPath: cwd, tagPrefix: "v", prereleaseId, - conventionalBumpprerelease: true, + conventionalBumpPrerelease: true, }); expect(updateChangelog).toHaveBeenCalledWith( expect.objectContaining({ name, version }), diff --git a/commands/version/command.js b/commands/version/command.js index ca757c9876d..80b9c6e7278 100644 --- a/commands/version/command.js +++ b/commands/version/command.js @@ -32,8 +32,8 @@ exports.builder = (yargs, composed) => { describe: "Version changed packages as prereleases when using --conventional-commits.", // type must remain ambiguous because it is overloaded (boolean _or_ string _or_ array) }, - "conventional-bumpprerelease": { - describe: "Bumps a prerelease versions if convetional commits require it.", + "conventional-bump-prerelease": { + describe: "Bumps prerelease versions if conventional commits requires it.", type: "boolean", }, "changelog-preset": { diff --git a/commands/version/index.js b/commands/version/index.js index ebe9c3f363c..a6bfa7d5d68 100644 --- a/commands/version/index.js +++ b/commands/version/index.js @@ -367,7 +367,7 @@ class VersionCommand extends Command { recommendVersions(resolvePrereleaseId) { const independentVersions = this.project.isIndependent(); - const { changelogPreset, conventionalGraduate, conventionalBumpprerelease } = this.options; + const { changelogPreset, conventionalGraduate, conventionalBumpPrerelease } = this.options; const rootPath = this.project.manifest.location; const type = independentVersions ? "independent" : "fixed"; const prereleasePackageNames = this.getPrereleasePackageNames(); @@ -394,7 +394,7 @@ class VersionCommand extends Command { rootPath, tagPrefix: this.tagPrefix, prereleaseId: getPrereleaseId(node), - conventionalBumpprerelease, + conventionalBumpPrerelease, }) ) ); diff --git a/core/conventional-commits/__tests__/conventional-commits.test.js b/core/conventional-commits/__tests__/conventional-commits.test.js index 71043cca284..1cd8d88c396 100644 --- a/core/conventional-commits/__tests__/conventional-commits.test.js +++ b/core/conventional-commits/__tests__/conventional-commits.test.js @@ -118,17 +118,17 @@ describe("conventional-commits", () => { recommendVersion( pkg1, "independent", - Object.assign(opts, { prereleaseId: "alpha", conventionalBumpprerelease: true }) + Object.assign(opts, { prereleaseId: "alpha", conventionalBumpPrerelease: true }) ), recommendVersion( pkg2, "independent", - Object.assign(opts, { prereleaseId: "beta", conventionalBumpprerelease: true }) + Object.assign(opts, { prereleaseId: "beta", conventionalBumpPrerelease: true }) ), recommendVersion( pkg3, "independent", - Object.assign(opts, { prereleaseId: "beta", conventionalBumpprerelease: true }) + Object.assign(opts, { prereleaseId: "beta", conventionalBumpPrerelease: true }) ), ]); diff --git a/core/conventional-commits/lib/recommend-version.js b/core/conventional-commits/lib/recommend-version.js index 9fb7bed0005..81bd79df660 100644 --- a/core/conventional-commits/lib/recommend-version.js +++ b/core/conventional-commits/lib/recommend-version.js @@ -15,7 +15,7 @@ module.exports.recommendVersion = recommendVersion; function recommendVersion( pkg, type, - { changelogPreset, rootPath, tagPrefix, prereleaseId, conventionalBumpprerelease } + { changelogPreset, rootPath, tagPrefix, prereleaseId, conventionalBumpPrerelease } ) { log.silly(type, "for %s at %s", pkg.name, pkg.location); @@ -30,8 +30,8 @@ function recommendVersion( options.tagPrefix = tagPrefix; } - const shouldBumpPrerelease = (releaseType, version, bumpPrerelease) => { - if (!semver.prerelease(version) || bumpPrerelease) { + const shouldBumpPrerelease = (releaseType, version) => { + if (!semver.prerelease(version)) { return true; } switch (releaseType) { @@ -63,7 +63,7 @@ function recommendVersion( let releaseType = data.releaseType || "patch"; if (prereleaseId) { - const shouldBump = shouldBumpPrerelease(releaseType, pkg.version, conventionalBumpprerelease); + const shouldBump = conventionalBumpPrerelease || shouldBumpPrerelease(releaseType, pkg.version); const prereleaseType = shouldBump ? `pre${releaseType}` : "prerelease"; log.verbose(type, "increment %s by %s", pkg.version, prereleaseType); resolve(semver.inc(pkg.version, prereleaseType, prereleaseId)); diff --git a/core/lerna/schemas/lerna-schema.json b/core/lerna/schemas/lerna-schema.json index 797011ee627..747d9e98bda 100644 --- a/core/lerna/schemas/lerna-schema.json +++ b/core/lerna/schemas/lerna-schema.json @@ -985,6 +985,9 @@ "conventionalPrerelease": { "$ref": "#/$defs/commandOptions/version/conventionalPrerelease" }, + "conventionalBumpPrerelease": { + "$ref": "#/$defs/commandOptions/version/conventionalBumpPrerelease" + }, "changelogPreset": { "$ref": "#/$defs/commandOptions/version/changelogPreset" }, @@ -1673,6 +1676,10 @@ ], "description": "During `lerna version`, version changed packages as prereleases when using --conventional-commits." }, + "conventionalBumpPrerelease": { + "type": "boolean", + "description": "During `lerna version`, bumps version of changed prereleased packages when using --conventional-commits." + }, "changelogPreset": { "type": "string", "description": "For `lerna version`, the custom conventional-changelog preset."