博客 / 詳情

返回

加速 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,即可快速完成環境搭建。

curl -fsSL https://bun.sh/install | bash

運行應用:使用 bun install 快速安裝依賴(就像 Node.js 下的 npm install),再用 bun run 執行腳本即可。

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:

{

  "packageManager": "bun@1.2.0"

}

如果 package.json 中有腳本包含 node 命令,比如下面這樣:

{

  "scripts": {

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

  }

}

如果將 Bun 用作包管理器,默認會安裝並使用 Node.js v22.x 版本。如需指定 Node.js 版本,可以在 package.json 的 engines 字段中定義,例如:

{

  "engines": {

    "node": "23.x"

  }

}

Next.js 配置

使用 Bun 運行時也能在應用託管服務(App Platform)上部署 Next.js 應用。如果你要部署 Next.js 項目(包括使用了 ISR 的項目),必須更新腳本配置,明確指定在構建和開發流程中使用 Bun 運行時。

請按以下方式更新 package.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 文檔:

https://docs.digitalocean.com/products/app-platform/reference...

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.