内置工具链
Deno 内置工具链
Deno 提供了开箱即用的工具链,无需安装任何第三方依赖即可完成代码格式化、检查、测试、覆盖率、文档生成和基准测试等任务。
一、命令总览
| 命令 | 说明 | 对应 Node.js 生态工具 |
|---|---|---|
deno fmt | 自动格式化代码(支持 TypeScript、JavaScript、JSON、Markdown) | Prettier |
deno lint | 检查代码潜在问题,包含超过 100 条规则 | ESLint |
deno test | 运行测试(支持断言库、快照等) | Jest / Mocha |
deno coverage | 生成测试覆盖率报告 | c8 / nyc |
deno doc | 从源代码注释生成 API 文档 | TypeDoc / JSDoc |
deno bench | 运行基准测试(性能测试) | benchmark.js |
这些工具共享 Deno 的权限模型(默认无权限,需显式授予),并且风格统一,无需配置文件即可工作。
二、各实用功能介绍
1. deno fmt – 代码格式化
自动将代码格式化为符合 Deno 规范的样式(类似 Go 的 gofmt),默认缩进为 2 个空格,行尾分号会被自动移除。
deno fmt # 格式化当前目录下所有受支持文件
deno fmt --check # 只检查是否已格式化,不写文件(用于 CI)
deno fmt --watch # 监听文件变化并自动格式化
支持的文件类型:.ts、.js、.tsx、.jsx、.json、.markdown(代码块)。
配置:可在 deno.json 中通过 "fmt" 字段自定义(如 "indentWidth": 4、"lineWidth": 120 等)。
2. deno lint – 代码检查
静态分析代码,发现潜在的语法错误、风格问题或安全隐患。内置超过 100 条规则,支持自定义。
deno lint # 检查所有源文件
deno lint --rules # 列出所有可用规则
deno lint --fix # 自动修复部分可修复的问题
忽略检查:
// 忽略整个文件
// deno-lint-ignore-file -- reason
// 忽略下一行
// deno-lint-ignore no-explicit-any
const data: any = {};
3. deno test – 测试
自动发现并运行测试文件(命名模式:*_test.ts、*.test.ts、*_test.js、*.test.js)。
编写测试(内置断言库可从 jsr:@std/assert 引入):
import { assertEquals } from "jsr:@std/assert";
Deno.test("adds 1 + 2 to equal 3", () => {
assertEquals(1 + 2, 3);
});
运行测试:
deno test # 运行所有测试
deno test --watch # 监听并自动重跑
deno test --allow-net # 授予网络权限(如果需要)
deno test --coverage # 运行测试并输出覆盖率数据到 ./coverage
4. deno coverage – 覆盖率报告
基于 deno test --coverage 生成的覆盖率数据,可视化报告。
deno test --coverage # 生成覆盖率(默认输出到 ./coverage)
deno coverage # 在终端显示精简报告
deno coverage --html # 生成 HTML 详细报告(打开 ./coverage/html/index.html)
deno coverage --lcov # 输出 LCOV 格式(供 CI 上传)
5. deno doc – 文档生成
从源代码中的 JSDoc 风格注释生成 API 文档。
deno doc ./mod.ts # 输出文档(JSON 格式)
deno doc --html ./mod.ts # 生成 HTML 站点
deno doc --json ./mod.ts > docs.json # 导出 JSON 供其他工具处理
代码注释示例:
/** 计算两数之和。@param a - 第一个数 @param b - 第二个数 @returns 和 */
export function add(a: number, b: number): number {
return a + b;
}
6. deno bench – 基准测试
测量代码性能,类似于 deno test 但用于性能测试。
// bench.ts
Deno.bench("Array sort", () => {
const arr = [5, 1, 8, 3];
arr.sort();
});
deno bench # 运行所有基准测试
deno bench --watch
输出示例:
cpu: 12th Gen Intel(R) Core(TM) i7-1260P
runtime: deno 2.6.0 (x86_64-unknown-linux-gnu)
benchmark time (avg) iterations
Array sort 1.5 µs 1000000
三、与 Node.js 工具链对比总结
| 功能 | Deno 内置命令 | Node.js 常见工具 |
|---|---|---|
| 格式化 | deno fmt | Prettier |
| 代码检查 | deno lint | ESLint |
| 测试 | deno test | Jest / Mocha / Vitest |
| 覆盖率 | deno coverage | c8 / nyc / Jest coverage |
| 文档生成 | deno doc | TypeDoc / JSDoc |
| 基准测试 | deno bench | benchmark.js / benchmark |
Deno 的一体化工具链显著降低了项目初始配置成本,且所有命令都遵循相同的 CLI 风格(如 --watch),体验统一。对于习惯了 Node.js 的开发者,迁移学习曲线较低,同时省去了单独配置 Prettier、ESLint、Jest 等工具的步骤。
参考文献
| 资料 | 说明 |
|---|---|
| deno fmt | 格式化 |
| deno lint | Lint |
| deno test | 测试 |
| @std/assert (JSR) | 断言库 |
相关文章
Deno 基础
Deno 是基于 V8 与 Rust 的 JavaScript/TypeScript 运行时,由 Node.js 原作者 Ryan Dahl 发起。官方文档:docs.deno.com。与 Node、Bun 的对比见 运行时对比。
项目初始化与基础命令
Deno 提供了开箱即用的项目管理工具集,无需额外配置即可初始化项目、运行脚本、执行代码片段等。
包管理与依赖
Deno 以 deno.json 管理项目(imports、tasks 等),依赖通过 URL、jsr:、npm: 解析并缓存到本地(默认 DENO_DIR),通常不需要像 Node 那样维护庞大的 node_modules 树。在需…
其他配置
Deno 默认禁止访问环境变量,以遵循最小权限原则。必须通过 --allow-env 标志显式开启。
权限模型
Deno 默认在安全的沙盒环境中执行任何代码——无论是你的主程序还是第三方依赖,都没有文件、网络、环境变量或子进程的访问权限。只有通过 命令行标志显式授予 的权限才能被使用。
安装与环境
Deno 提供了多种安装方式,覆盖主流操作系统。安装后需确保环境 PATH 正确,并可配置一些环境变量以控制行为。
Series
deno
8 / 8