Este documento descreve o processo de compilação para Windows. Se encontrar problemas, junte-se ao #contributing channel no nosso Discord para obter ajuda.
É fortemente recomendado usar PowerShell 7 (pwsh.exe) em vez do powershell.exe padrão.
Pré-requisitos
Habilitar Scripts
Por padrão, a execução de scripts não verificados é bloqueada.
> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy UnrestrictedDependências do Sistema
Bun v1.1 ou posterior. Usamos o Bun para executar seus próprios geradores de código.
> irm bun.sh/install.ps1 | iexVisual Studio com a carga de trabalho "Desenvolvimento para C++". Ao instalar, certifique-se de instalar o Git também, caso o Git for Windows não esteja já instalado.
O Visual Studio pode ser instalado graficamente usando o assistente ou através do WinGet:
> winget install "Visual Studio Community 2022" --override "--add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.Component.Git " -s msstoreApós o Visual Studio, você precisa do seguinte:
- LLVM 19.1.7
- Go
- Rust
- NASM
- Perl
- Ruby
- Node.js
NOTE
O compilador Zig é automaticamente baixado, instalado e atualizado pelo processo de compilação.Scoop pode ser usado para instalar essas ferramentas restantes facilmente.
> irm https://get.scoop.sh | iex
> scoop install nodejs-lts go rust nasm ruby perl sccache
# scoop parece ter bugs se você instalar llvm e o resto ao mesmo tempo
> scoop install llvm@19.1.7NOTE
Por favor, não use WinGet/outro gerenciador de pacotes para isso, pois você provavelmente instalará o Strawberry Perl em vez de uma instalação mais minimalista do Perl. O Strawberry Perl inclui muitas outras utilitários que são instalados no `$Env:PATH` que entrarão em conflito com o MSVC e quebrarão a compilação.Se pretende compilar o WebKit localmente (opcional), você deve instalar estes pacotes:
> scoop install make cygwin pythonA partir daqui, é esperado que você use um Terminal PowerShell com .\scripts\vs-shell.ps1 carregado. Este script está disponível no repositório do Bun e pode ser carregado executando-o:
> .\scripts\vs-shell.ps1Para verificar, você pode procurar por um comando apenas MSVC como mt.exe:
> Get-Command mtNOTE
Não é recomendado instalar `ninja` / `cmake` no seu caminho global, porque você pode encontrar uma situação onde tenta compilar o bun sem `.\scripts\vs-shell.ps1` carregado.Compilando
> bun run build
# após o `bun run build` inicial você pode usar o seguinte para compilar
> ninja -Cbuild/debugSe isso foi bem-sucedido, você deve ter um bun-debug.exe na pasta build/debug.
> .\build\debug\bun-debug.exe --revisionVocê deve adicionar isso ao $Env:PATH. A maneira mais simples de fazer isso é abrir o menu iniciar, digitar "Path", e depois navegar até o menu de variáveis de ambiente para adicionar C:\.....\bun\build\debug à variável de ambiente do usuário PATH. Você deve então reiniciar seu editor (se ainda não atualizar, faça log out e log in novamente).
Caminhos extras
- O WebKit é extraído para
build/debug/cache/webkit/ - O Zig é extraído para
build/debug/cache/zig/bin/zig.exe
Testes
Você pode executar a suíte de testes usando bun test <caminho> ou usando o script wrapper bun node:test <caminho>. O comando bun node:test executa cada arquivo de teste em uma instância separada do bun.exe, para evitar que uma falha no executor de teste pare toda a suíte.
# Configuração
> bun i --cwd packages\bun-internal-test
# Executar toda a suíte de testes com reporter
# o script "test" do package.json usa "build/debug/bun-debug.exe" por padrão
> bun run test
# Executar um arquivo de teste individual:
> bun-debug test node\fs
> bun-debug test "C:\bun\test\js\bun\resolve\import-meta.test.js"Solução de Problemas
Arquivo .rc falha ao compilar
llvm-rc.exe é estranho. não o use. use rc.exe, para fazer isso certifique-se de estar em um terminal de desenvolvimento do visual studio, verifique rc /? para garantir que é Microsoft Resource Compiler
falha ao escrever saída 'bun-debug.exe': permissão negada
você não pode sobrescrever bun-debug.exe se ele já estiver aberto. você provavelmente tem uma instância em execução, talvez no depurador do vscode?