bun-add

v2026.09.24

Bun add: install a package, add dev dependency, pin exact version, or target a workspace. Use when the user wants to add/install a specific package with bun.

GitHub
安装命令
npx skhub add laurigates/bun-add
Markdown
SKILL.md

/bun:add

Add a package to dependencies using Bun.

When to Use This Skill

ScenarioUse this skillAlternative
Quickly adding a single packageYesN/A
Adding a dev dependencyYesN/A
Pinning an exact package versionYesN/A
Installing all project dependenciesNo - use bun-package-managerbun install
Removing or updating packagesNo - use bun-package-managerN/A
Managing workspace dependenciesNo - use bun-package-managerN/A

Parameters

Parse $ARGUMENTS. These are supplied by the caller; nothing substitutes them for you.

Token in $ARGUMENTSBindsDefault when absent
First non-flag token (required)PACKAGE — name, optionally with a version (lodash, react@18)none — ask for it rather than guessing
--devadd to devDependenciesadded to dependencies
--exactpin the exact version (no ^ range)caret range

Execution

Pick the row matching the flags the caller passed, substitute PACKAGE, and run it:

Flags in $ARGUMENTSCommand
(none)bun add PACKAGE
--devbun add --dev PACKAGE
--exactbun add --exact PACKAGE
--dev --exactbun add --dev --exact PACKAGE

Examples

# Add runtime dependency
bun add express

# Add dev dependency
bun add --dev typescript vitest

# Pin exact version
bun add --exact react@18.2.0

# Add to specific workspace
bun add lodash --cwd packages/utils

# Preview without writing package.json
bun add --dry-run zod

An unpinned bun add bypasses the lockfile

bun install --frozen-lockfile governs only what that install resolves. A later bun add <pkg> with no version resolves the registry's latest dist-tag at run time, and the lockfile does not apply to it. The usual place this happens is a Dockerfile that installs with --production (to skip dev packages) and then re-adds one CLI from devDependencies.

latest is a registry convention, not a stability guarantee. Publishers can tag a prerelease as latest.

Observed 2026-08: bun add --dev prisma in a --production Docker stage pulled 8.0.0-rc.12, because npm's latest for prisma was a release candidate. Its CLI had no generate command, so the image build failed at a commit that touched neither Prisma nor the Dockerfile. Another image built from a plain --frozen-lockfile install kept working, which is the sign that a version was being resolved rather than locked. Unit-test CI stayed green because it never built the image.

When an install line has to name a package that the primary install skipped, read the version from package.json instead of hardcoding a second copy. That keeps one source of truth, and Renovate keeps bumping it:

RUN bun add --dev "prisma@$(bun -e 'console.log(JSON.parse(await Bun.file("package.json").text()).devDependencies.prisma)')"

If package.json holds a range (^7.9.1), this resolves the highest version inside that range, which may differ from the locked one. Pin exact versions in package.json when that difference matters.

Post-add

  1. Report package version added
  2. Show dependency tree impact with bun why <package>
  3. Suggest running tests to verify compatibility
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

MIT

源路径

typescript-plugin/skills/bun-add

默认分支

main

最新提交

1668324

Tree SHA

b2d4cc3