Bun 是一款新的 JavaScript 运行时环境,与 Node.js 有一些明显的不同和优势。以下是一篇简单的 Bun 上手教程,包含了 Bun 和 Node.js 的比较、Bun 的优势、使用方法以及如何在现有的 Node.js 项目中替换为 Bun。
一、Bun 和 Node.js 的比较
1. 性能
Bun 在性能上相较于 Node.js 有显著提升。这得益于其底层的优化和更高效的垃圾回收机制。在某些基准测试中,Bun 的性能甚至超过了 Node.js。
2. 体积
Bun 的可执行文件体积非常小,这使得它在部署和分发时更加便捷。相比之下,Node.js 的安装体积较大。
3. API 和兼容性
Bun 的 API 与 Node.js 非常相似,因此大多数 Node.js 代码在 Bun 上可以无需修改地运行。但需要注意的是,由于 Bun 的版本较新,可能还未完全支持 Node.js 的所有特性。
二、Bun 的优势
1. 简化开发体验
Bun 提供了更简洁的开发体验,无需配置复杂的构建工具或打包器。你可以直接运行 .bun 文件,就像运行普通的 JavaScript 文件一样。
2. 内置包管理器
Bun 内置了包管理器,你可以直接使用 bun install 命令来安装依赖项,无需额外安装 npm 或 yarn。
3. 高性能
如前所述,Bun 在性能上优于 Node.js,这使得它在处理大量并发请求或计算密集型任务时更具优势。
三、Bun 的使用方法
1. 安装 Bun
我个人喜欢使用scoop来安装,也可以使用官网 Bun 其他方式
scoop install bun
//或者其他的安装方式
powershell -c "irm bun.sh/install.ps1 | iex"检查安装
要检查 Bun 是否已成功安装,终端窗口运行bun --version可以查看到版本即为安装成功。
bun --version2. 编写代码
你可以使用任何文本编辑器编写 JavaScript 代码,并将其保存为 .bun 文件。Bun 会自动识别并运行这些文件。
3. 安装依赖项
在你的项目根目录下创建一个 package.json 文件,列出你的项目依赖项。然后,使用 bun install 命令来安装这些依赖项。
4. 运行项目
使用 bun run 命令来运行你的项目。你可以在 package.json 文件中指定运行脚本。
四、在现有的 Node.js 项目中替换为 Bun
我这里以我的vite项目为例;官方是支持bun的 开始 | Vite 官方中文文档 (vitejs.dev)
1. 备份项目并删除 node_modules
在进行替换之前,建议先备份你的项目,以防万一;然后删除node_modules,之后通过bun重新安装。
2. 修改 package.json
将 package.json 文件中的 scripts 部分中的 node 替换为 bun。例如,将 "dev": "node app.js" 修改为 "dev": "bun app.js";将执行命令改为bunx --bun xxx;例如:
"scripts": {
"dev": "bunx --bun vite --host",
"publish": "bun scripts/publish.js --production",
"publish:test": "bun scripts/publish.js --test",
},bunx是bun的别名。当您安装bun时,bunx CLI 将自动安装。
使用bunx来自npm自动安装和运行包。它相当于npx或yarn dlx。
默认情况下,Bun 会尊重 shebangs。如果一个可执行文件标记有#!/usr/bin/env node,Bun 将启动一个node进程来执行该文件。然而,在某些情况下,可能希望使用 Bun 的运行时来运行可执行文件,即使可执行文件指示使用其他方式执行。要执行此操作,请包含--bun标志。
3. 安装 Bun 依赖项
使用bun install重新安装依赖即可。
如果你的项目使用了某些 Node.js 特有的库或模块,并且这些库或模块在 Bun 中没有直接对应的版本,你可能需要寻找替代方案或手动转换这些代码。
4. 测试项目
在替换完成后,运行你的项目并进行充分的测试,以确保一切正常。
5. 部署项目
如果测试通过,你可以将你的项目部署到生产环境中,并使用 Bun 来运行它。 请注意,由于 Bun 是一个相对较新的项目,其生态系统和社区支持可能还不如 Node.js 完善。因此,在将大型或关键项目从 Node.js 迁移到 Bun 之前,请务必进行充分的评估和测试。