The bun
CLI can be used to execute JavaScript/TypeScript files, package.json
scripts, and executable packages.
Running a file
Compare to node <file>
Bun can execute .js
, .jsx
, .ts
, and .tsx
files. Every file is transpiled to vanilla JavaScript by Bun's fast native transpiler before being executed. For details on Bun's runtime, refer to the Bun runtime documentation.
import { z } from "zod";
const schema = z.string()
const result = schema.parse("Billie Eilish");
console.log(result);
To run a file in Bun:
bun foo.ts
Billie Eilish
If no node_modules
directory is found in the working directory or above, Bun will abandon Node.js-style module resolution in favor of the Bun module resolution algorithm
. Under Bun-style module resolution, all packages are auto-installed on the fly into a global module cache. For full details on this algorithm, refer to Runtime > Modules.
Running a package script
Compare to npm run <script>
or yarn <script>
Your package.json
can define a number of named "scripts"
that correspond to shell commands.
{
// ... other fields
"scripts": {
"clean": "rm -rf dist && echo 'Done.'",
"dev": "bun server.ts"
}
}
Use bun <script>
to execute these scripts.
bun clean
$ rm -rf dist && echo 'Done.'
Cleaning...
Done.
Bun executes the script command in a subshell. It checks for the following shells in order, using the first one it finds: bash
, sh
, zsh
.
⚡️ The startup time for npm run
on Linux is roughly 170ms; with Bun it is 6ms
.
If there is a name conflict between a package.json
script and a built-in bun
command (install
, dev
, upgrade
, etc.) Bun's built-in command takes precedence. In this case, use the more explicit bun run
command to execute your package script.
bun run dev
To see a list of available scripts, run bun run
without any arguments.
bun run
quickstart scripts:
bun run clean
rm -rf dist && echo 'Done.'
bun run dev
bun server.ts
2 scripts
Bun respects lifecycle hooks. For instance, bun run clean
will execute preclean
and postclean
, if defined. If the pre<script>
fails, Bun will not execute the script itself.