- This repo uses Bun as the package manager (
bun install,bun run, etc.) - Workspace deps use
workspace:*protocol - Use catalog for any potentially common dependencies
- CI workflows use
bun runto execute scripts andbunxfor one-off commands
- Write any scripts which may end up being saved in TypeScript (
.ts), not JavaScript- throwaway/one-off code is fine in JS
- Execute scripts using
bun run, notnode- e.g.
bun run scripts/release-preview.ts - Bun runs
.tsfiles natively — no compile step needed
- e.g.
- Scripts in
scripts/at the repo root are monorepo-level utilities, while specific packages may have their ownscriptsfolder
- The varlock CLI binary is built using
bun build --compile(not Node SEA or pkg) bun run --filter varlock build:binarybuilds a local dev binary for the current platform atpackages/varlock/dist-sea/varlockpackages/varlock/scripts/build-binaries.tsbuilds cross-platform release binaries (or use--current-platformfor a single local binary)
- Unit/integration tests use Vitest
- Smoke tests live in
smoke-tests/and test the CLI end-to-end - Binary-specific tests in
smoke-tests/tests/binary.test.tsrequire the SEA binary to be built first
- Run
bun run lint:fixfrom the repo root after completing a significant chunk of work (new feature, refactor, bug fix, etc.) - The linter uses ESLint with
@stylisticand other plugins — auto-fix handles most formatting issues - Do not leave lint errors unresolved; fix any that
--fixcannot handle automatically