FORMA

内置工具链

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 个空格,行尾分号会被自动移除。

bash
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 条规则,支持自定义。

bash
deno lint                       # 检查所有源文件
deno lint --rules               # 列出所有可用规则
deno lint --fix                 # 自动修复部分可修复的问题

忽略检查

typescript
// 忽略整个文件
// 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 引入):

typescript
import { assertEquals } from "jsr:@std/assert";

Deno.test("adds 1 + 2 to equal 3", () => {
  assertEquals(1 + 2, 3);
});

运行测试

bash
deno test                      # 运行所有测试
deno test --watch              # 监听并自动重跑
deno test --allow-net          # 授予网络权限(如果需要)
deno test --coverage           # 运行测试并输出覆盖率数据到 ./coverage

4. deno coverage – 覆盖率报告

基于 deno test --coverage 生成的覆盖率数据,可视化报告。

bash
deno test --coverage           # 生成覆盖率(默认输出到 ./coverage)
deno coverage                  # 在终端显示精简报告
deno coverage --html           # 生成 HTML 详细报告(打开 ./coverage/html/index.html)
deno coverage --lcov           # 输出 LCOV 格式(供 CI 上传)

5. deno doc – 文档生成

从源代码中的 JSDoc 风格注释生成 API 文档。

bash
deno doc ./mod.ts              # 输出文档(JSON 格式)
deno doc --html ./mod.ts       # 生成 HTML 站点
deno doc --json ./mod.ts > docs.json   # 导出 JSON 供其他工具处理

代码注释示例

typescript
/** 计算两数之和。@param a - 第一个数 @param b - 第二个数 @returns 和 */
export function add(a: number, b: number): number {
  return a + b;
}

6. deno bench – 基准测试

测量代码性能,类似于 deno test 但用于性能测试。

typescript
// bench.ts
Deno.bench("Array sort", () => {
  const arr = [5, 1, 8, 3];
  arr.sort();
});
bash
deno bench                    # 运行所有基准测试
deno bench --watch

输出示例:

text
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 fmtPrettier
代码检查deno lintESLint
测试deno testJest / Mocha / Vitest
覆盖率deno coveragec8 / nyc / Jest coverage
文档生成deno docTypeDoc / JSDoc
基准测试deno benchbenchmark.js / benchmark

Deno 的一体化工具链显著降低了项目初始配置成本,且所有命令都遵循相同的 CLI 风格(如 --watch),体验统一。对于习惯了 Node.js 的开发者,迁移学习曲线较低,同时省去了单独配置 Prettier、ESLint、Jest 等工具的步骤。

参考文献

资料说明
deno fmt格式化
deno lintLint
deno test测试
@std/assert (JSR)断言库

Series

deno

8 / 8