bun-package-manager
Use when managing dependencies with Bun's package manager. Covers installing packages, workspaces, lockfiles, and migrating from npm/yarn/pnpm to Bun.
What this skill does
# Bun Package Manager Use this skill when managing dependencies with Bun's package manager, which is significantly faster than npm, yarn, and pnpm while maintaining compatibility. ## Key Concepts ### Installing Dependencies Bun's package manager is drop-in compatible with npm: ```bash # Install all dependencies bun install # Add a dependency bun add express bun add -d typescript # Dev dependency bun add -g cowsay # Global install # Add specific version bun add [email protected] # Install from different sources bun add [email protected]:user/repo.git bun add ./local-package ``` ### Removing Dependencies ```bash # Remove a dependency bun remove express # Remove dev dependency bun remove -d typescript ``` ### Updating Dependencies ```bash # Update all dependencies bun update # Update specific package bun update react # Update to latest (ignoring semver) bun update react --latest ``` ### Running Scripts Execute package.json scripts: ```bash # Run a script bun run dev bun run build bun run test # Short form (if no file conflict) bun dev bun build bun test ``` ## Best Practices ### Use bun.lockb Bun's binary lockfile is faster and more reliable: ```bash # Generate lockfile bun install # Commit bun.lockb to version control git add bun.lockb ``` ### Workspaces Manage monorepos with workspaces: ```json // package.json { "name": "my-monorepo", "workspaces": ["packages/*", "apps/*"] } ``` ```bash # Install all workspace dependencies bun install # Run script in specific workspace bun --filter my-package run build # Run script in all workspaces bun --filter '*' run test ``` ### Package.json Configuration Configure Bun-specific options: ```json { "name": "my-app", "version": "1.0.0", "type": "module", "scripts": { "dev": "bun run --hot src/index.ts", "build": "bun build src/index.ts --outdir dist", "start": "bun run dist/index.js", "test": "bun test" }, "dependencies": { "express": "^4.18.0" }, "devDependencies": { "@types/express": "^4.17.0", "bun-types": "latest" }, "peerDependencies": { "typescript": "^5.0.0" } } ``` ### TypeScript Configuration Set up proper TypeScript support: ```json // tsconfig.json { "compilerOptions": { "lib": ["ESNext"], "target": "ESNext", "module": "ESNext", "moduleDetection": "force", "jsx": "react-jsx", "allowJs": true, "moduleResolution": "bundler", "allowImportingTsExtensions": true, "verbatimModuleSyntax": true, "noEmit": true, "strict": true, "skipLibCheck": true, "noFallthroughCasesInSwitch": true, "noUnusedLocals": false, "noUnusedParameters": false, "noPropertyAccessFromIndexSignature": false, "types": ["bun-types"] } } ``` ### Using Trusted Dependencies Configure trusted dependencies for faster installs: ```bash # Add trusted dependency bun pm trust @prisma/client # Install without lifecycle scripts (faster) bun install --production --frozen-lockfile ``` ## Common Patterns ### Migration from npm/yarn/pnpm ```bash # Remove old lockfiles rm package-lock.json yarn.lock pnpm-lock.yaml # Install with Bun bun install # Update scripts (optional) # Change "npm run" to "bun run" # Change "npx" to "bunx" ``` ### Private Package Registry Configure private registry: ```bash # Set registry bun config set registry https://registry.example.com # Set scoped registry bun config set @myorg:registry https://registry.example.com # Set auth token bun config set //registry.example.com/:_authToken YOUR_TOKEN ``` ### CI/CD Installation Optimize for CI environments: ```bash # Fast, frozen lockfile install bun install --frozen-lockfile --production # No save (don't update lockfile) bun install --no-save ``` ### Development Workflow ```bash # Install dependencies bun install # Run dev server with hot reload bun --hot run src/index.ts # Run tests in watch mode bun test --watch # Build for production bun run build ``` ### Monorepo Scripts ```json // Root package.json { "scripts": { "dev": "bun --filter '*' run dev", "build": "bun --filter '*' run build", "test": "bun --filter '*' run test", "lint": "bun --filter '*' run lint" } } // Package in workspace { "name": "@myorg/shared", "scripts": { "dev": "bun run --hot src/index.ts", "build": "bun build src/index.ts --outdir dist", "test": "bun test" } } ``` ### Link Local Packages ```bash # In the package you want to link bun link # In the project using the package bun link @myorg/my-package # Unlink bun unlink @myorg/my-package ``` ## Anti-Patterns ### Don't Mix Package Managers ```bash # Bad - Mixing package managers npm install react bun add express yarn add vue # Good - Use one package manager bun add react express vue ``` ### Don't Commit node_modules ```bash # Bad - Committing dependencies git add node_modules # Good - Use lockfile git add bun.lockb echo "node_modules" >> .gitignore ``` ### Don't Install Packages Globally Unnecessarily ```bash # Bad - Global install for project dependency bun add -g typescript # Good - Install as dev dependency bun add -d typescript # Use bunx for one-off commands bunx tsc --version ``` ### Don't Skip Lockfile in CI ```bash # Bad - Updating dependencies in CI bun install # Good - Use frozen lockfile bun install --frozen-lockfile ``` ### Don't Ignore Peer Dependencies ```bash # Bad - Ignoring peer dependency warnings bun add react-dom # Warning: react is a peer dependency of react-dom # Good - Install peer dependencies bun add react react-dom ``` ## Performance Tips ### Faster Installs ```bash # Use binary lockfile bun install # Automatically uses bun.lockb # Skip optional dependencies bun install --no-optional # Production install (skip devDependencies) bun install --production # Frozen lockfile (don't update) bun install --frozen-lockfile ``` ### Cache Management ```bash # Clear Bun cache bun pm cache rm # Check cache size bun pm cache ``` ### Parallel Installation Bun installs packages in parallel automatically, making it significantly faster than npm/yarn/pnpm. ## Troubleshooting ### Check Package Info ```bash # View package details bun pm ls express # View all dependencies bun pm ls # Check for updates bun outdated ``` ### Fixing Lockfile Issues ```bash # Regenerate lockfile rm bun.lockb bun install # Verify lockfile bun install --frozen-lockfile ``` ## Related Skills - **bun-runtime**: Understanding Bun's runtime for dependency usage - **bun-testing**: Testing with Bun and managing test dependencies - **bun-bundler**: Building projects with installed dependencies
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.