Bun

Bun v1.0.1


Jarred Sumner · 2023 年 9 月 12 日

Bun v1.0.1 為 .json 和 .toml 檔案新增了具名匯入,修復了 bun installerror.PathAlreadyExists 的錯誤,修復了在 bun build --compile 中匯入 node: builtins 的錯誤,修復了 node:path 中 relative() 的錯誤,修復了 bun 會載入錯誤 .env 檔案的錯誤,修復了會在 bun run <package.json script> 中載入 tsconfig.json 的錯誤,修復了 path.parse() 錯誤,並修復了建置錯誤會印出兩次的錯誤。

感謝您回報問題。我們正努力盡快修復它們。

Bun 是一個速度極快的 JavaScript 執行時環境、打包器、轉譯器和套件管理器,集所有功能於一身。我們最近發布了許多 Bun 的變更。以下是最近幾個版本的重點回顧。如果您錯過了

  • v1.0.0 - Bun 的第一個穩定版本!

安裝 Bun

curl
npm
brew
docker
curl
curl -fsSL https://bun.dev.org.tw/install | bash
npm
npm install -g 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

.json 和 .toml 檔案的具名匯入

當您在 Bun 中匯入 .json 或 .toml 檔案時,您現在可以直接匯入頂層鍵。

import { name, version } from "./package.json";

console.log({ name, version }); // { name: "bun", version: "1.0.1" }

先前僅支援預設匯出。

import pkg from "./package.json";
const { name, version } = pkg;

console.log({ name, version }); // { name: "bun", version: "1.0.1" }

即使 tsconfig.json 檔案中有註解,您也可以匯入它們。這在內部使用了 Bun 的 JSONC 解析器。

import { paths } from "./tsconfig.json";

console.log(paths); // { "paths": { "b": ["./a.js"] } }

如果您願意,可以繼續使用預設匯出。具名匯入值與預設匯出在相同鍵的值 ===

import boop, { array } from "./file.json";

console.log(boop.array === array); // true

所有這些也適用於 require

bun install 錯誤與 error.PathAlreadyExists

修復了一個錯誤,當透過硬連結安裝套件時,bun install 會因 error.PathAlreadyExists 而失敗。

修復了在 bun build --compile 中匯入 node: builtins 的錯誤

Bun 1.0 新增了一個回歸錯誤,導致在 bun build --compile 中匯入 node: builtins 會失敗。此問題已修復。

// This failed in `bun build --compile`! It should not have.
import "node:fs/promises";

node:path 中 relative() 的錯誤

先前,以下程式碼會印出 ""

console.log(path.relative("../", "../../"));

現在它會正確印出 ..,感謝 @Hanaasagi

bun 會載入錯誤 .env 檔案的錯誤

當您在巢狀 bun run package.json 指令碼中執行 bun 時,bun 可能會載入錯誤的 NODE_ENV 變數。此問題已修復。

https://github.com/oven-sh/bun/pull/4630

不再在 bun run <package.json script> 中載入 tsconfig.json

先前,當執行 package.json 指令碼時,bun 會在目前工作目錄中載入 tsconfig.json 檔案。沒有必要這樣做。這只是浪費您的時間。我們不應該那樣做。所以我們不會為 package.json "scripts" 載入 tsconfig.json。請注意,我們仍然會為執行時環境載入它,只是不會在執行 package.json 指令碼時載入。

建置錯誤重複印出的錯誤

修復了一個建置錯誤會印出兩次的錯誤。

macOS 上 Bun.file() .slice 位移的錯誤

修復了一個錯誤,在某些情況下,當使用 .slice() 位移緩衝區時,Bun.file().text() 不會將資料搜尋到預期的位置

Buffer.from 與 UTF-16 編碼的十六進位

修復了一個錯誤,Buffer.from 無法正確處理來自 UTF-16 編碼來源的十六進位字串。

感謝 @Hanaasagi 修復此問題。

使用 NODE_TLS_REJECT_UNAUTHORIZED 停用 TLS 驗證

Bun 現在支援使用 NODE_TLS_REJECT_UNAUTHORIZED 停用 TLS 驗證。這對於測試很有用,但不應在生產環境中使用。

設定 NODE_TLS_REJECT_UNAUTHORIZED=0 以停用 TLS 驗證。

NODE_TLS_REJECT_UNAUTHORIZED=0 bun run ./server.js

感謝 @cirospaciari

path.parse() 錯誤

path.parse() 函數無法正確複製輸出字串。此問題已修復,感謝 @davidmhewitt