本文档介绍了 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
scoop [email protected]
如果您打算在本地构建 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 调试器中?