deno.com
本頁面內容

從原始碼建置 deno

以下說明如何從原始碼建置 Deno。如果您只想使用 Deno,您可以下載預先建置的可執行檔(更多資訊請參閱開始使用章節)。

複製儲存庫 跳到標題

注意

Deno 使用子模組,因此您必須記得使用 --recurse-submodules 進行複製。

Linux(Debian)/Mac/WSL

git clone --recurse-submodules https://github.com/denoland/deno.git

Windows:

  1. 啟用「開發人員模式」(否則符號連結需要管理員權限)。

  2. 請確保您使用的 git 版本為 2.19.2.windows.1 或更新版本。

  3. 在 checkout 之前設定 core.symlinks=true

    git config --global core.symlinks true
    git clone --recurse-submodules https://github.com/denoland/deno.git
    

先決條件 跳到標題

Rust 跳到標題

注意

Deno 需要特定版本的 Rust。Deno 可能不支援在其他版本或 Rust Nightly Releases 上建置。特定版本所需的 Rust 版本在 rust-toolchain.toml 檔案中指定。

更新或安裝 Rust。檢查 Rust 是否正確安裝/更新

rustc -V
cargo -V

原生編譯器與連結器 跳到標題

Deno 的許多組件需要原生編譯器來建置最佳化的原生函式。

Linux(Debian)/WSL 跳到標題

wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
./llvm.sh 17
apt install --install-recommends -y cmake libglib2.0-dev

Mac 跳到標題

Mac 使用者必須安裝XCode Command Line Tools。(XCode 已經包含 XCode Command Line Tools。執行 xcode-select --install 以在不使用 XCode 的情況下安裝。)

CMake 也是必要的,但不包含在 Command Line Tools 中。

brew install cmake

Mac M1/M2 跳到標題

對於 Apple aarch64 使用者,必須安裝 lld

brew install llvm lld
# Add /opt/homebrew/opt/llvm/bin/ to $PATH

Windows 跳到標題

  1. 取得VS Community 2019 以及「使用 C++ 的桌面開發」工具組,並確保選取以下列出的必要工具以及所有 C++ 工具。

    • Visual C++ tools for CMake
    • Windows 10 SDK (10.0.17763.0)
    • 測試工具核心功能 - 建置工具
    • Visual C++ ATL for x86 and x64
    • Visual C++ MFC for x86 and x64
    • C++/CLI 支援
    • VC++ 2015.3 v14.00 (v140) toolset for desktop
  2. 啟用「Windows 的偵錯工具」。

    • 前往「控制台」→「程式」→「程式和功能」
    • 選取「Windows Software Development Kit - Windows 10」
    • →「變更」→「變更」→ 勾選「Debugging Tools For Windows」→「變更」→「完成」。
    • 或使用:Windows 的偵錯工具(注意:它將下載檔案,您應手動安裝 X64 Debuggers And Tools-x64_en-us.msi 檔案。)

Protobuf 編譯器 跳到標題

建置 Deno 需要 Protocol Buffers 編譯器

Linux(Debian)/WSL 跳到標題

apt install -y protobuf-compiler
protoc --version  # Ensure compiler version is 3+

Mac 跳到標題

brew install protobuf
protoc --version  # Ensure compiler version is 3+

Windows 跳到標題

Windows 使用者可以從 GitHub 下載最新的二進位發布版本。

Python 3 跳到標題

注意

Deno 需要 Python 3 來執行 WPT 測試。確保您的 PATH 中存在無後綴的 python/python.exe,並且它指向 Python 3。

建置 Deno 跳到標題

建置 Deno 最簡單的方法是使用預先編譯的 V8 版本。

對於 WSL,請確保您在 .wslconfig 中分配了足夠的記憶體。建議您至少分配 16GB。

cargo build -vv

但是,如果您正在進行較低層級的 V8 開發,或者使用沒有預先編譯 V8 版本的平台,您可能也想要從原始碼建置 Deno 和 V8。

V8_FROM_SOURCE=1 cargo build -vv

從原始碼建置 V8 時,可能會有更多依賴項。有關 V8 建置的更多詳細資訊,請參閱 rusty_v8 的 README

建置 跳到標題

使用 Cargo 建置

# Build:
cargo build -vv

# Build errors?  Ensure you have latest main and try building again, or if that doesn't work try:
cargo clean && cargo build -vv

# Run:
./target/debug/deno run tests/testdata/run/002_hello.ts

執行測試 跳到標題

Deno 具有以 Rust 和 TypeScript 撰寫的完整測試套件。Rust 測試可以在建置過程中透過以下方式執行

cargo test -vv

TypeScript 測試可以使用以下方式執行

# Run all unit/tests:
target/debug/deno test -A --unstable --lock=tools/deno.lock.json --config tests/config/deno.json tests/unit

# Run a specific test:
target/debug/deno test -A --unstable --lock=tools/deno.lock.json --config tests/config/deno.json tests/unit/os_test.ts

使用多個套件 跳到標題

如果變更集跨越多個 Deno 套件,您可能想要一起建置多個套件。建議您將所有需要的套件並排 checkout。例如

- denoland/
  - deno/
  - deno_core/
  - deno_ast/
  - ...

然後您可以使用 Cargo 的 patch 功能 來覆寫預設的依賴路徑

cargo build --config 'patch.crates-io.deno_ast.path="../deno_ast"'

如果您正在處理為期數天的變更集,您可能更喜歡將 patch 新增到您的 Cargo.toml 檔案中(只需確保在暫存您的變更之前移除此 patch)

[patch.crates-io]
deno_ast = { path = "../deno_ast" }

這將從本機路徑建置 deno_ast 套件,並連結到該版本,而不是從 crates.io 取得。

注意Cargo.toml 中依賴項的版本必須與您磁碟上的依賴項版本相符,這一點很重要。

使用 cargo search <dependency_name> 來檢查版本。

您找到需要的資訊了嗎?

隱私權政策