Este documento describe el proceso de compilación para Windows. Si encuentras problemas, únete al canal #contributing en nuestro Discord para obtener ayuda.
Se recomienda encarecidamente usar PowerShell 7 (pwsh.exe) en lugar del powershell.exe predeterminado.
Prerrequisitos
Habilitar scripts
De forma predeterminada, la ejecución de scripts no verificados está bloqueada.
> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy UnrestrictedDependencias del sistema
Bun v1.1 o posterior. Usamos Bun para ejecutar sus propios generadores de código.
> irm bun.sh/install.ps1 | iexVisual Studio con la carga de trabajo "Desarrollo de escritorio con C++". Al instalar, asegúrate de instalar Git también, si Git para Windows no está instalado.
Visual Studio se puede instalar gráficamente usando el asistente o a través de WinGet:
> winget install "Visual Studio Community 2022" --override "--add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.Component.Git " -s msstoreDespués de Visual Studio, necesitas lo siguiente:
- LLVM 19.1.7
- Go
- Rust
- NASM
- Perl
- Ruby
- Node.js
NOTE
El compilador Zig se descarga, instala y actualiza automáticamente durante el proceso de compilación.Scoop se puede usar para instalar estas herramientas restantes fácilmente.
> irm https://get.scoop.sh | iex
> scoop install nodejs-lts go rust nasm ruby perl sccache
# scoop parece tener errores si instalas llvm y el resto al mismo tiempo
> scoop install llvm@19.1.7NOTE
No uses WinGet/otro gestor de paquetes para esto, ya que probablemente instalarás Strawberry Perl en lugar de una instalación más minimalista de Perl. Strawberry Perl incluye muchas otras utilidades que se instalan en `$Env:PATH` que entrarán en conflicto con MSVC y romperán la compilación.Si tienes la intención de compilar WebKit localmente (opcional), debes instalar estos paquetes:
> scoop install make cygwin pythonA partir de aquí, se espera que uses una terminal de PowerShell con .\scripts\vs-shell.ps1 cargado como fuente. Este script está disponible en el repositorio de Bun y se puede cargar ejecutándolo:
> .\scripts\vs-shell.ps1Para verificar, puedes buscar un comando exclusivo de MSVC como mt.exe
> Get-Command mtNOTE
No se recomienda instalar `ninja` / `cmake` en tu ruta global, porque puedes encontrarte en una situación donde intentas compilar bun sin haber cargado .\scripts\vs-shell.ps1 como fuente.Compilación
> bun run build
# después de la `bun run build` inicial puedes usar lo siguiente para compilar
> ninja -Cbuild/debugSi esto fue exitoso, deberías tener un bun-debug.exe en la carpeta build/debug.
> .\build\debug\bun-debug.exe --revisionDeberías agregar esto a $Env:PATH. La forma más simple de hacerlo es abrir el menú de inicio, escribir "Path", y luego navegar al menú de variables de entorno para agregar C:\.....\bun\build\debug a la variable de entorno de usuario PATH. Luego debes reiniciar tu editor (si no se actualiza aún, cierra sesión y vuelve a iniciar).
Rutas adicionales
- WebKit se extrae en
build/debug/cache/webkit/ - Zig se extrae en
build/debug/cache/zig/bin/zig.exe
Pruebas
Puedes ejecutar la suite de pruebas usando bun test <path> o usando el script de envoltura bun node:test <path>. El comando bun node:test ejecuta cada archivo de prueba en una instancia separada de bun.exe, para evitar que un bloqueo en el ejecutor de pruebas detenga toda la suite.
# Configuración
> bun i --cwd packages\bun-internal-test
# Ejecutar toda la suite de pruebas con reporter
# el script "test" del package.json usa "build/debug/bun-debug.exe" de forma predeterminada
> bun run test
# Ejecutar un archivo de prueba individual:
> bun-debug test node\fs
> bun-debug test "C:\bun\test\js\bun\resolve\import-meta.test.js"Solución de problemas
El archivo .rc falla al compilar
llvm-rc.exe es extraño. no lo uses. usa rc.exe, para hacer esto asegúrate de estar en una terminal de desarrollo de visual studio, verifica rc /? para asegurarte de que es Microsoft Resource Compiler
Error al escribir 'bun-debug.exe': permiso denegado
no puedes sobrescribir bun-debug.exe si ya está abierto. probablemente tengas una instancia en ejecución, quizás en el depurador de vscode?