Skip to content

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.

ps1
> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

Dependências do Sistema

Bun v1.1 ou posterior. Usamos o Bun para executar seus próprios geradores de código.

ps1
> irm bun.sh/install.ps1 | iex

Visual 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:

ps1
> winget install "Visual Studio Community 2022" --override "--add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.Component.Git " -s msstore

Apó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.

ps1
> 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.7

NOTE

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:

ps1
> scoop install make cygwin python

A 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:

ps1
> .\scripts\vs-shell.ps1

Para verificar, você pode procurar por um comando apenas MSVC como mt.exe:

ps1
> Get-Command mt

NOTE

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

ps1
> bun run build

# após o `bun run build` inicial você pode usar o seguinte para compilar
> ninja -Cbuild/debug

Se isso foi bem-sucedido, você deve ter um bun-debug.exe na pasta build/debug.

ps1
> .\build\debug\bun-debug.exe --revision

Você 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.

ps1
# 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?

Bun by www.bunjs.com.cn edit