Skip to content

Support linked packages (version line synced only on change) #585

Description

@timotheeguerin

Summary

Add support for linked packages: groups of packages that are versioned independently but whose version numbers are kept in sync when they change together, mirroring Changesets' linked config. This is distinct from the existing lockstep policy.

Motivation

Chronus currently supports:

  • independent — every package versions on its own.
  • lockstep — a group always shares one version and always bumps together.

Changesets additionally offers linked, a middle ground: packages in a linked group only get pulled up to the highest version in the group when at least one of them is being released, but unchanged members are not bumped. This is useful for families of packages that should share a version line without forcing an unrelated bump on every release.

Proposed behavior

  • New version policy type: "linked" alongside lockstep / independent in versionPolicies.
  • When releasing, all changed members of a linked group are raised to the same (highest resulting) version; unchanged members stay put.
  • status, version, and changelog output reflect the linked grouping.

References

  • Changesets linked vs fixed config
  • packages/chronus/src/config/types.ts (VersionPolicy, LockstepVersionPolicy, IndependentVersionPolicy)
  • packages/chronus/src/release-plan/assemble-release-plan.ts

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions