Bun:一体化的 JavaScript 运行时

  • 时间:2025-12-03 22:15 作者: 来源: 阅读:2
  • 扫一扫,手机访问
摘要:Bun 是一个功能丰富的 JavaScript 运行时,它自带包管理功能,还具有工程常用的打包、测试等功能。Bun 使用 Zig 编程语言开发,基于 Safari 浏览器的 JavaScriptCore 引擎。Bun 由 Zig 语言和 JavaScriptCore 引擎构成如果用一个字表达 Bun 的特点,那就是:快!Bun 原生支持 TypeScript,可以直接运行 .ts 和 .tsx 文

Bun 是一个功能丰富的 JavaScript 运行时,它自带包管理功能,还具有工程常用的打包、测试等功能。

Bun 使用 Zig 编程语言开发,基于 Safari 浏览器的 JavaScriptCore 引擎。

Bun:一体化的 JavaScript 运行时

Bun 由 Zig 语言和 JavaScriptCore 引擎构成

如果用一个字表达 Bun 的特点,那就是:快!

Bun 原生支持 TypeScript,可以直接运行 .ts 和 .tsx 文件。

bun run index.tsx

安装

在 Linux 或 macOS 系统的安装命令如下:

$ curl -fsSL https://bun.sh/install | bash

# to install a specific version
$ curl -fsSL https://bun.sh/install | bash -s "bun-v1.0.0"

在 Windows 平台的安装命令是:

> powershell -c "irm bun.sh/install.ps1 | iex"

检查是否安装成功,执行 bun --version 命令:

$ bun --version
1.1.36

执行 bun --revision,可以查看对应的提交哈希值:

$ bun --revision
1.1.36+ededc168c

如果要升级,执行 upgrade 命令:

$ bun upgrade

如果你不想玩 Bun 了,执行如下命令删除它:

# for macOS, Linux, and WSL
$ rm -rf ~/.bun

# for Windows
> powershell -c ~.bununinstall.ps1

快速起步

我们使用内置的 Bun.serve API,编写一个 HTTP 服务器,感受一下它的用法。

第一,创建空白目录。

$ mkdir quickstart
$ cd quickstart

执行 bun init 搭建项目脚手架,全部选择默认值。

$ bun init

Bun:一体化的 JavaScript 运行时

bun init 创建项目脚手架

可以看到,命令生成的文件结构如下:

$ tree -L 2
.
├── README.md
├── bun.lockb # 版本锁定文件(二进制)
├── index.ts # 入口文件
├── node_modules # 依赖包目录
│   ├── @types
│   ├── bun-types
│   ├── typescript
│   └── undici-types
├── package.json
└── tsconfig.json # TypeScript 配置文件

修改 index.ts 文件,将其修改为如下代码:

// create a simple http server with port 3000
const server = Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response('Bun!');
  }
})

console.log(`Listening on http://localhost:${server.port} ...`);

在终端启动服务器:

$ bun index.ts

Bun:一体化的 JavaScript 运行时

启动 HTTP 服务器

在浏览器访问 http://localhost:3000,就能看到服务器的响应:

Bun:一体化的 JavaScript 运行时

在浏览器访问服务器地址

可以在 package.json 中增加一个 npm 脚本:

{
  "scripts": {
    "start": "bun index.ts"
  }
}

然后执行 bun run start,也可以同样启动服务器。

Bun:一体化的 JavaScript 运行时

bun run start ,执行脚本

安装依赖

为了让服务器更加有趣,我们可以安装一个 figlet 包和它的类型声明文件。figlet 的作用是创建 ASCII 艺术字体。

$ bun add figlet
$ bun add -d @types/figlet # TypeScript users only

修改 index.ts 文件,在响应中使用 figlet 绘制 ASCII 艺术字体。

import figlet from 'figlet';

const server = Bun.serve({
  port: 3000,
  fetch(req) {
    const body = figlet.textSync('Bun!');
    return new Response(body);
  },
});

console.log(
  `Listening on http://localhost:${server.port} ...`
);

再次启动服务器,会看到如下输出:

  ____              _ 
 | __ ) _   _ _ __ | |
 |  _ | | | | '_ | |
 | |_) | |_| | | | |_|
 |____/ \__,_|_| |_(_)
                      

Bun:一体化的 JavaScript 运行时

浏览器看到的响应内容

启动代码时,总体感觉是真的很快,几乎没有延迟。

常见命令

  • bun run start 运行 start 脚本
  • bun add <pkg> 安装项目依赖
  • bun build ./index.tsx 为浏览器构建项目
  • bun test 运行测试用例
  • bunx cowsay 'Hello, world!' 执行一个包

bunx 可以执行远程包的代码,作用类似 npx。举个例子,使用 bunx 命令在终端生成一幅牛说话的漫画。

Bun:一体化的 JavaScript 运行时

bunx 执行远程包


参考链接

  • https://bun.sh/docs
  • https://bun.sh/docs/quickstart
  • https://www.npmjs.com/package/figlet
  • 全部评论(0)
最新发布的资讯信息
【系统环境|】创建一个本地分支(2025-12-03 22:43)
【系统环境|】git 如何删除本地和远程分支?(2025-12-03 22:42)
【系统环境|】2019|阿里11面+EMC+网易+美团面经(2025-12-03 22:42)
【系统环境|】32位单片机定时器入门介绍(2025-12-03 22:42)
【系统环境|】从 10 月 19 日起,GitLab 将对所有免费用户强制实施存储限制(2025-12-03 22:42)
【系统环境|】价值驱动的产品交付-OKR、协作与持续优化实践(2025-12-03 22:42)
【系统环境|】IDEA 强行回滚已提交到Master上的代码(2025-12-03 22:42)
【系统环境|】GitLab 15.1发布,Python notebook图形渲染和SLSA 2级构建工件证明(2025-12-03 22:41)
【系统环境|】AI 代码审查 (Code Review) 清单 v1.0(2025-12-03 22:41)
【系统环境|】构建高效流水线:CI/CD工具如何提升软件交付速度(2025-12-03 22:41)
手机二维码手机访问领取大礼包
返回顶部