const semver = require("semver"); const previousVersion = (currentVersion, releaseType) => { const parsedVersion = semver.parse(currentVersion); switch (releaseType) { case "major": { return `v${parsedVersion.major - 1}.0.0`; } case "minor": { return `v${parsedVersion.major}.${parsedVersion.minor - 1}.0`; } case "patch": { return `v${parsedVersion.major}.${parsedVersion.minor}.${ parsedVersion.patch - 1 }`; } case "alpha": { return `v${parsedVersion.major}.${parsedVersion.minor}.${ parsedVersion.patch }-alpha.${parsedVersion.prerelease[1] - 1}`; } case "beta": { return `v${parsedVersion.major}.${parsedVersion.minor}.${ parsedVersion.patch }-beta.${parsedVersion.prerelease[1] - 1}`; } case "rc": { return `v${parsedVersion.major}.${parsedVersion.minor}.${ parsedVersion.patch }-rc.${parsedVersion.prerelease[1] - 1}`; } } }; const [currentVersion, releaseType] = process.argv.slice(-2); console.log(previousVersion(currentVersion, releaseType));