Skip to main content

stacks-dependencies

Use when managing dependencies in a Stacks project - system dependencies via Pantry, Bun workspaces, buddy-bot updates, better-dx tooling, or dependency configuration. Covers config/deps.ts, Pantry, and workspace management.

소스 정보

저장소
stacksjs/stacks
최근 소스 활동
2026년 10월 2일 21:34
감지된 SKILL.md 언어
영어
스타
631
포크
20

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
stacks-dependencies
description
Use when managing dependencies in a Stacks project - system dependencies via Pantry, Bun workspaces, buddy-bot updates, better-dx tooling, or dependency configuration. Covers config/deps.ts, Pantry, and workspace management.
license
MIT
compatibility
Bun >= 1.3.0, TypeScript
allowed-tools
Read Edit Write Bash Grep Glob
# 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) ```typescript 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 ```typescript dependencies: { bun: '1.3.0', sqlite: '3.47.2', redis: '7.0.0', // ... other system-level requirements } ``` ## Workspace Dependencies Core packages use `workspace:*` references: ```json { "@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 ```bash 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 ``` ## Lockfiles A Stacks project commits two lockfiles, and they describe one tree: - `bun.lock` resolves `node_modules/`, which the app root reads. - `pantry.lock` records the system toolchain (Bun itself, SQLite, curl, git) **and** every npm package, which `pantry/` holds and the framework source resolves from. Since pantry 0.11.65 an npm range resolves to `bun.lock`'s pin whenever that pin satisfies it, so the two agree on every package they both name. Since 0.11.60 the file is platform-independent: `pantry install` on macOS writes what CI writes on Linux, foreign-platform records included. **Regenerating.** Change the ranges, run `bun install`, then `pantry install`, on any platform, and commit `bun.lock` and `pantry.lock` with the manifests. Check `head -2 bun.lock` says `lockfileVersion: 2`; an older Bun on PATH downgrades it. **Who else writes them.** - `buddy release` regenerates both and refuses to commit a `pantry.lock` that violates a range it records or drops the root `system` block. - The dependency bot (`@buddysh/buddy` 0.11.5+, via `better-dx`) runs `pantry install` after the JS manager on its Linux runner, so dependency pull requests arrive with both lockfiles current. **The guards.** CI's `compile` job installs and fails if either lockfile changed, and `lockfile-matches-manifests.test.ts` compares the ranges both lockfiles record against the manifests. Either failure means a lockfile was not regenerated with its manifest, not that the guard is wrong. ## Dependency Update System - **buddy-bot** (`@buddysh/buddy`, shipped by `better-dx`) handles dependency updates, NOT renovatebot - Automated PR creation for dependency updates, run as `bunx @buddysh/buddy` in `.github/workflows/buddy-bot.yml` - Configured via `config/buddy-bot.ts` (read as the pre-rename fallback for `config/buddy.ts`, which in a Stacks app would read as the Stacks CLI's config) ## Gotchas - **buddy-bot, not renovatebot** — Stacks uses its own dependency update bot - **better-dx provides peer deps** — do NOT separately install `typescript`, `pickier`, or `bun-plugin-dtsx` if `better-dx` is present - **`bunfig.toml` requires `linker = "hoisted"`** when using `better-dx` - **Pantry manages system deps** — OS-level dependencies like SQLite, Redis, Bun itself - **Workspace references** — all `@stacksjs/*` packages use `workspace:*` in the monorepo - **`bun.lock` not `bun.lockb`** — Stacks uses the text-based lockfile format - **Build reset is destructive** — `bun run build:reset` removes all deps and reinstalls from scratch
GitHub에서 보기