本页内容

从源代码构建 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. 在检出之前设置 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 版本上构建。特定版本所需的 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 16
apt install --install-recommends -y cmake libglib2.0-dev

Mac:

Mac 用户必须安装XCode 命令行工具。(XCode 已经包含XCode 命令行工具。运行 xcode-select --install 来安装它,而无需 XCode。)

CMake 也是必需的,但它不随命令行工具一起提供。

brew install cmake

Mac M1/M2:

对于 Apple aarch64 用户,必须安装 lld

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

Windows:

  1. 获取 VS Community 2019,其中包含“使用 C++ 的桌面开发”工具包,并确保选择以下列出的必需工具以及所有 C++ 工具。

    • 用于 CMake 的 Visual C++ 工具
    • Windows 10 SDK (10.0.17763.0)
    • 测试工具核心功能 - 构建工具
    • 用于 x86 和 x64 的 Visual C++ ATL
    • 用于 x86 和 x64 的 Visual C++ MFC
    • C++/CLI 支持
    • 用于桌面的 VC++ 2015.3 v14.00 (v140) 工具集
  2. 启用“Windows 调试工具”。

    • 转到“控制面板”→“程序”→“程序和功能”
    • 选择“Windows 软件开发工具包 - Windows 10”
    • →“更改”→“更改”→选中“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 中分配了足够的内存

cargo build -vv

但是,如果您正在进行更底层的 V8 开发,或者使用没有预编译 V8 版本的平台,您可能也希望从源代码构建 Deno 和 V8

V8_FROM_SOURCE=1 cargo build -vv

从源代码构建 V8 时,可能会有更多依赖项。有关 V8 构建的更多详细信息,请参阅 rusty_v8 的自述文件

构建 跳转到标题

使用 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