Files
vue-cli/scripts/markVersions.js

38 lines
1.1 KiB
JavaScript

const fs = require('fs')
const path = require('path')
const execa = require('execa')
const semver = require('semver')
// TODO:
// in v4 we don't need version marker's package.json to store all the versions
// so this logic can be removed
async function markVersions () {
const packages = JSON.parse(
(await execa(require.resolve('lerna/cli'), ['list', '--json'])).stdout
).filter(p => !p.private)
const markerPath = path.resolve(__dirname, '../packages/vue-cli-version-marker/package.json')
const marker = JSON.parse(fs.readFileSync(markerPath))
const curVersion = marker.version
const mainVersion = require('../lerna.json').version
if (semver.prerelease(mainVersion)) {
marker.version = mainVersion
} else {
const releaseType = semver.diff(curVersion, mainVersion) || 'patch'
marker.version = semver.inc(marker.version, releaseType)
}
marker.devDependencies = packages.reduce((prev, pkg) => {
prev[pkg.name] = pkg.version
return prev
}, {})
fs.writeFileSync(markerPath, JSON.stringify(marker, null, 2))
}
markVersions().catch(err => {
console.error(err)
process.exit(1)
})