Bun v1.2 登場!Postgres、S3、更佳的 Node 相容性 →

Bun
Bun v1.2.5 現已推出!→

Bun 是一款快速的 JavaScript
All-in-One 工具組|

使用 Bun 開發、測試、執行和打包 JavaScript 和 TypeScript 專案 — 一次到位。Bun 是一款 All-in-One JavaScript 執行環境與工具組,專為速度而設計,完整配備打包器, 測試執行器,以及與 Node.js 相容的 套件管理器。Bun 的目標是 100% 相容於 Node.js。

使用者

Bun 有何不同之處?

Bun 提供廣泛的內建 API 和工具

內建 核心功能

Bun
Bun
Node
Node.js 相容性
Web 標準 API
原生附加元件
TypeScript
JSX
模組載入器外掛程式

內建 API

Bun
Bun
Node
PostgresSQL 驅動程式
SQLite 驅動程式
S3 雲端儲存驅動程式
WebSocket 伺服器 (包括 pub/sub)
HTTP 伺服器
HTTP 路由器
單一檔案可執行檔

內建 工具

Bun
Bun
Node
npm 套件管理
打包器
跨平台 $ Shell API
相容於 Jest 的測試執行器
熱重載 (伺服器)
Monorepo 支援
前端開發伺服器
格式器與靜態程式碼分析器

內建 實用工具

Bun
Bun
Node
密碼與雜湊 API
字串寬度 API
Glob API
Semver API
CSS 顏色轉換 API

$ bun run

Bun 是一個 JavaScript 執行環境。

Bun 是一個從頭開始建構的全新 JavaScript 執行環境,旨在為現代 JavaScript 生態系統服務。它有三個主要設計目標

Bun 設計為 Node.js 的直接替換方案。它原生實作了數百個 Node.js 和 Web API,包括 fspathBuffer 等。

Bun 的目標是執行世界上大多數伺服器端 JavaScript,並提供工具來提高效能、降低複雜性並倍增開發人員的生產力。

直接替換 Node.js 的相容性

Bun 的目標是成為 Node.js 的直接替換方案。它實作了 Node 的模組解析演算法、全域變數,例如 Bufferprocess,以及內建模組,例如 fspath。點擊以追蹤 Bun 在完全相容性方面的進度。

快速執行效能

Bun 擴展了 JavaScriptCore 引擎 (為 Safari 建置的注重效能的 JS 引擎),並以 Zig 實作了原生速度的功能。

適用於 node_modules

使用 Bun,您仍然可以使用 package.json 來管理您的依賴套件。使用 Bun 的原生 npm 用戶端來體驗安裝依賴套件的速度有多快。

不再有模組混亂

忘記圍繞 CommonJS、ESM、檔案擴展名、解析優先順序和 package.json 設定的複雜規則。使用 Bun,一切運作就是這麼順暢。

TypeScript

TypeScript 在 Bun 中是一流公民。直接執行 .ts.tsx 檔案。Bun 尊重您在 tsconfig.json 中設定的設定,包括 "paths""jsx" 等等。

Web 標準 API

Bun 實作了您熟悉且喜愛的 Web 標準 API,包括 fetchReadableStreamRequestResponseWebSocketFormData

JSX

JSX 就是能用。Bun 在內部將 JSX 語法轉譯為原始 JavaScript。與 TypeScript 本身一樣,Bun 預設採用 React,但也尊重在 tsconfig.json 中定義的自訂 JSX 轉換。

監看模式

bun run CLI 提供智慧型 --watch 標記,可在任何匯入的檔案變更時自動重新啟動程序。

跨平台 Shell 腳本

Bun.$ API 實作了跨平台、類 bash 的直譯器、Shell 和 coreutils。這讓您可以輕鬆地從 JavaScript 執行 Shell 腳本,以進行開發維運任務。

您需要的 API。內建。

啟動 HTTP 伺服器

啟動 WebSocket 伺服器

讀取和寫入檔案

雜湊密碼

為瀏覽器打包

編寫測試

檔案系統路由

查詢 SQLite 資料庫

執行 Shell 腳本

呼叫 C 函數

index.tsx
import { sql, serve } from "bun";

const server = serve({
  port: 3000,
  routes: {
    "/": () => new Response("Welcome to Bun!"),
    "/api/users": async (req) => {
      const users = await sql`SELECT * FROM users LIMIT 10`;
      return Response.json({ users });
    },
  },
});

console.log(`Listening on localhost:${server.port}`);
前身為 Twitter
生產環境
「Bun 是我們最新的基礎架構專案之一的核心 [...]
在生產環境中,為我們的體育和即將推出的新聞產品提供動力」
Avatar
Shlomi Atar
X 工程團隊

$ bun install

Bun 是一款與 npm 相容的套件管理器。

