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.
pnpm install # links the workspace (configx uses the local configorama)
pnpm test # run every package's tests (pnpm -r test)
pnpm -r --if-present typecheckPer package:
cd packages/configorama && npm test
cd packages/configx && npm testBecause it's a workspace, configx depends on configorama via workspace:^, so changes to the core are picked up locally without publishing.
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 orderOne package changed — publish just that package (avoids re-versioning the other):
cd packages/configx && pnpm version patch && pnpm publish && git push --follow-tagsTwo 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).