likes
comments
collection
share

Deno 2 主版本强势升级,连恐龙吉祥物都优化了Deno 2 发布,向后兼容 Node 和 npm,新增包管理命令,还

作者站长头像
站长
· 阅读数 43

00. 写在前面

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

过去十年中,JS 仍然是人气最高的语言,TS 也勇夺第三。

为了简化 Web 编程,我们创建了 Deno:一个用于 JS + TS 开发的一体化、零配置现代工具链。如今,Deno 源码库成为 GitHub 上仅次于 Rust 语言本身的、最高收藏数的 Rust 项目之一。

今天,Deno 团队发布 Deno 2,包括但不限于:

  • 向后兼容 Node + npm,允许你无缝运行现有的 Node 应用
  • 原生支持 package.jsonnode_modules
  • 使用 deno install 进行包管理
  • 支持工作区和 monorepo
  • JSR:用于跨运行时共享 JS 库的现代注册表
  • ...

我们改进了许多现有功能:

  • deno fmt 可以格式化 HTML、CSS 和 YAML
  • deno lint 具有 Node 专属规则和快速修复
  • deno test 支持运行使用 node:test 编写的测试
  • ...

Deno 2 主版本强势升级,连恐龙吉祥物都优化了Deno 2 发布,向后兼容 Node 和 npm,新增包管理命令,还

免责声明

这篇官方博客是 AI 翻译 + 真人删改,仅供粉丝参考。英文原味版请传送 Announcing Deno 2

01. 向后兼容,向前思考

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

Deno 2 能解析 package.jsonnode_modules,允许你使用 ESM 在任何 Node 项目中运行 Deno。

举个栗子,你可以在克隆 Node 项目后使用 deno install 安装依赖,或者运行 deno fmt 格式化代码,而无需 Prettier。

如果需要细微的语法调整,你可以使用 deno lint --fix 修复它们。

Deno 2 主版本强势升级,连恐龙吉祥物都优化了Deno 2 发布,向后兼容 Node 和 npm,新增包管理命令,还

如果你烦透了混乱的“依赖地狱”,你可以直接使用 npm: 说明符导入 npm 包。

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

// npm: 说明符
import chalk from 'npm:chalk@5.3.0'

console.log(chalk.blue('Hello, world!'))
// Hello, world!(chalk 模块让输出变为蓝色)

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

// deno.json
{
  "imports": {
    "chalk": "npm:chalk@5.3.0"
  }
}

然后就可以导入包的裸名称:

// 无需 npm: 说明符
import chalk from 'chalk'

console.log(chalk.blue('Hello, world!'))
// Hello, world!(chalk 模块让输出变为蓝色)

通过 npm: 说明符导入 npm 包,你可以将 Deno 2 与最爱的 JS 框架一起使用。

Deno 2 主版本强势升级,连恐龙吉祥物都优化了Deno 2 发布,向后兼容 Node 和 npm,新增包管理命令,还

02. Deno 作为包管理器

Deno 2 可以轻松安装和管理依赖项。

deno install 可以安装依赖。如果你有 package.json,它将创建 node_modules。如果你不想使用 package.json,它会将所有依赖缓存到全局缓存。

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

Deno 2 主版本强势升级,连恐龙吉祥物都优化了Deno 2 发布,向后兼容 Node 和 npm,新增包管理命令,还

03. JSR 注册表

今年早些时候,我们推出了一个名为 JSR 的现代开源 JS 注册表

JSR 原生支持 TS,你可以将模块发布为 TS 源码,从 JSDoc 样式的注释自动生成文档,也可以将 TS 转换为 .js.d.ts 文件。

Deno 2 主版本强势升级,连恐龙吉祥物都优化了Deno 2 发布,向后兼容 Node 和 npm,新增包管理命令,还

04. 稳定版标准库

虽然 npm 上有超过 200 万个模块可用,但评估新模块的过程非常耗时。这就是我们构建 Deno 标准库 超过 4 年的原因。

标准库由数十个经过严格审核的实用程序模块组成,涵盖从数据操作、Web 相关逻辑、JS 特定功能等各个方面

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

05. 私有 npm 注册表

Deno 2 中的私有 npm 注册表的工作方式与在 Node 和 npm 中相同,都使用 .npmrc 文件

// .npmrc
@mycompany:registry=http://mycompany.com:8111/
//mycompany.com:8111/:_auth=secretToken

Deno 会自动获取这个 .npmrc 文件,并允许你拉取私有包,无需额外配置。

06. 工作区和 monorepo

Deno 2 还支持工作区,这是管理 monorepo 的强大解决方案

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

// deno.json
{
  "workspace": ["./add", "./subtract"]
}

这些成员可以具有单独的依赖、linter 和 formatter 配置等。

你还可以创建一个混合的 Deno-npm monorepo,其工作区成员要么是 package.json,要么是 deno.json

Deno 2 主版本强势升级,连恐龙吉祥物都优化了Deno 2 发布,向后兼容 Node 和 npm,新增包管理命令,还

你还可以通过运行 deno publish 将工作区成员发布到 JSR,这无需你手动确定发布顺序。

07. 长期支持

从 Deno 2.1 开始,我们推出长期支持(LTS)发布渠道。LTS 将接收向后移植的 6 个月的关键补丁,确保鲁棒的生产基础。6 个月后,将根据最新稳定版创建新的 LTS 分支。

Deno 2 主版本强势升级,连恐龙吉祥物都优化了Deno 2 发布,向后兼容 Node 和 npm,新增包管理命令,还

08. Deno 速度很快!

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

Deno 2 主版本强势升级,连恐龙吉祥物都优化了Deno 2 发布,向后兼容 Node 和 npm,新增包管理命令,还

更正:上面显示的第一个 HTTP 基准测试是使用 Deno 1.45 进行的,Deno 2 实际比这里慢了大约 20%。这种差异是由于我们禁用了 V8 指针压缩,来解决用户超过 4GB 堆限制的情况。我们计划重启指针压缩,因为它是大多数用户理想的默认设置。

高潮总结

Deno 2 提供了零配置、一体化的工具链、Web 标准 API 支持、默认安全,并完全向后兼容 Node 和 npm。

这不仅使在任何 Node 项目中运行 Deno 变得简单,而且还允许在更大、更复杂的项目中逐步采用 Deno。

除了改进的包管理、JSR 和为更高级的开发团队提供的一系列功能外,Deno 已准备好简化和加速您的开发。

Deno 2 主版本强势升级,连恐龙吉祥物都优化了Deno 2 发布,向后兼容 Node 和 npm,新增包管理命令,还

参考文献

  1. Deno Blogdeno.com/blog/v2.0
  2. JSRdeno.com/blog/jsr_op…
  3. 升级指南docs.deno.com/runtime/ref…

粉丝互动

本期话题是:如何看待 Deno 2 兼容 Node,同时青出于蓝?你可以在本文下方自由言论,或者转发分享。

欢迎持续关注我,深度学习更多前端进阶的技术细节。谢谢大家的点赞和分享,我们下期再见~

转载自:https://juejin.cn/post/7424901483987140623
评论
请登录