release-it
Advanced tools
Comparing version 17.4.2 to 17.5.0
@@ -53,3 +53,3 @@ import util from 'node:util'; | ||
expandPreReleaseShorthand(options) { | ||
const { increment, preRelease, preReleaseId, snapshot } = options; | ||
const { increment, preRelease, preReleaseId, snapshot, preReleaseBase } = options; | ||
const isPreRelease = Boolean(preRelease) || Boolean(snapshot); | ||
@@ -61,3 +61,4 @@ const inc = snapshot ? 'prerelease' : increment; | ||
isPreRelease, | ||
preReleaseId: preId | ||
preReleaseId: preId, | ||
preReleaseBase | ||
}; | ||
@@ -64,0 +65,0 @@ if (typeof snapshot === 'string' && options.git) { |
@@ -59,3 +59,3 @@ import _ from 'lodash'; | ||
const { increment, isPreRelease, preReleaseId } = options.version; | ||
const { increment, isPreRelease, preReleaseId, preReleaseBase } = options.version; | ||
@@ -71,3 +71,3 @@ const name = await reduceUntil(plugins, plugin => plugin.getName()); | ||
const incrementBase = { latestVersion, increment, isPreRelease, preReleaseId }; | ||
const incrementBase = { latestVersion, increment, isPreRelease, preReleaseId, preReleaseBase }; | ||
@@ -74,0 +74,0 @@ const { snapshot } = config.options; |
@@ -19,6 +19,6 @@ import semver from 'semver'; | ||
const getIncrementChoices = context => { | ||
const { latestIsPreRelease, isPreRelease, preReleaseId } = context.version; | ||
const { latestIsPreRelease, isPreRelease, preReleaseId, preReleaseBase } = context.version; | ||
const types = latestIsPreRelease ? CHOICES.latestIsPreRelease : isPreRelease ? CHOICES.preRelease : CHOICES.default; | ||
const choices = types.map(increment => ({ | ||
name: `${increment} (${semver.inc(context.latestVersion, increment, preReleaseId)})`, | ||
name: `${increment} (${semver.inc(context.latestVersion, increment, preReleaseId, preReleaseBase)})`, | ||
value: increment | ||
@@ -91,3 +91,3 @@ })); | ||
incrementVersion({ latestVersion, increment, isPreRelease, preReleaseId }) { | ||
incrementVersion({ latestVersion, increment, isPreRelease, preReleaseId, preReleaseBase }) { | ||
if (increment === false) return latestVersion; | ||
@@ -107,3 +107,3 @@ | ||
if (isPreRelease && !increment && latestIsPreRelease) { | ||
return semver.inc(latestVersion, 'prerelease', preReleaseId); | ||
return semver.inc(latestVersion, 'prerelease', preReleaseId, preReleaseBase); | ||
} | ||
@@ -113,3 +113,3 @@ | ||
if (isPreRelease) { | ||
return semver.inc(latestVersion, 'prepatch', preReleaseId); | ||
return semver.inc(latestVersion, 'prepatch', preReleaseId, preReleaseBase); | ||
} else { | ||
@@ -122,3 +122,3 @@ return semver.inc(latestVersion, 'patch'); | ||
if (ALL_RELEASE_TYPES.includes(normalizedType)) { | ||
return semver.inc(latestVersion, normalizedType, preReleaseId); | ||
return semver.inc(latestVersion, normalizedType, preReleaseId, preReleaseBase); | ||
} | ||
@@ -125,0 +125,0 @@ |
{ | ||
"name": "release-it", | ||
"version": "17.4.2", | ||
"version": "17.5.0", | ||
"description": "Generic CLI tool to automate versioning and package publishing-related tasks.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -104,2 +104,3 @@ import test from 'ava'; | ||
isPreRelease: true, | ||
preReleaseBase: undefined, | ||
preReleaseId: 'beta' | ||
@@ -114,2 +115,3 @@ }); | ||
isPreRelease: true, | ||
preReleaseBase: undefined, | ||
preReleaseId: undefined | ||
@@ -124,2 +126,3 @@ }); | ||
isPreRelease: true, | ||
preReleaseBase: undefined, | ||
preReleaseId: 'alpha' | ||
@@ -134,2 +137,3 @@ }); | ||
isPreRelease: true, | ||
preReleaseBase: undefined, | ||
preReleaseId: 'rc' | ||
@@ -139,2 +143,12 @@ }); | ||
test('should use pre-release base', t => { | ||
const config = new Config({ increment: 'minor', preRelease: 'next', preReleaseBase: '1' }); | ||
t.deepEqual(config.options.version, { | ||
increment: 'minor', | ||
isPreRelease: true, | ||
preReleaseBase: '1', | ||
preReleaseId: 'next' | ||
}); | ||
}); | ||
test('should expand pre-release shortcut (snapshot)', t => { | ||
@@ -145,2 +159,3 @@ const config = new Config({ snapshot: 'feat' }); | ||
isPreRelease: true, | ||
preReleaseBase: undefined, | ||
preReleaseId: 'feat' | ||
@@ -147,0 +162,0 @@ }); |
@@ -141,2 +141,30 @@ import test from 'ava'; | ||
test('should increment version and start at base 1', t => { | ||
const v = factory(Version); | ||
t.is( | ||
v.incrementVersion({ | ||
latestVersion: '1.3.0', | ||
increment: 'major', | ||
isPreRelease: true, | ||
preReleaseId: 'beta', | ||
preReleaseBase: '1' | ||
}), | ||
'2.0.0-beta.1' | ||
); | ||
}); | ||
test('should increment prerelease version and ignore prelease base 1', t => { | ||
const v = factory(Version); | ||
t.is( | ||
v.incrementVersion({ | ||
latestVersion: '1.2.3-alpha.5', | ||
increment: 'prerelease', | ||
preReleaseId: 'alpha', | ||
isPreRelease: true, | ||
preReleaseBase: '1' | ||
}), | ||
'1.2.3-alpha.6' | ||
); | ||
}); | ||
test('should run tasks without errors', async t => { | ||
@@ -143,0 +171,0 @@ const options = { version: { increment: 'minor' } }; |
255272
6305