Bun

pnpm

慢 17 倍

npm

慢 29 倍

Yarn

慢 33 倍

從快取安裝 Remix 應用程式的依賴套件。
檢視效能基準

Node.js 相容

Bun 仍然會像 npm 和其他套件管理器一樣,將您的依賴項安裝到 node_modules 中,只是速度更快。您不需要使用 Bun 執行時環境即可將 Bun 用作套件管理器。

極速飛快

Bun 使用每個作業系統上最快的系統呼叫,使安裝速度比您想像的還要快。

工作區(Workspaces)

開箱即支援工作區(Workspaces)。Bun 會讀取您 package.json 中的 workspaces 鍵,並為您的整個 monorepo 安裝依賴項。

全域安裝快取

下載一次,隨處安裝。Bun 只會從 npm 下載特定版本的套件一次;未來安裝將從快取複製。

預設安全

與其他套件管理器不同,Bun 預設不執行 postinstall 腳本。熱門套件會自動加入允許清單;其他套件可以新增到您 package.json 中的 trustedDependencies 中。

跨平台 package.json 腳本

在 Windows 上,package.json 腳本由 Bun Shell 提供支援。現在可以安全地刪除 cross-envrimrafnode-which

熟悉的 API

Bun 的 CLI 使用的命令和標記,對於 npmpnpmyarn 的任何使用者來說都會感到熟悉。

讀取 .npmrc & package-lock.json

從 npm 遷移而無需更改依賴項版本。秘密嘗試 bun install,而無需告訴您的同事。

yarn 替換為 bun install,以獲得快 30 倍的套件安裝速度。

$ bun test

Bun 是一個測試執行器,它讓其他測試工具看起來像是在散步。

Bun

Vitest

慢 5 倍

Jest+SWC

慢 8 倍

Jest+tsjest

慢 18 倍

Jest+Babel

慢 20 倍

正在執行以下項目的測試套件: Zod
檢視效能基準

Jest 相容語法

Bun 提供 Jest 風格的 expect() API。切換到 bun test,無需變更任何程式碼。

極速飛快

Bun 的快速啟動時間在測試執行器中大放異彩。您將難以置信您的測試執行速度會快多少。

生命週期鉤子

使用 beforeEach/ afterEach 執行每個測試的設定和拆解程式碼,或使用 beforeAll/ afterAll 執行每個檔案的設定和拆解程式碼。

ESM、TypeScript 和 JSX 立即上手

測試 TypeScript、ESM 和 JSX 檔案無需任何設定。

快照測試

完全支援使用 .toMatchSnapshot() 進行磁碟快照測試。使用 --update-snapshots 標記覆寫快照。

DOM API

在您的測試中使用 happy-dom 模擬 DOM 和瀏覽器 API。

監看模式

使用 --watch 標記,在檔案變更時使用 Bun 的即時監看模式重新執行測試。

函式模擬

使用 mock() 模擬函式,或使用 spyOn() 監視方法。

jest 替換為 bun test,以讓您的測試執行速度快 10-30 倍。

Bun 是一個完整的 JavaScript 工具組您發布和維護應用程式所需的一切,內建其中

內建核心功能

基本執行環境功能

Node.js 相容性
Web 標準 API
TypeScript
JSX
模組載入器外掛程式

內建 API

專為生產環境設計的內建效能和原生 API

PostgresSQL 驅動程式
SQLite 驅動程式
S3 雲端儲存驅動程式
WebSocket 伺服器
HTTP 伺服器
單一檔案可執行檔
HTTP 路由器

內建工具

內建開發人員工具

套件管理器
打包器
跨平台 shell API
Jest 相容測試執行器
熱重載
Monorepo 支援
前端開發伺服器

內建工具程式

讓您身為開發人員的生活更輕鬆的 API

密碼 & 雜湊
字串寬度 API
CSS 顏色轉換
Glob API
Semver API
外部函式介面

1

安裝 Bun

curl -fsSL https://bun.dev.org.tw/install | bash

2

編寫您的程式碼

index.tsx
const server = Bun.serve({
  port: 3000,
  fetch(request) {
    return new Response("Welcome to Bun!");
  },
});

console.log(`Listening on localhost:${server.port}`);

3

執行檔案

bun index.tsx

開發人員喜愛 Bun。

