本頁面內容
從原始碼建置 deno
以下說明如何從原始碼建置 Deno。如果您只想使用 Deno,您可以下載預先建置的可執行檔(更多資訊請參閱開始使用
章節)。
複製儲存庫 跳到標題
Deno 使用子模組,因此您必須記得使用 --recurse-submodules
進行複製。
Linux(Debian)/Mac/WSL
git clone --recurse-submodules https://github.com/denoland/deno.git
Windows:
-
啟用「開發人員模式」(否則符號連結需要管理員權限)。
-
請確保您使用的 git 版本為 2.19.2.windows.1 或更新版本。
-
在 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 跳到標題
-
取得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
-
啟用「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 跳到標題
建置 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>
來檢查版本。