Projects all version their packages in subtly different ways, which can be surprising. Here’s how we do it (and why).
Rules
- We follow Semver 2.0.
- This means package consumers will be able to infer information about the severity of an upgrade from the version numbers once we’re on major version 1.
- However we’re currently on major version 0, so as per Semver 2.0, every bump can include breaking changes. We’re working to stabilise around a v1 as soon as possible.
- When any change to any package is released, we bump the version numbers of all packages and release everything.
- This means even though a package has had its version number change, its contents may not have changed.
Why?
It’s easiest for package consumers if you just pull a specific version of everything into your project. You then don’t have to figure out what’s compatible with what, as long as all Graphweaver packages are the same version, you’re good.
Otherwise, if we don’t release packages that haven’t changed or we independently version every package, you have to spelunk around and figure out, “is version 0.1.19 of graphql-scalars compatible with version 5.1.3 of graphweaver?” which is not helpful.
This is ultimately a tradeoff of release noise vs ease of upgrades for package consumers, and we choose nosier but easier to manage / consume.