Files
geekgeekrun/packages/ui/scripts/steps/increase-package-version.mjs
2024-11-23 13:30:17 +08:00

33 lines
1.3 KiB
JavaScript

import path from 'path'
import fs from 'fs'
import { execSync } from 'child_process'
import * as url from 'url'
import semver from 'semver'
const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
export const PATH_TO_PACKAGE_JSON = path.join(__dirname, '../../package.json')
export const PATH_TO_BUILD_INFO_JSON = path.join(__dirname, '../../src/common/build-info.json')
export const getPackageInfo = () => fs.readFileSync(PATH_TO_PACKAGE_JSON)
export const getRuntimeConfig = () => fs.readFileSync(PATH_TO_BUILD_INFO_JSON)
/**
* @param {semver.ReleaseType} releaseType
*/
export default async function increasePackageVersion(releaseType = 'prerelease') {
const runtimeConfig = JSON.parse(getRuntimeConfig().toString('utf-8'))
const packageInfo = JSON.parse(getPackageInfo().toString('utf-8'))
packageInfo.version = semver.inc(packageInfo.version, releaseType)
fs.writeFileSync(PATH_TO_PACKAGE_JSON, JSON.stringify(packageInfo, null, 2))
runtimeConfig.name = packageInfo.name
runtimeConfig.version = packageInfo.version
runtimeConfig.buildVersion =
typeof runtimeConfig.buildVersion === 'number' ? runtimeConfig.buildVersion + 1 : 1
runtimeConfig.buildTime = Number(new Date())
runtimeConfig.buildHash = execSync('git rev-parse HEAD').toString().trim()
fs.writeFileSync(PATH_TO_BUILD_INFO_JSON, JSON.stringify(runtimeConfig, null, 2))
}