Bun

Bun v1.1.33


Dylan Conway · 2024 年 10 月 24 日

我們正在舊金山招聘系統工程師,以建構 JavaScript 的未來!

此版本修正了 8 個錯誤,包括:與導入發生 JSX 符號衝突、bun install 速度減慢、跳過可選依賴項、可選依賴項安裝後失敗,以及 CSS 解析器中的斷言失敗。

安裝 Bun

curl
npm
powershell
scoop
brew
docker
curl
curl -fsSL https://bun.dev.org.tw/install | bash
npm
npm install -g bun
powershell
powershell -c "irm bun.sh/install.ps1|iex"
scoop
scoop install bun
brew
brew tap oven-sh/bun
brew install bun
docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun

升級 Bun

bun upgrade

已修正:NPM_CONFIG_TOKEN 環境變數

修正了由於小寫字母而無法讀取 NPM_CONFIG_TOKEN 環境變數的錯誤。差異之處在於

-  "NPM_CONFIG_token",
+  "NPM_CONFIG_TOKEN",

減少 bun install 最大同時連線數

bun install 預設使用的最大同時網路連線數為 256。一次允許這麼多連線可能會在擷取依賴項 tarball 和 manifest 時導致安裝速度減慢。我們已將預設值減少到 64,無論有無 Proxy 皆是如此。

已修正:bunfig.toml 中的 optional = false

我們的文件提到在 bunfig.toml 中設定 optional = false 將會跳過安裝期間的可選依賴項,但實作中缺少了此功能。現在此功能已如預期般運作,感謝 @Eckhardt-D

bunfig.toml
[install]
optional = false

安裝後失敗時刪除可選依賴項

當可選依賴項生命週期腳本失敗時,bun 現在將忽略錯誤並繼續安裝。此外,目錄將從 node_modules 中刪除,以防止使用半安裝套件時發生意外錯誤。

感謝 @dylan-conway 的修正!

已修正:JSX 符號衝突

修正了一個錯誤,其中與 JSX 符號共用相同名稱的導入會導致 bun 無法在轉譯的輸出中包含 JSX 導入來源,從而導致參考錯誤。例如,在 hono 儲存庫中執行測試

bun test runtime-tests/bun/index.test.tsx

✗ JSX Middleware > Should return rendered HTML with Layout [0.12ms]
254 |     app.post('/about/some/thing', (c) => c.text('About Page 3tier'))
255 |     app.get('/bravo', (c) => c.html('Bravo Page'))
256 |     app.get('/Charlie', async (c, next) => {
257 |       c.setRenderer((content, head) => {
258 |         return c.html(
259 |           <html>
                ^
ReferenceError: Can't find variable: jsx
      at /Users/dylan/code/hono/runtime-tests/bun/index.test.tsx:259:11
      at /Users/dylan/code/hono/src/compose.ts:74:23

感謝 @snoglobe 的修正!

已修正:CSS 解析器中的斷言失敗

CSS 解析器中的雜湊函數在未告知 zig 安全性檢查忽略截斷非零位元的情況下,將 u64 轉換為 u32。透過使用 @truncate zig 內建函數修正了此問題。

模組解析錯誤訊息中的單引號

當 bun 無法解析模組或套件時,錯誤訊息已變更為使用單引號而不是雙引號。這修正了 optional-require 套件,該套件會檢查以單引號括住的套件名稱。

index.js
require('does-not-exist');
// before: Cannot find package "does-not-exist" from "/path/to/index.js"
// after:  Cannot find package 'does-not-exist' from '/path/to/index.js'

感謝 @nektro 的修正!

感謝 10 位貢獻者!