如何从源码构建 Deno 并运行第一个开发版二进制
如何从源码构建 Deno 并运行第一个开发版二进制【免费下载链接】denoA modern runtime for JavaScript and TypeScript.项目地址: https://gitcode.com/GitHub_Trending/de/deno当你需要修改 Deno 自身Rust 代码或 JS/TS 模块、使用未发布的改动或想在构建过程中控制编译方式时需要自己从源码编译出deno二进制并运行它。本文基于仓库的 .github/CONTRIBUTING.mdBuilding from source 章节和 CLAUDE.md给出一条完整路径克隆仓库 → 安装依赖 → 构建 → 运行开发版二进制并验证结果。最终产物是仓库根目录下./target/debug/deno这个 debug 二进制。克隆仓库必须带子模块Deno 使用了子模块克隆时必须加--recurse-submodules否则依赖的本地源码不完整。Linux(Debian)、Mac、WSL 下git clone --recurse-submodules https://github.com/denoland/deno.gitWindows 需要额外三步开启开发者模式 Developer Mode否则符号链接需要管理员权限确认 git 版本为 2.19.2.windows.1 或更新在 checkout 前设置符号链接开关git config --global core.symlinks true git clone --recurse-submodules https://github.com/denoland/deno.git安装构建依赖Rust 工具链Deno 要求特定版本的 Rust具体由仓库中的 rust-toolchain.toml 指定——当前文件固定为channel 1.95.0组件包含rustfmt、clippy、rust-src、rust-analyzer。文档同时提示其他版本包括 Rust Nightly Releases可能不被支持。安装或更新 Rust 后在仓库目录中检查是否生效rustc -V cargo -V原生编译器与链接器Deno 的很多组件需要原生编译器来构建优化的原生函数各平台要求如下。Linux(Debian)/WSL以下命令会向系统安装 LLVM 17、CMake 与 glib 开发库apt 部分需要管理员权限wget https://apt.llvm.org/llvm.sh chmod x llvm.sh ./llvm.sh 17 apt install --install-recommends -y cmake libglib2.0-devMac必须安装 XCode Command Line ToolsXCode 本身已包含没有 XCode 时运行xcode-select --install安装。CMake 是额外要求命令行工具不包含它brew install cmakeMac M1/M2Apple aarch64还需要安装lld并把 LLVM 目录加入PATHbrew install llvm lld # Add /opt/homebrew/opt/llvm/bin/ to $PATHWindows安装 VS Community 2019 并选择 Desktop development with C 工具集含文档列出的 Visual C tools for CMake、Windows 10 SDK (10.0.17763.0) 等组件启用 Debugging Tools for Windows并确保一个独立的 CMake 在PATH上——像aws-lc-sys经 rustls 引入这样的原生依赖会用 CMake 编译 C 代码而 Visual Studio 自带的 CMake 只在 Developer Command Prompt 内可见cargo在其他位置运行时看不到它。其他前置条件Python 3文档标注这是运行 WPT 测试的要求与纯构建无关但如果要跑 WPT 测试需确保PATH中存在无后缀的python/python.exe且指向 Python 3。WSL 内存确认.wslconfig中分配了足够的内存文档建议至少 16GB。构建 deno 二进制文档推荐用./x开发者工具构建./x build它产出 debug 模式的二进制未优化、带调试符号位于./target/debug/deno底层执行的是cargo build --bin deno见 tools/x.ts。需要注意仓库根目录的x脚本首行是#!/usr/bin/env -S deno run --allow-all --extts即./x依赖系统里已装好的 deno。手上没有现成 deno 时直接用 cargo 达到同样效果cargo build -vv可选分支如果要从源码同时构建 Deno 和 V8用于底层 V8 开发或没有预编译 V8 的平台V8_FROM_SOURCE1 cargo build -vv该方式可能引入更多依赖文档将 V8 构建细节指向 rusty_v8 的 README。构建产物是 debug 版需要 release 优化版本时文档给出的方式是在仓库根目录直接运行cargo build --release。运行第一个开发版二进制构建成功后文档给出的运行步骤是执行仓库自带的 hello 文件./target/debug/deno run tests/testdata/run/002_hello.tstests/testdata/run/002_hello.ts 的内容是一行console.log(Hello World)终端应输出Hello World——这既是文档指定的验证方式也说明开发版二进制的 TypeScript 直接执行能力正常。开发迭代中还有几种运行方式来自 CLAUDE.md# 直接执行一段 JS ./target/debug/deno eval console.log(Hello from dev build) # 带权限标志运行本地文件 ./target/debug/deno run --allow-net --allow-read script.ts # 进入 REPL ./target/debug/deno其中script.ts替换为你自己的脚本路径。Deno 默认安全模型下网络、文件等能力需要显式授权--allow-net、--allow-read就是按需放行。构建报错时先看什么文档列出两种典型情况普通构建错误先确认已更新到最新 main 后重新构建仍失败则清理后重建cargo clean cargo build -vvlinking with cc failed通常是系统依赖缺失——macOS 上运行xcode-select --installLinux 上安装build-essential或等价物。缺cmake、stdarg.h等其他依赖时回到上一节的 Prerequisites 部分逐项核对。另外如果只改 Rust 代码、想快速确认能否编译而不产出二进制./x check底层cargo check跳过链接步骤明显更快。可选用 HMR 模式迭代 JS/TS如果你接下来要频繁修改 JavaScript/TypeScript 模块文档推荐在 cargo 参数中加入--features hmr该模式下 JS/TS 源码不打进二进制、改为运行时读取修改 JS 后无需重新构建cargo build --features hmr cargo run --features hmr -- run hello.ts至此你拥有一个可从源码复现的开发版 deno./target/debug/deno能直接运行 TypeScript 文件并输出预期结果。后续修改代码后重复「构建 → 运行验证」即可文档中./x spec、./x test等测试命令属于贡献流程不是运行开发版二进制的前置步骤。【免费下载链接】denoA modern runtime for JavaScript and TypeScript.项目地址: https://gitcode.com/GitHub_Trending/de/deno创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →