Bun

构建 Windows

本文档介绍了 Windows 的构建过程。如果您遇到问题,请加入我们的 Discord 上的 #windows 频道 以寻求帮助。

强烈建议使用 PowerShell 7 (pwsh.exe),而不是默认的 powershell.exe

先决条件

启用脚本

默认情况下,运行未验证的脚本会被阻止。

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

系统依赖项

  • Bun 1.1 或更高版本。我们使用 Bun 来运行自己的代码生成器。
irm bun.sh/install.ps1 | iex
  • Visual Studio,带有“使用 C++ 进行桌面开发”工作负载。
    • 如果尚未安装,请从该安装程序安装 Git 和 CMake。

在 Visual Studio 之后,您需要以下内容

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

Zig 编译器由构建过程自动下载、安装和更新。

Scoop 可用于轻松安装这些剩余工具

irm https://get.scoop.sh | iex
scoop install nodejs-lts go rust nasm ruby perl
# scoop seems to be buggy if you install llvm and the rest at the same time

如果您打算在本地构建 WebKit(可选),您应该安装这些包

scoop install make cygwin python

从现在开始,您应该使用带有 .\scripts\env.ps1 源的 PowerShell 终端。此脚本可在 Bun 存储库中找到,可以通过执行它来加载

.\scripts\env.ps1

要验证,您可以检查 MSVC 专用命令行,例如 mt.exe

Get-Command mt

不建议将 ninja / cmake 安装到您的全局路径中,因为您可能会遇到这种情况,即您尝试在没有 .\scripts\env.ps1 源的情况下构建 bun。

构建

bun install
.\scripts\env.ps1
.\scripts\update-submodules.ps1 # this syncs git submodule state
.\scripts\all-dependencies.ps1 # this builds all dependencies
.\scripts\make-old-js.ps1 # runs some old code generators

# Configure build environment
cmake -Bbuild -GNinja -DCMAKE_BUILD_TYPE=Debug

# Build bun
ninja -Cbuild

如果成功,您应该在 build 文件夹中有一个 bun-debug.exe

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

您应该将其添加到 $Env:PATH。最简单的方法是打开开始菜单,键入“Path”,然后导航到环境变量菜单,将 C:\.....\bun\build 添加到用户环境变量 PATH。然后您应该重新启动编辑器(如果仍然没有更新,请注销并重新登录)。

其他路径

  • WebKit 提取到 build/bun-webkit
  • Zig 提取到 .cache/zig/zig.exe

测试

您可以使用 bun test 或使用包装脚本 packages\bun-internal-test 运行测试套件。内部测试包是一个包装 cli,用于在 bun.exe 的单独实例中运行每个测试文件,以防止测试运行器中的崩溃停止整个套件。

# Setup
bun i --cwd packages\bun-internal-test

# Run the entire test suite with reporter
# the package.json script "test" uses "build/bun-debug.exe" by default
bun run test

# Run an individual test file:
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 资源编译器

无法写入输出“bun-debug.exe”:权限被拒绝

如果 bun-debug.exe 已打开,则无法覆盖它。您可能有一个正在运行的实例,也许在 vscode 调试器中?