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:
parent
912715407c
commit
fb7329f3fe
@ -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');
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user