| created | "2025-12-16T00:00:00.000Z" |
| modified | "2026-05-09T00:00:00.000Z" |
| reviewed | "2026-04-25T00:00:00.000Z" |
| name | bun-lockfile-update |
| description | Bun lockfile update (bun.lock): bun update, regeneration, security audits. Use when updating dependencies, resolving lockfile conflicts, or regenerating bun.lock. |
| allowed-tools | Bash, Read, Grep, Glob |
Bun Lockfile Update
Comprehensive guidance for updating Bun lockfiles (bun.lock) with proper dependency management practices.
When to Use This Skill
| Use this skill when... | Use bun-outdated instead when... |
|---|
Running bun update to refresh dependencies | Auditing what is outdated without changing anything |
Resolving a bun.lock merge conflict by regenerating | Reviewing major version gaps before deciding to upgrade |
| Patching a security vulnerability in a specific package | Listing newer versions for a single package |
| Performing a major version upgrade workflow | Use bun-install when bootstrapping a fresh checkout |
Auto-Invocation Triggers
Use this skill automatically when:
- User requests lockfile update or dependency refresh
- User mentions outdated dependencies or security vulnerabilities
- User wants to update specific packages or all dependencies
- Lockfile conflicts occur during git operations
- User needs to audit or verify dependency integrity
Core Commands
Update All Dependencies
bun update
bun update --latest
Update Specific Dependencies
bun update <package-name>
bun update <package1> <package2>
bun update --latest <package-name>
Regenerate Lockfile
rm bun.lock
bun install
bun install --force
Update Strategies
1. Safe Update (Recommended)
Respects semver ranges in package.json:
bun update
git diff bun.lock package.json
bun test
bun run build
When to use:
- Regular maintenance updates
- CI/CD pipeline updates
- Production deployments
- When stability is priority
2. Aggressive Update
Updates to absolute latest versions:
bun update --latest
git diff bun.lock package.json
bun test
bun run build
bun run lint
When to use:
- Major version upgrades
- Modernization efforts
- Security vulnerability fixes requiring latest versions
- Development/experimental branches
3. Selective Update
Updates specific packages only:
bun update lodash
bun update @types/node @types/react @types/react-dom
bun update --latest typescript
When to use:
- Targeted security patches
- Specific bug fixes
- Gradual migration strategies
- Reducing blast radius of changes
Best Practices Workflow
Pre-Update Checklist
-
Commit current state: Ensure clean working directory
git status
git add .
git commit -m "chore: checkpoint before dependency update"
-
Check for outdated packages:
bun outdated
-
Review security advisories:
bun audit
Update Process
- Choose strategy: Safe, aggressive, or selective
- Execute update command
- Review changes:
git diff bun.lock package.json
Post-Update Validation
-
Verify installation:
rm -rf node_modules
bun install
-
Run test suite:
bun test
-
Run build:
bun run build
-
Run linting:
bun run lint
-
Check bundle size:
bun run build --analyze
-
Test application manually:
- Critical user flows
- Edge cases
- Cross-browser testing (if web app)
Commit Changes
git add bun.lock
git commit -m "chore(deps): update dependencies
Updates all dependencies to latest compatible versions.
All tests passing."
git add bun.lock package.json
git commit -m "chore(deps): upgrade dependencies to latest
BREAKING CHANGES:
- Updated React 17 → 18
- Updated TypeScript 4.9 → 5.3
- Updated Vite 4 → 5
See CHANGELOG for migration notes.
All tests passing."
Common Scenarios
Scenario 1: Regular Maintenance
Goal: Keep dependencies fresh without breaking changes
bun update
bun test
git add bun.lock
git commit -m "chore(deps): update dependencies"
Scenario 2: Security Vulnerability
Goal: Patch specific vulnerable package
bun audit
bun update --latest <vulnerable-package>
bun audit
bun test
git add bun.lock package.json
git commit -m "fix(deps): patch security vulnerability in <package>
Fixes: CVE-XXXX-XXXXX"
Scenario 3: Major Version Upgrade
Goal: Migrate to new major version of framework/library
git checkout -b chore/upgrade-react-18
bun update --latest react react-dom
bun update --latest @types/react @types/react-dom
bun test
bun run build
bun run lint
git add .
git commit -m "chore(deps): upgrade React 17 → 18
BREAKING CHANGES:
- Automatic batching changes render behavior
- Updated ReactDOM.render to createRoot
- Removed IE 11 support
See docs/migration/react-18.md for details."
Scenario 4: Lockfile Conflict Resolution
Goal: Resolve merge conflict in bun.lock
git checkout --theirs bun.lock
rm bun.lock
bun install
bun test
git add bun.lock
git commit -m "chore: resolve lockfile merge conflict"
Scenario 5: Dependency Audit & Cleanup
Goal: Remove unused dependencies and update remaining
bun pm ls
npx depcheck
bun remove <unused-package>
bun update
bun test
bun run build
Bun-Specific Features
Lockfile Format (bun.lock)
- Since Bun 1.2 the default lockfile is the text-based
bun.lock (JSONC) —
human-readable and reviewable in git diff / PRs.
- The legacy binary
bun.lockb is still supported but no longer the default;
bun install under Bun ≥ 1.2 migrates an existing bun.lockb to bun.lock
(force it with bun install --save-text-lockfile).
- Because it is text,
bun.lock merge conflicts can be reviewed and often
resolved directly — though regenerating (below) is still the simplest fix.
- Commit exactly one lockfile: keep
bun.lock and delete any stale bun.lockb
once migrated.
Workspaces
bun update
bun update --filter <workspace-name>
Compatibility
bun install --backend=npm
bun install --lockfile-only
Troubleshooting
Lockfile Corruption
rm bun.lock
bun install
Peer Dependency Conflicts
bun install --force
Cache Issues
rm -rf ~/.bun/install/cache
rm -rf node_modules bun.lock
bun install
Version Mismatch Errors
cat package.json
rm bun.lock
bun install
Security Best Practices
Regular Audits
bun audit
bun audit --json > audit-report.json
Automated Updates
Use Renovate for automated dependency PRs — it regenerates and commits
bun.lock natively when it patches package.json, so update/pin PRs ship a
synchronized lockfile with no extra configuration.
- Do not use Dependabot for bun projects. Dependabot does not maintain
bun.lock, so its PRs leave the lockfile out of sync. Consolidate on
Renovate (remove .github/dependabot.yml).
- There is no bun value for
postUpdateOptions. The allowed values are
npm/pnpm/yarn/bundler/go/nuget only; an invented value (e.g. bunDedupe)
fails Renovate's allowedValues validation and breaks the entire
config. No option is needed to get a matching lockfile on update.
- Enable
lockFileMaintenance for the periodic full-lockfile refresh
(its enabled defaults to false, so set it explicitly). Bun support for
this was a regression fixed in Renovate PR #38694 (Oct 2025).
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"lockFileMaintenance": { "enabled": true }
}
Review Dependencies
bun pm ls <package-name>
Lockfile Integrity
bun install --frozen-lockfile
bun install --production --frozen-lockfile
Integration with CI/CD
GitHub Actions Example
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Run tests
run: bun test
- name: Update lockfile (scheduled job)
run: |
bun update
bun test
if: github.event_name == 'schedule'
Pre-commit Hook
bun install --frozen-lockfile
bun test
Related Skills
- Node.js Development - Modern JavaScript/TypeScript patterns with Bun
- Git Branch PR Workflow - Managing dependency update PRs
- GitHub Actions Inspection - Debugging CI/CD lockfile issues
References