加速 JavaScript 开发:DigitalOcean 应用托管现已原生支持 Bun

JavaScript 生态正快速演进,以满足现代 AI 驱动应用在性能和集成方面日益增长的需求。Bun 是开发者中颇受欢迎的框架,它把运行时、打包器和包管理器合而为一,被视为 Node.js 的"开箱即用"替代品。凭借比传统运行时更快的启动速度和更低的内存占用,Bun 成为 DigitalOcean 客户呼声最高的功能之一。

DigitalOcean 应用托管服务(App Platform)现已原生支持 Bun。现在,您无需编写任何配置即可直接从代码仓库部署 Bun 应用。应用托管服务(App Platform)的云原生 Buildpack 会自动检测、构建、部署并运行您的 Bun 应用。

主要优势

  • 性能:Bun 是现代高性能 JavaScript 运行时,内置工具链,针对快速启动与高效执行做了优化。
  • 零配置:无需维护 Dockerfile,只要把代码推送到 Git 仓库,剩下的运行时设置由我们完成。
  • Next.js 无缝支持:Bun 与 Next.js 原生兼容,可同样轻松地部署全栈 React 应用。

应用托管服务中的三种部署路径

  1. **云原生 Buildpack("代码优先")**:连接 GitHub/GitLab/Bitbucket 仓库,我们自动分析代码、识别语言并完成构建。
  2. Dockerfile:在仓库中放置 Dockerfile,我们按您的指令构建镜像。
  3. 预构建镜像:本地构建容器镜像并推送到 DigitalOcean 容器注册表(DOCR),我们部署您推送的 exact 镜像。

如何开始使用 Bun

如果你刚接触 Bun,上手非常简单。Bun 被设计为 Node.js 的"即插即用"替代品,通常只需极少改动即可沿用现有代码和 package.json。

安装 Bun​:在本地全局安装 Bun,即可快速完成环境搭建。

arduino 复制代码
curl -fsSL https://bun.sh/install | bash

运行应用:使用 bun install 快速安装依赖(就像 Node.js 下的 npm install),再用 bun run 执行脚本即可。

arduino 复制代码
bun install      # 安装依赖,类似 npm install
bun run dev      # 执行脚本,类似 npm run dev

深入的更多用法请参考 Bun 官方文档

Bun 的自动检测机制

当你在本地初始化项目并确保运行正常后,应用托管服务(App Platform)会自动识别为 Bun 应用。构建系统通过扫描代码仓库根目录来判断所需运行环境。

如何识别 Bun 应用

只要在代码仓库中发现这个锁定文件,系统就会确认你正在使用 Bun:bun.lock

检测到 Bun 应用后,自动构建流程如下:

1、​安装依赖​:自动执行 bun install 安装依赖(如果 bun.lock 文件没变,系统会直接使用缓存的 node_modules,大幅缩短构建时间)

2、​执行构建​:运行 bun run build 进行构建。你也可以在 App Spec 里自定义 build_command 来覆盖这个步骤。如果需要在安装依赖前后执行其他操作,可以使用 package.json 里的 digitalocean-prebuild 和 digitalocean-postbuild 脚本

3、​启动应用​:默认通过 bun run start 启动应用

版本选择规则​:

  • 读取 BUN_VERSION 环境变量
  • 读取 .bun-version 文件
  • 读取 .runtime.bun.txt 文件
  • 如果以上都没指定,就用 Bun GitHub Releases 的最新版本

系统会缓存你使用的 Bun 和 Node 版本,只要版本不变,后续构建都会更快。只有当你主动修改版本时,系统才会重新获取。

从 Node.js 迁移到 Bun

如果你想将现有的 Node.js 应用转为使用 Bun 运行时,过程其实很简单。不需要修改应用代码,只需调整项目配置。

第一步:清理 Node 配置文件 删除项目中的 package-lock.json(或 yarn.lock)。这个操作相当于告诉应用托管服务(App Platform):"不要再把这个应用当成标准 Node 应用来处理了。"

第二步:生成 Bun 配置文件 在本地运行 bun install。这会自动生成 bun.lock 文件。

第三步:提交更新

将改动提交到代码仓库。应用托管服务(App Platform)检测到新提交后,就会自动切换------不再使用 Node 构建流程,转而使用 Bun 的构建流程。

仅把 Bun 当包管理器

如果你想用 Bun 作为包管理器,但继续使用 Node.js 作为运行时,系统会在以下情况自动安装 Node.js:

如果在 package.json 中将 Bun 指定为包管理器。请按如下方式更新你的 package.json:

perl 复制代码
{

  "packageManager": "bun@1.2.0"

}

如果 package.json 中有脚本包含 node 命令,比如下面这样:

json 复制代码
{

  "scripts": {

    "start": "node src/index.js"

  }

}

如果将 Bun 用作包管理器,默认会安装并使用 Node.js v22.x 版本。如需指定 Node.js 版本,可以在 package.json 的 engines 字段中定义,例如:

json 复制代码
{

  "engines": {

    "node": "23.x"

  }

}

Next.js 配置

使用 Bun 运行时也能在应用托管服务(App Platform)上部署 Next.js 应用。如果你要部署 Next.js 项目(包括使用了 ISR 的项目),必须更新脚本配置,明确指定在构建和开发流程中使用 Bun 运行时。

请按以下方式更新 package.json:

json 复制代码
{

  "scripts": {

    "dev": "bun --bun next dev",  //or remove this line, as app platform uses the build script

    "build": "bun --bun next build"

  }

}

这样可以确保 Next.js 在 应用托管服务(App Platform) 的构建过程中正确调用 Bun 的运行时功能。

DigitalOcean 应用托管服务(App Platform)现已在全球所有区域提供原生 Bun 支持。

  • 新建应用:关联包含 bun.lockb 的 GitHub 仓库即可。
  • 现有应用:切换包管理器并推送,触发新构建即可自动使用 Bun。

更多高级配置请参考 DigitalOcean 英文官网 Bun Buildpack 文档:

docs.digitalocean.com/products/ap...

相关推荐
用户6802659051193 小时前
如何利用 Endpoint Central 提高企业终端管理效率
javascript·后端·面试
咖啡の猫3 小时前
TypeScript 开发环境搭建
前端·javascript·typescript
是你的小橘呀3 小时前
单页应用路由怎么搞?React Router 从原理到实战全解析!
前端·javascript
风止何安啊3 小时前
Set/Map+Weak三剑客的骚操作:JS 界的 “去重王者” ,“万能钥匙”和“隐形清洁工”
前端·javascript·面试
2501_944446004 小时前
Flutter&OpenHarmony文本输入组件开发
前端·javascript·flutter
WebRuntime4 小时前
所有64位WinForm应用都是Chromium浏览器(2)
javascript·c#·.net·web
贺今宵4 小时前
2025.electron-vue3-sqlite3使用
前端·javascript·electron
Irene19914 小时前
创建新DOM节点方式总结
javascript·dom
2501_946233894 小时前
Flutter与OpenHarmony大师详情页面实现
android·javascript·flutter