#!/usr/bin/env node import fs from 'node:fs'; import path from 'node:path'; import semver from 'semver'; function bump(fileName, version) { const filePath = path.resolve(process.cwd(), fileName); if (!fs.existsSync(filePath)) { throw new Error(`File not found: ${filePath}`); } const json = JSON.parse(fs.readFileSync(filePath, 'utf8')); const currentVersion = json.version; if (typeof currentVersion !== 'string') { throw new Error(`${fileName} does not contain a string "version" field.`); } const nextVersion = version ?? semver.inc(currentVersion, 'patch'); if (!nextVersion) { throw new Error(`Unsupported semver format: "${currentVersion}"`); } json.version = nextVersion; fs.writeFileSync(filePath, `${JSON.stringify(json, null, 4)}\n`, 'utf8'); console.log(`Bumped version in ${fileName} to ${nextVersion}`); return nextVersion; } const bumpedVersion = bump('package.json'); bump('package-lock.json', bumpedVersion);