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で見る