🔥 GitHub 排名第二,Deno 1 发布 4 年后,Deno 2 强势升级

1,544 阅读4分钟

00-deno2.png

作者:Deno 团队

译者:林语冰

资源:Deno 官方博客[1]

免责声明:活人翻译,略有删改,仅供粉丝参考!

00. 导读

大家好,我是大家的林语冰。

Deno 是 Node 之父 重新发明的 Node 替代品,一个用于 JS 和 TS 开发的零配置工具链和一体化运行时。

Deno 现已成为 GitHub 上排名第二的 Rust 项目,仅次于 Rust 语言本身。👍

01-rank.png

Deno 1 发布 4 年后,Deno 团队官宣 Deno 第 2 个主版本正式发布,主要包括:

  • 向后兼容 Node + npm,原生支持排版,无需安装 Prettier
  • Deno 自己化身包管理器,不像 Node 依赖 npm / yarn
  • 内置高质量标准库,无需安装 lodash
  • 支持 workspaces(工作区)和 monorepo,无需依赖 pnpm
  • 支持 LTS 发布,降低生产维护成本
  • JSR 允许直接发布 JS / TS 模块,自动生成文档

01. 向后兼容,向前求索

Deno 2 向后兼容 Node + npm,你不仅可以在现有 Node 项目中直接运行 Deno,还可以逐步采用 Deno 的一体化工具链。

举个栗子:

01-lint.png

Deno 原生支持 ESM,如果你想摆脱混乱的 package.jsonnode_modules,你可以直接使用 npm: 说明符导入 npm 包。

02-chalk.png

如果当前项目没有 package.jsonnode_modules,Deno 会把包安装到 全局缓存。这允许你在单文件中编写需要 npm 依赖的程序,而不需要依赖清单或 node_modules

对于较大的项目,依赖清单可以简化依赖管理。先将 npm: 说明符放入 deno.json 的导入映射中:

03-json.png

然后就可以省略 npm: 说明符和版本号,导入模块的简化名称:

04-esm.png

02. Deno 作为包管理器

Deno 2 可以轻松安装和管理依赖项,不像 Node 依赖 npm 或 yarn 等。

deno install 可以快速安装依赖。如果你有 package.json,它会创建 node_modules,否则 Deno 会将所有依赖缓存到全局缓存。

deno install 比使用 冷缓存 的 npm 快 15%,比使用 热缓存 的 npm 快 90%。

05-npm.png

03. JSR 注册表

今年早些时候,Deno 团队推出了 JSR[2] - 一个现代开源 JS 注册表。

06-jsr.png

JSR 原生支持 TS,你可以直接把 TS 源码发布为模块,不需要先把 TS 编译为 JS,构建完成后再发布。

JSR 还会根据 JSDoc 风格的注释自动生成文档,也可以将 TS 转换为 .js.d.ts 文件。

04. 稳定版标准库

虽然 npm 有 200+ 万个模块,但它们的质量良莠不齐。

Deno 标准库[3] 由几十个经过严格审核的实用工具模块组成。

举个栗子,Deno 标准库内置了类似 lodash 的集合操作,无需手动安装 lodash 即可使用。

Deno 标准库模块npm 包
@std/collectionslodash
@std/testingjest
@std/expectchai
......

05. workspaces 和 monorepo

Deno 2 还支持 workspaces(工作区),这是管理 monorepo 的强大方案。

只需使用 deno.json 中的 workspace 属性列出成员目录:

07-workspaces.png

这些成员可以拥有单独的依赖、linter 和排版配置等。

Deno 还支持 npm workspaces,允许你创建混合的 Deno-npm monorepo,其工作区成员要么是 package.json,要么是 deno.json

08-monorepo.png

你还可以运行 deno publish 直接把工作区模块发布到 JSR,这无需你手动确定发布顺序。

06. 长期支持版

Deno 每周会发布一个 补丁版,每 6 周会发布一个 次版本,大型团队生产构建时维护成本较高。

为此,从 Deno 2.1 开始,Deno 支持 LTS(长期支持)发布,类似于 Node 的更新渠道。

LTS 将接收 6 个月向后移植的关键补丁,6 个月后,Deno 会根据最新稳定版创建新的 LTS 分支,确保生产环境的稳定和可靠。

09-lts.png

07. Deno 性能惊人

以下是若干展示 Deno 优势的基准测试:

10-fast.png

高潮总结 👇

Deno 2 提供了零配置、一体化的现代工具链,向后兼容 Node 和 npm 的同时,比 Node 更安全:

  • Deno 自己能够管理依赖,支持 monorepo 和 workspaces,无需依赖 pnpm
  • Deno 内置支持排版,无需安装 Prettier
  • Deno 支持稳定的标准库,无需安装 lodash
  • JSR 和 npm 注册表一样,但支持直接发布 TS 模块

希望 Deno 能继续优化 lint 和测试运行器的功能。👍

11-deno.png

我是 大家的林语冰 👨‍💻,欢迎持续 关注 我,随时了解海内外前端开发的最新情报。

谢谢的大家点赞、留言和友情转发,你的支持是我们保持更新的最大动力,我们下期再见~👍

参考文献

[1] Deno 官方博客: deno.com/blog/v2.0

[2] JSR: jsr.io

[3] Deno 标准库: github.com/denoland/st…