Sainder
1 月 17 日
@Sainder_Pradipt
Bun
Lic
1 月 18 日
@Lik228
bun
Martin Navrátil
1 月 17 日
@martin_nav_
Bun....
SaltyAom
1 月 17 日
@saltyAom
bun
reaxios
1 月 17 日
@reaxios
bun install bun
kyge
1 月 17 日
@0xkyge
bun
James Landrum
1 月 17 日
@JamesRLandrum
Node
orlowdev
1 月 17 日
@orlowdev
是啊,bun,但我的程式碼沒有依賴項。
hola
1 月 17 日
@jdggggyujhbc
bun
std::venom
1 月 17 日
@std_venom
Bun
tiago
1 月 19 日
@tiagorangel23
應該使用 Bun 而不是 npm
46officials
1 月 19 日
@46officials
Bun
yuki
1 月 19 日
@staticdots
Bun
Stefan
1 月 17 日
@stefangarofalo
Bun
Samuel
1 月 17 日
@samueldans0
永遠 Bun
Divin Prince
1 月 17 日
@divinprnc
是啊 Bun
Gibson
1 月 16 日
@GibsonSMurray
bun
Oggie Sutrisna
1 月 16 日
@oggiesutrisna
bun
emanon
1 月 16 日
@0x_emanon
✅ bun
yuki
1 月 16 日
@staticdots
bun
SpiritBear
1 月 16 日
@0xSpiritBear
bun
Ayu
1 月 12 日
@Ayuu2809
Bun good 🧅
Hirbod
1 月 19 日
@hirbod_dev
適用於一切。是的。我甚至使用 bunx expo run:ios 等執行
Luis Paolini
1 月 18 日
@DigitalLuiggi
只需使用 @bunjavascript
buraks
1 月 18 日
@buraks____
我使用 bun patch 而且我喜歡它!
fahadali
1 月 8 日
@fahadali503
Bun
Aiden Bai
1 月 1 日
@aidenybai
2025 年將是 JS/TS 年,而 @bunjavascript 就是原因
Catalin
1 月 1 日
@catalinmpit
Bun 太棒了
MadMax
1 月 3 日
@dr__madmax
@bunjavascript 尚未獲得它應得的足夠讚賞。
Baggi/e
1 月 3 日
@ManiSohi
高效能 TS/JS 後端需要更多愛護,Elysia 獲勝
Michael Feldstein
12 月 18 日
@msfeldstein
靠北 Bun 是解決方案,可以擺脫整天擺弄 typescript/module/commonjs/import 的狗屎,並直接執行腳本
Sainder
1 月 17 日
@Sainder_Pradipt
Bun
Lic
1 月 18 日
@Lik228
bun
Martin Navrátil
1 月 17 日
@martin_nav_
Bun....
SaltyAom
1 月 17 日
@saltyAom
bun
reaxios
1 月 17 日
@reaxios
bun install bun
kyge
1 月 17 日
@0xkyge
bun
James Landrum
1 月 17 日
@JamesRLandrum
Node
orlowdev
1 月 17 日
@orlowdev
是啊,bun,但我的程式碼沒有依賴項。
hola
1 月 17 日
@jdggggyujhbc
bun
std::venom
1 月 17 日
@std_venom
Bun
tiago
1 月 19 日
@tiagorangel23
應該使用 Bun 而不是 npm
46officials
1 月 19 日
@46officials
Bun
yuki
1 月 19 日
@staticdots
Bun
Stefan
1 月 17 日
@stefangarofalo
Bun
Samuel
1 月 17 日
@samueldans0
永遠 Bun
Divin Prince
1 月 17 日
@divinprnc
是啊 Bun
Gibson
1 月 16 日
@GibsonSMurray
bun
Oggie Sutrisna
1 月 16 日
@oggiesutrisna
bun
emanon
1 月 16 日
@0x_emanon
✅ bun
yuki
1 月 16 日
@staticdots
bun
SpiritBear
1 月 16 日
@0xSpiritBear
bun
Ayu
1 月 12 日
@Ayuu2809
Bun good 🧅
Hirbod
1 月 19 日
@hirbod_dev
適用於一切。是的。我甚至使用 bunx expo run:ios 等執行
Luis Paolini
1 月 18 日
@DigitalLuiggi
只需使用 @bunjavascript
buraks
1 月 18 日
@buraks____
我使用 bun patch 而且我喜歡它!
fahadali
1 月 8 日
@fahadali503
Bun
Aiden Bai
1 月 1 日
@aidenybai
2025 年將是 JS/TS 年,而 @bunjavascript 就是原因
Catalin
1 月 1 日
@catalinmpit
Bun 太棒了
MadMax
1 月 3 日
@dr__madmax
@bunjavascript 尚未獲得它應得的足夠讚賞。
Baggi/e
1 月 3 日
@ManiSohi
高效能 TS/JS 後端需要更多愛護,Elysia 獲勝
Michael Feldstein
12 月 18 日
@msfeldstein
靠北 Bun 是解決方案,可以擺脫整天擺弄 typescript/module/commonjs/import 的狗屎,並直接執行腳本

從範例中學習。

我們的指南分解了如何使用 Bun 執行常見任務。