本文档描述了 Windows 上的构建过程。如果遇到问题,请加入 我们的 Discord 上的 #contributing 频道 寻求帮助。
强烈建议使用 PowerShell 7 (pwsh.exe) 而不是默认的 powershell.exe。
前置要求
启用脚本
默认情况下,运行未经验证的脚本会被阻止。
> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted系统依赖
Bun v1.1 或更高版本。我们使用 Bun 来运行它自己的代码生成器。
> irm bun.sh/install.ps1 | iexVisual Studio 并安装 "使用 C++ 的桌面开发" 工作负载。安装时,如果尚未安装 Git for Windows,请确保同时安装 Git。
Visual Studio 可以使用向导图形化安装,也可以通过 WinGet 安装:
> 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 可用于轻松安装这些剩余的工具。
> irm https://get.scoop.sh | iex
> scoop install nodejs-lts go rust nasm ruby perl sccache
# scoop 似乎有 bug,如果你同时安装 llvm 和其他工具
> scoop install llvm@19.1.7NOTE
请不要使用 WinGet/其他包管理器安装这些,因为你很可能会安装 Strawberry Perl 而不是更 精简的 Perl 安装。Strawberry Perl 包含许多其他会安装到 `$Env:PATH` 的工具,这些工具 会与 MSVC 冲突并破坏构建。如果你打算在本地构建 WebKit(可选),你应该安装这些包:
> scoop install make cygwin python从这里开始,预期你使用 PowerShell 终端并加载 .\scripts\vs-shell.ps1。这个脚本在 Bun 仓库中可用,可以通过执行它来加载:
> .\scripts\vs-shell.ps1要验证,你可以检查仅限 MSVC 的命令行工具如 mt.exe
> Get-Command mtNOTE
不建议将 `ninja` / `cmake` 安装到你的全局路径中,因为你可能会遇到在没有加载 .\scripts\vs-shell.ps1 的情况下 尝试构建 bun 的情况。构建
> bun run build
# 在初次 `bun run build` 之后,你可以使用以下命令构建
> ninja -Cbuild/debug如果成功,你应该在 build/debug 文件夹中有一个 bun-debug.exe。
> .\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 实例中运行每个测试文件,以防止测试运行器中的崩溃停止整个套件。
# 设置
> 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 调试器中?