Update the workspace root version in a monorepo
npm install update-workspace-root-version
1. Why use it?
1. Usage
- Arguments
- Limitations
1. Compatibility
1. Contributing
1. License
Git tags mark a specific point in a repo's history and are usually created at the time of release. Thanks to these tags, we can easily send people links and point to specific code. We can also compare tags to see how files have changed.
Creating tags can be tricky in monorepos, because we can release many packages at once. How do we create just 1 tag (no matter how many packages) and give it a name that resembles a semantic version?
Solution: We let the version of the workspace root indicate the state of the whole project, then set the tag name to be this version. update-workspace-root-version helps you update the version automatically.
At the workspace root, install update-workspace-root-version as a development dependency.
Then, run the codemod before you create a tag. For example, after changesets updates all package versions, we update the workspace root's version.
``json5`
/ package.json /
{
"scripts": {
"release:prepare": "changeset version; update-workspace-root-version"
},
"devDependencies": {
"@changesets/cli": "...",
"update-workspace-root-version": "..."
}
}
Learn more about the algorithms at https://crunchingnumbers.live/2024/09/15/moving-mountains/.
`shHighest version (default)
update-workspace-root-version --algorithm highest-version
The codemod assumes that every package follows semantic versioning. It is designed to cover typical cases.
- Node.js v20 or above
See the Contributing guide for details.
This project is licensed under the MIT License.