Questo documento descrive il processo di compilazione per Windows. In caso di problemi, unisciti al #contributing channel sul nostro Discord per ricevere aiuto.
È fortemente raccomandato usare PowerShell 7 (pwsh.exe) invece di powershell.exe predefinito.
Prerequisiti
Abilitare gli Script
Per impostazione predefinita, l'esecuzione di script non verificati è bloccata.
> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy UnrestrictedDipendenze di Sistema
Bun v1.1 o successivo. Usiamo Bun per eseguire i suoi generatori di codice.
> irm bun.sh/install.ps1 | iexVisual Studio con il workload "Desktop Development with C++". Durante l'installazione, assicurati di installare anche Git, se Git per Windows non è già installato.
Visual Studio può essere installato graficamente usando la procedura guidata o tramite WinGet:
> winget install "Visual Studio Community 2022" --override "--add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.Component.Git " -s msstoreDopo Visual Studio, hai bisogno di quanto segue:
- LLVM 19.1.7
- Go
- Rust
- NASM
- Perl
- Ruby
- Node.js
NOTE
Il compilatore Zig viene scaricato, installato e aggiornato automaticamente dal processo di compilazione.Scoop può essere usato per installare facilmente questi strumenti rimanenti.
> irm https://get.scoop.sh | iex
> scoop install nodejs-lts go rust nasm ruby perl sccache
# scoop sembra avere bug se installi llvm e il resto contemporaneamente
> scoop install llvm@19.1.7NOTE
Non usare WinGet o altri package manager per questi, poiché probabilmente installerai Strawberry Perl invece di un'installazione più minimale di Perl. Strawberry Perl include molte altre utility che vengono installate in `$Env:PATH` e andranno in conflitto con MSVC e interromperanno la compilazione.Se intendi compilare WebKit localmente (opzionale), dovresti installare questi pacchetti:
> scoop install make cygwin pythonDa qui in poi, è previsto che tu usi un terminale PowerShell con .\scripts\vs-shell.ps1 caricato. Questo script è disponibile nel repository di Bun e può essere caricato eseguendolo:
> .\scripts\vs-shell.ps1Per verificare, puoi controllare un comando da riga di comando solo MSVC come mt.exe:
> Get-Command mtNOTE
Non è raccomandato installare `ninja` / `cmake` nel tuo percorso globale, perché potresti trovarti in una situazione in cui provi a compilare bun senza aver caricato .\scripts\vs-shell.ps1.Compilazione
> bun run build
# dopo la prima `bun run build` puoi usare quanto segue per compilare
> ninja -Cbuild/debugSe questo ha avuto successo, dovresti avere un bun-debug.exe nella cartella build/debug.
> .\build\debug\bun-debug.exe --revisionDovresti aggiungere questo a $Env:PATH. Il modo più semplice per farlo è aprire il menu start, digitare "Path", quindi navigare nel menu delle variabili d'ambiente per aggiungere C:\.....\bun\build\debug alla variabile d'ambiente utente PATH. Dovresti quindi riavviare il tuo editor (se non si aggiorna ancora, disconnettiti e riaccedi).
Percorsi extra
- WebKit viene estratto in
build/debug/cache/webkit/ - Zig viene estratto in
build/debug/cache/zig/bin/zig.exe
Test
Puoi eseguire la suite di test usando bun test <percorso> o usando lo script wrapper bun node:test <percorso>. Il comando bun node:test esegue ogni file di test in un'istanza separata di bun.exe, per impedire che un arresto anomalo nel test runner interrompa l'intera suite.
# Configurazione
> bun i --cwd packages\bun-internal-test
# Esegui l'intera suite di test con reporter
# lo script "test" del package.json usa "build/debug/bun-debug.exe" per impostazione predefinita
> bun run test
# Esegui un singolo file di test:
> bun-debug test node\fs
> bun-debug test "C:\bun\test\js\bun\resolve\import-meta.test.js"Risoluzione dei problemi
Il file .rc non riesce a compilare
llvm-rc.exe è strano. Non usarlo. Usa rc.exe, per farlo assicurati di essere in un terminale di sviluppo di Visual Studio, controlla rc /? per assicurarti che sia Microsoft Resource Compiler
Impossibile scrivere 'bun-debug.exe': autorizzazione negata
Non puoi sovrascrivere bun-debug.exe se è già aperto. Probabilmente hai un'istanza in esecuzione, forse nel debugger di vscode?