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整理维护