Bun 支援
在 Bun 執行環境中使用 Remotion 的說明、限制與設定方式。
Bun 支援
Bun 是一個高效能的 JavaScript 執行環境,兼容 Node.js API 並提供內建的打包工具和套件管理器。本文說明 Remotion 與 Bun 的相容性現狀。
目前的支援狀況
Remotion 主要針對 Node.js 設計,部分功能與 Bun 相容,但並非全部支援。以下是各功能的支援狀態:
| 功能 | 支援狀態 | 備注 |
|---|---|---|
安裝套件(bun install) | 支援 | 可用 Bun 取代 npm |
| 執行 Remotion CLI | 部分支援 | 建議使用 Node.js |
@remotion/renderer | 部分支援 | 某些 API 可能有問題 |
| Remotion Studio | 不建議 | 請使用 Node.js |
renderMedia() | 部分支援 | 需要測試 |
使用 Bun 安裝套件
你可以使用 Bun 作為套件管理器來安裝 Remotion 的依賴:
bun install remotion @remotion/cli但執行 Remotion 的指令時,仍建議使用 Node.js 環境:
# 建議:使用 Node.js 執行
npx remotion studio
# 不建議:使用 Bun 執行(可能有問題)
bunx remotion studio在 Bun 專案中使用 Remotion
若你的專案使用 Bun 作為套件管理器,但仍需要用 Node.js 執行 Remotion:
# 使用 Bun 安裝依賴
bun install
# 使用 Node.js 執行 Remotion
node node_modules/.bin/remotion studio
# 或
npx remotion studiopackage.json 腳本設定
在 package.json 中,可以明確指定使用 Node.js 執行 Remotion:
{
"scripts": {
"start": "node node_modules/.bin/remotion studio",
"render": "node node_modules/.bin/remotion render MyComp out/video.mp4",
"build": "bun run build:app"
}
}Bun 作為打包工具
Remotion 內部使用 webpack 進行打包,目前不支援用 Bun 的打包工具替換 webpack。若你嘗試自訂 webpack 設定,需要在 remotion.config.ts 中使用 webpack API:
// remotion.config.ts
import { Config } from "@remotion/cli/config";
import { webpackOverride } from "./src/webpack-override";
Config.overrideWebpackConfig(webpackOverride);已知問題
子程序啟動問題
Bun 的子程序(child_process)實作與 Node.js 有些差異,可能影響 Chromium 的啟動:
Error: spawn chrome ENOENT
若遇到此問題,請切換到 Node.js 執行 Remotion。
原生模組相容性
Remotion 使用了部分 Node.js 原生模組(.node 檔案),這些模組在 Bun 中的相容性可能不完整。
什麼時候可以用 Bun?
目前可以安全使用 Bun 的場景:
- 套件安裝:
bun install完全可用。 - 執行非 Remotion 的任務:你的應用程式邏輯(非渲染部分)可以用 Bun 執行。
- 測試:若不涉及 Chromium 渲染,部分測試可以用
bun test執行。
未來展望
Bun 對 Node.js 相容性的支援持續改善中。隨著 Bun 的成熟,Remotion 的相容性可能會逐步提升。建議關注:
- Remotion GitHub Issues 中關於 Bun 的討論
- Bun 相容性文件
小結
- 可以用
bun install安裝 Remotion 依賴套件。 - 執行 Remotion 的渲染與 Studio 功能時,建議使用 Node.js 而非 Bun。
- Bun 作為套件管理器 + Node.js 作為執行環境是目前最穩定的組合。
- 隨著 Bun 的持續發展,相容性可能持續改善,請關注官方公告。