Skip to content
NewBun 1.4.5 is out. Release notes
AphrodyBun

Runtime · Core Runtime

Migrate from Node.js

Find and rewrite Node.js APIs that have a Bun equivalent with bun n2b, and migrate a project with bun migrate

bun n2b scans a project for Node.js APIs that have a faster or simpler Bun equivalent, such as fs.readFile for Bun.file().text() or child_process for Bun.spawn, and can rewrite them. bun migrate moves a whole Node.js project to Bun.

bun n2b

Each finding has a rule, a severity, a message and, when one exists, the replacement code.

Rewrite code

# apply the safe rewrites
bun n2b --fix

# also apply the rewrites that change behavior in edge cases
bun n2b --aggressive

Reports

--report selects text (default), json, jsonl, md or sarif.

bun n2b --report=json > n2b.json
bun n2b --report=sarif > n2b.sarif

--dry-run previews the rewrites without writing files, and --since <ref> scans only the files changed since a git ref. bun n2b rules lists every rule with its category and documentation link.

Migrate a project

bun migrate applies every n2b rewrite, converts pnpm workspaces, catalogs and overrides to package.json, removes the other lockfiles and runs bun install.

# print the migration plan and change nothing
bun migrate --dry-run

bun migrate

bun migrate is the same as bun n2b migrate.

bun n2b --help lists every command and flag.

bun n2b and bun migrate always run the built-in commands. Use bun run n2b or bun run migrate to run a project's scripts of the same name.