Monorepo Development
lazyenv uses a monorepo structure with pnpm workspaces and Turborepo.
Package Structure
Section titled “Package Structure”Published Packages
Section titled “Published Packages”- packages/cli - Published as
lazyenv- CLI tool and library exports
- Main entry point for users
Internal Packages (Private)
Section titled “Internal Packages (Private)”- packages/core - Core library functionality
- packages/infisical - Infisical API provider
- packages/doppler - Doppler integration
- apps/docs - Documentation site (Astro + Starlight)
Workspace Commands
Section titled “Workspace Commands”# Install dependencies for all packagespnpm install
# Build all packagespnpm run build
# Build specific packagepnpm --filter lazyenv build
# Run tests for all packagespnpm run test
# Run tests for specific packagepnpm --filter lazyenv testDevelopment Workflow
Section titled “Development Workflow”- Make changes in relevant packages
- Build packages:
pnpm run build - Run tests:
pnpm test - Create changeset:
pnpm changeset - Commit and create PR
Package Dependencies
Section titled “Package Dependencies”lazyenv (CLI)├── packages/core├── packages/infisical├── packages/doppler├── packages/bitwarden├── packages/onepassword└── packages/provisionersTurborepo
Section titled “Turborepo”lazyenv uses Turborepo for build orchestration:
- Caches build outputs
- Parallelizes tasks
- Optimizes monorepo workflows
Adding New Packages
Section titled “Adding New Packages”- Create package in
packages/ - Add to
pnpm-workspace.yaml - Update dependencies in dependent packages
- Add build scripts to
turbo.json