依赖、JSR 与 npm

管理 JSR、npm、Node 内置模块、imports、deno.lock 与缓存

添加依赖

deno install jsr:@std/assert
deno install npm:express

Deno 2.8 起,CLI 中不带前缀的包名默认按 npm 处理,所以 deno install express 等价于 deno install npm:express;代码里的 import 仍需 npm:,除非由 importspackage.json 映射。JSR 包在 CLI 仍写明 jsr:

命令会更新 deno.jsonimports,代码可使用映射后的名称:

import { assertEquals } from "@std/assert";
import express from "express";
import { readFile } from "node:fs/promises";

项目中的四个状态来源

位置职责
deno.json(c)导入映射、tasks、workspace 和工具设置
package.jsonnpm 脚本/依赖与 Node 生态元数据,可与 Deno 共存
deno.lock锁定解析与完整性,应提交
Deno cache / node_modules本地物化结果,不作为评审事实源

CI 使用项目已提交的锁文件,并让锁文件不一致直接失败。不要通过删除 lockfile 掩盖解析冲突。

deno ci          # Deno 2.8+:要求 lockfile、清理 node_modules、frozen install
deno ci --prod   # 跳过 package.json devDependencies

选择来源

  • 优先使用项目已有来源与导入约定。
  • TypeScript 原生库与标准库通常优先查 JSR。
  • 依赖 Node 生态或只有 npm 发布时使用 npm;内置模块写明 node:
  • URL 导入适合明确版本的 Web 模块,但团队项目通常用 imports 集中管理。
  • Deno 2.9 的 deno list 查看项目声明依赖;deno link / unlink 管理本地包链接。

排错时先运行 deno info 查看解析图与缓存位置,再检查代理、私有 registry 和证书配置。

官方参考:Modules and dependenciesPackages

输入关键词搜索全部文档。