当前位置: 首页 > 工具软件 > Bun > 使用案例 >

Windows 下安装 Bun:像 Node 或 Deno 一样的现代 JavaScript 运行时

支智志
2023-12-01

背景

最近前端工具链又火了一个项目 Bun,可以说内卷非常严重。Bun 是一个新的 JavaScript 运行时,内置了打包器、转译器、任务运行器和 npm 客户端。

Bun 是像 Node 或 Deno 一样的现代 JavaScript 运行时。和 Nodejs 不同的是 Bun 扩展自 jsCore,而不是 V8。Bun 原生实现了数百个 Node.js 和 Web API,包括约 90% 的 Node-API 函数(本机模块)、fs、path、Buffer 等。

Bun 的目标是在浏览器之外运行世界上大多数 JavaScript,为您的未来基础架构带来性能和复杂性的增强,并通过更好、更简单的工具提高开发人员的生产力。

小编计划在 Windows 上尝试安装 Bun 体验一下。

环境准备

  1. 安装 WSL

官网提供了一键安装脚本,但是只能在 Linux、macOS、WSL 上运行,Windows 桌面环境无法安装,所以你如果要在 windows 上安装,需要先安装 Linux 子系统也就是 WSL。

具体步骤可以参考微软官方文档 Install Linux on Windows with WSL

推荐使用 Windows Terminal 来快速打开 WSL 终端:Microsoft Store: Windows Terminal

  1. 确保开启 BIOS 虚拟机功能

进入 BIOS 将虚拟化技术 Intel Virtual Technology 设置,由 Disable 禁用设置为 Enable 可用。

  1. 开启 Hyper-v

PowerShell 或者 CMD.exe 管理员模式运行

bcdedit /set hypervisorlaunchtype auto

关于虚拟机和 Hyper-v 的设置细节也可以参考这篇博文:Vmware Workstation16 出现 "VMware Workstation 不可恢复错误:(vcpu-1)"故障解决

安装 Bun

  1. 确保 WSL 系统(我的是 Ubuntu)安装了 unzip,否则安装 Bun 的时候会报错
error: unzip is required to install Bun (see: https://github.com/Jarred-Sumner/bun#unzip-is-required

Terminal 打开 WSL,Ubuntu 系统用以下命令安装 unzip

sudo apt-get install unzip
  1. WSL 下输入
 curl https://bun.sh/install | bash

出现以下提示即为安装成功

Bun was installed successfully to /root/.bun/bin/bun

Manually add the directory to your $HOME/.bashrc (or similar)

   BUN_INSTALL="/root/.bun"
   PATH="$BUN_INSTALL/bin:$PATH"
  1. 根据提示手动添加环境变量

使用 vim 打开 .bashrc 文件

vim /root/.bashrc

将以下环境变量设置添加进 .bashrc 文件末尾保存即可

BUN_INSTALL="/root/.bun"
PATH="$BUN_INSTALL/bin:$PATH"

退出 WSL 再进入,检验是否安装成功

bun -h
  1. 测试模块

使用 vscode 的 WSL 扩展来管理 WSL 系统中的项目

官方详细教程 Get started using VSCode with WSL

我们新建一个 http.js 文件,编写代码

// http.js
export default {
  port: 3000,
  fetch(request) {
    return new Response("Welcome to Bun!");
  },
};

启动 http 服务

bun run http.js

访问 http://localhost:3000 就可以看到Welcome to Bun!信息,表示运行成功。

官网还提供了更多案例可以尝试: Bun Examples

总结

体验下来,这款工具的使用还有待改进,特别是对于 Windows 用户,安装起来并不容易,最好能提供 Windows 安装包。当前只是 beta 版本,可以用作学习,要上生产使用可能还有段路要走,毕竟 Node.js 已经被前端开发所熟知,而且还有 Deno 的生态正在建立,任重而道远。

参考

 类似资料: