fix: Add a single version number with commit process (#5746)

* Add a single version number with commit process

* PR review comments
This commit is contained in:
Bill Wallace 2026-02-10 11:56:52 -05:00 committed by GitHub
parent 912715407c
commit fb7329f3fe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -9,7 +9,7 @@ async function run() {
const lernaJson = JSON.parse(await fs.readFile('lerna.json', 'utf-8'));
// read the current version from ./version.txt
const nextVersion = await fs.readFile('./version.txt', 'utf-8');
const nextVersion = (await fs.readFile('./version.txt', 'utf-8')).trim();
const packages = lernaJson.packages;
if (!packages) {
@ -60,14 +60,14 @@ async function run() {
// Maybe we need to hook the netlify deploy preview
// await execa('yarn', ['run', 'build']);
console.log('Committing and pushing changes...');
await execa('git', ['add', '-A']);
await execa('git', ['commit', '-m', 'chore(version): version.json [skip ci]']);
await execa('git', ['push', 'origin', branchName]);
console.log('Setting the version using lerna...');
// add a message to the commit to indicate that the version was set using lerna
// Stage all changes (version.json, peer dependency updates, .npmrc deletion)
// before lerna runs so they're included in lerna's commit
await execa('git', ['add', '-A']);
// Run lerna version without pushing
// lerna will update package.json files and create a commit
await execa('npx', [
'lerna',
'version',
@ -76,12 +76,36 @@ async function run() {
'--exact',
'--force-publish',
'--message',
'chore(version): Update package versions [skip ci]',
`chore(version): Update package versions to ${nextVersion} [skip ci]`,
'--conventional-commits',
'--create-release',
'github',
'--no-push',
]);
// Stage any files that need to be included in the amended commit. Lerna commits the package.json
// files it modifies, but may not include other files that were staged before it ran (like
// version.json or .npmrc deletion). Since we're amending the commit to combine all version-related
// changes into a single commit, we need to ensure these files are included.
//
// Note: Peer dependency updates are already in the package.json files that lerna modified,
// so they will be included in lerna's commit automatically.
await execa('git', ['add', '-A']);
// Amend the last commit to include all changes. The commit message is already set by lerna
// (line 79) and is the same, so we use --no-edit to keep the existing message.
// This combines the version.json commit and package version updates into one commit
await execa('git', ['commit', '--amend', '--no-edit']);
console.log('Pushing changes...');
// Note: Force push is not necessary here because:
// 1. Lerna is called with --no-push, so the commit created by lerna is never pushed to remote
// 2. We amend the commit locally before pushing, so it's a new commit from the remote's perspective
// 3. This script runs on a single branch locally, so there's no history rewrite on the remote
// A regular push is sufficient since we're pushing a commit that doesn't exist on the remote yet
await execa('git', ['push', 'origin', branchName]);
console.log('Version set using lerna');
}