Skip to content

이 문서는 Windows 의 빌드 프로세스를 설명합니다. 문제가 발생하면 도움을 위해 Discord 의 #contributing 채널 에 참여하세요.

기본 powershell.exe 대신 PowerShell 7(pwsh.exe) 을 사용하는 것을 강력히 권장합니다.

사전 요구사항

스크립트 활성화

기본적으로 검증되지 않은 스크립트 실행이 차단됩니다.

ps1
> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

시스템 종속성

Bun v1.1 이상이 필요합니다. 자체 코드 생성기를 실행하기 위해 Bun 을 사용합니다.

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

"Desktop Development with C++" 워크로드가 포함된 Visual Studio 가 필요합니다. 설치하는 동안 Git for Windows 가 아직 설치되지 않은 경우 Git 도 함께 설치하세요.

Visual Studio 는 마법사를 사용하여 그래픽 방식으로 설치하거나 WinGet 을 통해 설치할 수 있습니다.

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

Visual Studio 설치 후 다음이 필요합니다.

  • LLVM 19.1.7
  • Go
  • Rust
  • NASM
  • Perl
  • Ruby
  • Node.js

NOTE

Zig 컴파일러는 빌드 프로세스에 의해 자동으로 다운로드, 설치 및 업데이트됩니다.

Scoop 을 사용하여 이러한 나머지 도구를 쉽게 설치할 수 있습니다.

ps1
> irm https://get.scoop.sh | iex
> scoop install nodejs-lts go rust nasm ruby perl sccache
# scoop 는 llvm 과 나머지를 동시에 설치하면 버그가 발생할 수 있습니다
> scoop install llvm@19.1.7

NOTE

WinGet/기타 패키지 매니저를 사용하지 마세요. 최소 Perl 설치 대신 Strawberry Perl 이 설치될 가능성이 높으며, Strawberry Perl 은 `$Env:PATH` 에 설치되는 많은 유틸리티를 포함하여 MSVC 와 충돌하고 빌드를 중단시킵니다.

로컬에서 WebKit 을 빌드하려는 경우 (선택 사항), 다음 패키지를 설치해야 합니다.

ps1
> scoop install make cygwin python

이 시점부터 .\scripts\vs-shell.ps1 이 소스된 PowerShell 터미널을 사용해야 합니다. 이 스크립트는 Bun 저장소에 있으며 실행하여 로드할 수 있습니다.

ps1
> .\scripts\vs-shell.ps1

검증하려면 mt.exe 와 같은 MSVC 전용 명령줄을 확인하세요.

ps1
> Get-Command mt

NOTE

`ninja` / `cmake` 를 전역 경로에 설치하지 않는 것이 좋습니다. .\scripts\vs-shell.ps1 이 소스되지 않은 상태에서 bun 을 빌드하려는 상황에 직면할 수 있습니다.

빌드하기

ps1
> bun run build

# 초기 `bun run build` 이후 다음을 사용하여 빌드할 수 있습니다
> ninja -Cbuild/debug

성공했다면 build/debug 폴더에 bun-debug.exe 가 있어야 합니다.

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

이것을 $Env:PATH 에 추가해야 합니다. 가장 간단한 방법은 시작 메뉴를 열고 "Path"를 입력한 다음 환경 변수 메뉴로 이동하여 사용자 환경 변수 PATHC:\.....\bun\build\debug 를 추가하는 것입니다. 그런 다음 편집기를 다시 시작해야 합니다 (여전히 업데이트되지 않으면 로그아웃했다가 다시 로그인하세요).

추가 경로

  • WebKit 은 build/debug/cache/webkit/ 에 추출됩니다
  • Zig 는 build/debug/cache/zig/bin/zig.exe 에 추출됩니다

테스트

bun test <path> 를 사용하거나 래퍼 스크립트 bun node:test <path> 를 사용하여 테스트 스위트러ンを 실행할 수 있습니다. bun node:test 명령은 테스트 러너의 충돌이 전체 스위트러ンを 중단시키지 않도록 각 테스트 파일을 별도의 bun.exe 인스턴스에서 실행합니다.

ps1
# 설정
> bun i --cwd packages\bun-internal-test

# 리포터와 함께 전체 테스트 스위트러ン 실행
# package.json 스크립트 "test" 는 기본적으로 "build/debug/bun-debug.exe" 를 사용합니다
> bun run test

# 개별 테스트 파일 실행:
> bun-debug test node\fs
> bun-debug test "C:\bun\test\js\bun\resolve\import-meta.test.js"

문제 해결

.rc 파일 빌드 실패

llvm-rc.exe 는 특이합니다. 사용하지 마세요. rc.exe 를 사용하세요. 이를 위해 비주얼 스튜디오 개발 터미널에 있는지 확인하고 rc /? 를 확인하여 Microsoft Resource Compiler 인지 확인하세요.

failed to write output 'bun-debug.exe': permission denied

bun-debug.exe 가 이미 열려 있으면 덮어쓸 수 없습니다. 실행 중인 인스턴스가 있을 가능성이 높습니다. 아마도 vscode 디버거에서 실행 중일 수 있나요?

Bun by www.bunjs.com.cn 편집