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 --version
2. 编写代码
你可以使用任何文本编辑器编写 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 之前,请务必进行充分的评估和测试。