Files

57 lines
1.5 KiB
JavaScript

#!/usr/bin/env node
/**
* Auto-increment version on each build
* Usage: node scripts/bump-version.js [major|minor|patch]
* Default: patch
*/
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const packagePath = path.resolve(__dirname, '../package.json');
// Read package.json
const pkg = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));
// Parse current version
const [major, minor, patch] = pkg.version.split('.').map(Number);
// Determine bump type from argument
const bumpType = process.argv[2] || 'patch';
let newVersion;
switch (bumpType) {
case 'major':
newVersion = `${major + 1}.0.0`;
break;
case 'minor':
newVersion = `${major}.${minor + 1}.0`;
break;
case 'patch':
default:
newVersion = `${major}.${minor}.${patch + 1}`;
break;
}
// Add build timestamp for cache busting
const buildTime = new Date().toISOString();
// Update package.json
pkg.version = newVersion;
fs.writeFileSync(packagePath, JSON.stringify(pkg, null, 2) + '\n');
// Write version info to a separate file for the app
const versionInfo = {
version: newVersion,
buildTime,
buildNumber: Date.now(),
};
const versionFilePath = path.resolve(__dirname, '../src/version.json');
fs.writeFileSync(versionFilePath, JSON.stringify(versionInfo, null, 2) + '\n');
console.log(`✓ Version bumped: ${major}.${minor}.${patch}${newVersion}`);
console.log(`✓ Build time: ${buildTime}`);