FORMA

包管理与依赖

Deno 包管理与依赖

Deno 以 deno.json 管理项目(importstasks 等),依赖通过 URL、jsr:npm: 解析并缓存到本地(默认 DENO_DIR),通常不需要像 Node 那样维护庞大的 node_modules 树。在需要与 Node 生态互通时,也可使用 package.jsonnode_modules(见 Node 兼容)。这一模型使依赖来源更显式,便于审计与复现。

一、主要的包注册表

注册表说明
JSR (JavaScript Registry)Deno 生态系统的现代包注册中心,安全性优先,支持语义化版本控制。导入格式:jsr:@scope/pkg
npmDeno 2 已完整兼容 npm 包,可使用 npm: 语法导入。例如:npm:expressnpm:lodash@4

Deno 还支持直接从任意 HTTPS URL 导入模块(如 https://deno.land/x/...)。

二、标准库(std)

Deno 提供一套经过核心团队审计的标准库(https://deno.land/std),功能涵盖文件系统、HTTP、测试、日志等。

推荐使用固定版本,避免因标准库更新导致的不兼容问题:

typescript
// ✅ 推荐:固定版本
import { copy } from "https://deno.land/std@0.186.0/fs/copy.ts";

// ❌ 不推荐:始终使用最新版本(可能引入不兼容变更)
import { copy } from "https://deno.land/std/fs/copy.ts";

注意:标准库中的部分模块使用了不稳定的 Deno API。如果运行时遇到类似 Property does not exist on type 'typeof Deno' 的 TypeScript 错误,通常表明该模块依赖了不稳定的 API,需要添加 --unstable 标志。

三、导入外部包

Deno 支持多种导入方式:

typescript
// 从 JSR 导入(Deno 官方生态)
import { serve } from "jsr:@std/http";

// 从 npm 导入(需要 Node.js 兼容层)
import express from "npm:express@4";

// 直接从 URL 导入
import { camelCase } from "https://deno.land/x/lodash@4.17.15/lodash.js";

对于第三方 URL 导入,建议固定版本号(如 URL 中包含 @version)。

四、包管理命令

命令说明
deno add jsr:@pkg添加 JSR 包到 deno.json
deno add npm:pkg添加 npm 包
deno remove移除依赖
deno install安装 deno.json 中所有依赖(预下载到缓存)
deno outdated查看过期依赖
deno audit扫描依赖的安全漏洞(检查 GitHub CVE 数据库)
deno x运行 npm / JSR 包的二进制(类似 npx);可 deno x --install-alias 安装 dx 别名

五、配置文件 (deno.json)

Deno 使用 deno.json(或 deno.jsonc)管理项目配置,类似于 package.json,但不依赖 node_modules

json
{
  "name": "my-app",
  "version": "1.0.0",
  "exports": "./mod.ts",
  "imports": {
    "jsr:@std/http": "jsr:@std/http@1.0.0",
    "npm:express": "npm:express@4"
  },
  "tasks": {
    "dev": "deno run --allow-net --watch main.ts",
    "test": "deno test --allow-net"
  },
  "lint": {
    "include": ["src/"],
    "exclude": ["src/testdata/"]
  }
}
  • imports:映射别名,简化导入路径。
  • tasks:定义自定义命令,通过 deno task <name> 执行。
  • lint:配置 deno lint 的行为。

执行 deno task dev 即可运行开发任务。

六、总结

概念说明
依赖管理方式deno.json + URL / JSR / npm 为主;可选 package.json(Node 兼容)
标准库固定版本引入,部分依赖 unstable API 需 --unstable
配置文件deno.json 管理 imports、tasks、lint 等
关键命令deno adddeno installdeno outdateddeno auditdeno x

Deno 的包管理更现代化、安全性更高,尤其适合需要严格依赖控制和最小权限的场景。

参考文献

资料说明
deno.json项目配置
JSRJavaScript Registry
npm specifiersnpm: 导入
Dependenciesdeno add / 缓存

Series

deno

7 / 8