@fairgarden/distribution

Ship a set of versioned modules together.

End users do not care about semver. They want to know how old their copy is, and 2024.12.01 says that at a glance where 1.2.1 does not. Developers do care, because semver says how much work an upgrade will be. A distribution serves both by using each where it belongs: the distribution is versioned by date, the modules inside it by semver.

@fairgarden/core  2024.12.01
  @fairgarden/id          1.2.3
  @fairgarden/design      1.5.6
  @fairgarden/membership  1.0.0

Modules are git submodules, so the commit is the pin and the version is whatever the module's own package.json says. Nothing in the distribution repository restates it.

Start here

Install

pnpm add -D @fairgarden/distribution

Or scaffold without installing anything:

pnpx @fairgarden/distribution init distribution acme --name @acme/core

Mounting a distribution's apps into a single Next deployment is a separate concern, handled by @fairgarden/monolith.