configorama monorepo
July 5, 2026 · View on GitHub
This repo is a pnpm + lerna monorepo. The published packages live under packages/.
| Package | npm | What it is |
|---|---|---|
configorama | configorama | Variable support for configuration files (the core library + CLI + bundled plugins) |
@davidwells/configx | @davidwells/configx | Resolve a configorama config and run a command with it as environment |
The configorama README (usage, syntax, plugins, API) is in packages/configorama/README.md.
Develop
pnpm install # links the workspace (configx uses the local configorama)
pnpm test # run every package's tests (pnpm -r test)
pnpm -r --if-present typecheck
Per package:
cd packages/configorama && npm test
cd packages/configx && npm test
Because it's a workspace, configx depends on configorama via workspace:^, so changes to the core are picked up locally without publishing.
Release
Independent versioning per package (see lerna.json). Versions are chosen from conventional-commit messages (feat: → minor, fix: → patch).
Both packages changed — coordinated release:
pnpm run release # lerna publish: versions, tags, and publishes changed packages in order
One package changed — publish just that package (avoids re-versioning the other):
cd packages/configx && pnpm version patch && pnpm publish && git push --follow-tags
Two rules that keep releases correct:
- Publish through pnpm/lerna, never
npm publish. Only pnpm/lerna rewriteworkspace:^to a real version range in the tarball;npm publishwould ship a literalworkspace:^and break installs. - Don't mix the two flows without tagging. A manual
pnpm publishmust be followed by a matching git tag (<name>@<version>), or lerna's history drifts behind npm and the nextlerna publishgets confused.
See AGENTS.md for contributor rules (stdout hygiene, type checks, layout).