Bun 使用实践&经验分享
前言
最近在搞一个新项目:AI 给取的名:echo-trails
“echo” 可以象征着记忆的回响,过去的经历像回声一样在这些 “trails” 上徘徊,每当走过,就能听到记忆的声音。
搞完再放出来开源,感兴趣的可以猜猜是什么项目!
想着新项目就用一下当下比较新的技术栈,运行时这部分就选了 Bun "all-in-one toolkit"。
下面就分享一下遇到的问题和解决方案。
安装 Bun 镜像源切换
第一个问题就是安装 Bun 咯。
官方给到了一键安装的 Shell,但有众所周知的网络原因,安装不一定顺利。
curl -fsSL https://bun.sh/install | bash
当然如果你已经有 Node.js 环境的话,可以直接用 npm 安装,就不用看这一节了:
npm install -g bun
笔者的话本地有🪜,安装还相对比较顺利,但在服务端的话就一直超时,下面讲讲怎么解决的:
① 安装脚本的获取
访问 https://bun.sh/install
将脚本保存下来,比如就叫 bun_install.sh
。
如果这一步访问就卡主可以去官方 GitHub 仓库获取安装脚本:src/cli/install.sh
② 修改获取安装包的镜像源
阅读 Shell 脚本发现,125 - 129 行 有如下代码:
if [[ $# = 0 ]]; then
bun_uri=$github_repo/releases/latest/download/bun-$target.zip
else
bun_uri=$github_repo/releases/download/$1/bun-$target.zip
fi
可以看到默认从 GitHub Releases 下载安装包。
咱们只需要把这个变量的值改成镜像源上的地址即可
# 在上述脚本代码后加入
bun_uri=镜像源地址
这里可以使用淘宝的二进制文件镜像源:https://registry.npmmirror.com/binary.html
比如 bun-v1.1.36
该选择哪个文件呢?
结合脚本上下文,可以看到确认版本的核心逻辑如下
platform=$(uname -ms)
case $platform in
'Darwin x86_64')
target=darwin-x64
;;
'Darwin arm64')
target=darwin-aarch64
;;
'Linux aarch64' | 'Linux arm64')
target=linux-aarch64
;;
'MINGW64'*)
target=windows-x64
;;
'Linux x86_64' | *)
target=linux-x64
;;
esac
咱们只需要运行 uname -ms
命令,然后根据输出选择对应的安装包即可。
又学到一手!
找到对应版本后,复制对应地址回填即可。
bun_uri=https://registry.npmmirror.com/-/binary/bun/bun-v1.1.36/bun-linux-x64.zip
最后手动执行安装脚本
bash bun_install.sh
npm 镜像源切换
参考文章 Override the default npm registry for bun install
创建bunfig.toml
文件,内容如下:
[install]
# 设置为淘宝源
registry = "https://registry.npmmirror.com"
然后 bun install
就快起来了。
monorepo
Bun 官方也内置了 monorepo workspace 管理的方案,Configuring a monorepo using workspaces with Bun。
只需要在 package.json 中配置 workspaces
字段,指定子包目录即可。
{
"workspaces": [
"packages/*"
]
}
同样也支持 workspace
协议
{
"name": "stuff-b",
"dependencies": {
"stuff-a": "workspace:*"
}
}
最后
后面遇到了其它坑也持续在这里记录一下。