Skip to content

本文檔描述了 Windows 上的構建過程。如果遇到問題,請加入 我們的 Discord 上的 #contributing 頻道 尋求幫助。

強烈建議使用 PowerShell 7 (pwsh.exe) 而不是默認的 powershell.exe

前置要求

啟用腳本

默認情況下,運行未經驗證的腳本會被阻止。

ps1
> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

系統依賴

Bun v1.1 或更高版本。我們使用 Bun 來運行它自己的代碼生成器。

ps1
> irm bun.sh/install.ps1 | iex

Visual Studio 並安裝 "使用 C++ 的桌面開發" 工作負載。安裝時,如果尚未安裝 Git for Windows,請確保同時安裝 Git。

Visual Studio 可以使用向導圖形化安裝,也可以通過 WinGet 安裝:

ps1
> winget install "Visual Studio Community 2022" --override "--add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.Component.Git " -s msstore

安裝 Visual Studio 後,你需要以下工具:

  • LLVM 19.1.7
  • Go
  • Rust
  • NASM
  • Perl
  • Ruby
  • Node.js

NOTE

Zig 編譯器會自動下載、安裝和更新由構建過程完成。

Scoop 可用於輕松安裝這些剩余的工具。

ps1
> irm https://get.scoop.sh | iex
> scoop install nodejs-lts go rust nasm ruby perl sccache
# scoop 似乎有 bug,如果你同時安裝 llvm 和其他工具
> scoop install llvm@19.1.7

NOTE

請不要使用 WinGet/其他包管理器安裝這些,因為你很可能會安裝 Strawberry Perl 而不是更 精簡的 Perl 安裝。Strawberry Perl 包含許多其他會安裝到 `$Env:PATH` 的工具,這些工具 會與 MSVC 沖突並破壞構建。

如果你打算在本地構建 WebKit(可選),你應該安裝這些包:

ps1
> scoop install make cygwin python

從這裡開始,預期你使用 PowerShell 終端並加載 .\scripts\vs-shell.ps1。這個腳本在 Bun 倉庫中可用,可以通過執行它來加載:

ps1
> .\scripts\vs-shell.ps1

要驗證,你可以檢查僅限 MSVC 的命令行工具如 mt.exe

ps1
> Get-Command mt

NOTE

不建議將 `ninja` / `cmake` 安裝到你的全局路徑中,因為你可能會遇到在沒有加載 .\scripts\vs-shell.ps1 的情況下 嘗試構建 bun 的情況。

構建

ps1
> bun run build

# 在初次 `bun run build` 之後,你可以使用以下命令構建
> ninja -Cbuild/debug

如果成功,你應該在 build/debug 文件夾中有一個 bun-debug.exe

ps1
> .\build\debug\bun-debug.exe --revision

你應該將這個添加到 $Env:PATH。最簡單的方法是打開開始菜單,輸入 "Path",然後導航到環境變量菜單,將 C:\.....\bun\build\debug 添加到用戶環境變量 PATH 中。然後你應該重啟你的編輯器(如果仍然沒有更新,注銷並重新登錄)。

額外路徑

  • WebKit 提取到 build/debug/cache/webkit/
  • Zig 提取到 build/debug/cache/zig/bin/zig.exe

測試

你可以使用 bun test <path> 或使用包裝腳本 bun node:test <path> 運行測試套件。bun node:test 命令在單獨的 bun.exe 實例中運行每個測試文件,以防止測試運行器中的崩潰停止整個套件。

ps1
# 設置
> bun i --cwd packages\bun-internal-test

# 使用報告器運行整個測試套件
# package.json 腳本 "test" 默認使用 "build/debug/bun-debug.exe"
> bun run test

# 運行單個測試文件:
> bun-debug test node\fs
> bun-debug test "C:\bun\test\js\bun\resolve\import-meta.test.js"

故障排除

.rc 文件構建失敗

llvm-rc.exe 很奇怪。不要使用它。使用 rc.exe,要做到這一點,請確保你在 Visual Studio 開發終端中,檢查 rc /? 確保它是 Microsoft Resource Compiler

無法寫入輸出 'bun-debug.exe':權限被拒絕

如果 bun-debug.exe 已經打開,你無法覆蓋它。你可能有一個正在運行的實例,也許在 vscode 調試器中?

Bun學習網由www.bunjs.com.cn整理維護