Versioning strategy
CAF uses per-package versioning: each package (@c-a-f/core, @c-a-f/infrastructure-react, etc.) has its own version and can evolve independently.
Rationale
- Independent evolution — Breaking changes in one package don’t force bumps in others.
- Consumer flexibility — Consumers can update packages independently.
- Library best practice — Common for library monorepos (e.g. Babel, Jest).
Guidelines
-
Semantic Versioning — Follow SemVer:
- MAJOR — Breaking changes
- MINOR — New features (backward compatible)
- PATCH — Bug fixes (backward compatible)
-
Dependency versions — Packages specify compatible versions of sibling packages (e.g.
"@c-a-f/core": "^1.0.0"or exact as needed). -
Root version — The root
package.jsonversion is a monorepo reference; it does not control published package versions.
Example
@c-a-f/coreadds a new feature → core1.0.0→1.1.0; infrastructure can stay at1.0.0.@c-a-f/infrastructure-reactfixes a bug → infrastructure-react1.0.0→1.0.1; core unchanged.
For the full strategy, see VERSIONING.md in the repository.