Stacks Dependencies
Key Paths
- Root:
package.json - Deps config:
config/deps.ts - Bun lock:
bun.lock - Bun config:
bunfig.toml
Pantry Configuration (config/deps.ts)
import type { PantryConfig } from 'ts-pantry'
interface PantryConfig {
dependencies: Record<string, string> // System-level dependencies
global: boolean
services: {
enabled: boolean
autoStart: boolean
database: DatabaseConfig
postDatabaseSetup: string[]
frameworks: FrameworkConfig
}
preSetup: LifecycleHook
postSetup: LifecycleHook
preActivation: LifecycleHook
postActivation: LifecycleHook
cache: CacheConfig
network: NetworkConfig
security: SecurityConfig
logging: LoggingConfig
updates: UpdateConfig
resources: ResourceConfig
profiles: ProfileConfig
verbose: boolean
installPath: string
autoInstall: boolean
installDependencies: boolean
installBuildDeps: boolean
}
System Dependencies
dependencies: {
bun: '1.3.0',
sqlite: '3.47.2',
redis: '7.0.0',
// ... other system-level requirements
}
Workspace Dependencies
Core packages use workspace:* references:
{
"@stacksjs/auth": "workspace:*",
"@stacksjs/database": "workspace:*",
"@stacksjs/router": "workspace:*"
}
Key Framework Dependencies
| Package | Purpose |
|---|---|
better-dx |
Shared dev tooling (provides typescript, pickier, bun-plugin-dtsx) |
bun-query-builder |
Database query building |
@stacksjs/ts-auth |
Authentication library |
@stacksjs/ts-cloud |
Cloud infrastructure (AWS CDK) |
ts-rate-limiter |
Rate limiting |
ts-collect |
Collection utilities |
ts-mocker |
Fake data generation |
ts-slug |
URL slug generation |
CLI Commands
buddy add <package> # Add a dependency
buddy install # Install dependencies
buddy outdated # Check for outdated packages
buddy fresh # Clean + reinstall
bun run upgrade # Upgrade dependencies
bun run build:reset # Full reset: rm deps → reinstall → generate → lint → build
Dependency Update System
- buddy-bot handles dependency updates — NOT renovatebot
- Automated PR creation for dependency updates
- Configured via
config/buddy-bot.ts
Gotchas
- buddy-bot, not renovatebot — Stacks uses its own dependency update bot
- better-dx provides peer deps — do NOT separately install
typescript,pickier, orbun-plugin-dtsxifbetter-dxis present bunfig.tomlrequireslinker = "hoisted"when usingbetter-dx- Pantry manages system deps — OS-level dependencies like SQLite, Redis, Bun itself
- Workspace references — all
@stacksjs/*packages useworkspace:*in the monorepo bun.locknotbun.lockb— Stacks uses the text-based lockfile format- Build reset is destructive —
bun run build:resetremoves all deps and reinstalls from scratch