What's New in Deno 2

当 Deno 首次问世时，它以一些新的想法震撼了 JavaScript 和 TypeScript 世界。它是由 Ryan Dahl 创建的，Node.js 的创始人，Deno 旨在解决 Node 的一些问题，例如安全性和模块的工作原理。现在，Deno 2 来了，它有更多的功能和改进，使其成为后端开发的强大选择。
Deno 2 带来了大量更新，使开发更轻松、更快速、更安全。以下是一些关键改进：

向后兼容且面向未来

Deno 2 可以与 Node 和 npm 顺利协作，这意味着您可以将其与当前的 Node 项目一起使用。例如，克隆 Node 项目后，您可以使用 deno install 快速设置依赖项，或使用 deno fmt 来格式化代码，而无需 Prettier。

Deno 2 处理 package.json、node_modules 和 npm 工作区，因此它可以在任何使用 ESM 的 Node 项目中运行。对于较小的语法问题，只需使用 deno lint --fix。

如果你不喜欢 package.json 和 node_modules 但仍想使用 npm 包，你可以使用 npm： 说明符直接导入它们。这使您可以在单个文件中编写具有 npm 依赖项的程序，而无需额外配置。

对于较大的项目，您可以使用清单文件管理依赖项。在 deno.json 文件中放置一个 npm： 说明符以轻松导入包：

Deno 允许您访问超过 200 万个 npm 模块，包括 gRPC、ssh2、Prisma、temporal.io、duckdb、polars 等复杂包，甚至支持 Node-API 原生插件。

您还可以将 Deno 2 与您最喜欢的 JavaScript 框架一起使用，例如 Next.js、Astro、Remix、Angular、SvelteKit、QwikCity 等。它对于现代 Web 开发来说用途广泛且功能强大。

Deno 现在用作包管理器

Deno 2 不仅支持 package.json 和 node_modules，还引入了三个关键子命令来轻松管理你的依赖项。

deno install：此命令以闪电般的速度安装您的依赖项。如果您有package.json，它将立即创建一个node_modules文件夹。如果没有 package.json，它将全局缓存所有依赖项。它比使用冷缓存的 npm 快 15%，比使用热缓存的 npm 快 90%。

deno add 和 deno remove：这些命令允许您在 package.json 或 deno.json 中添加或删除包。如果你使用过 npm install 或 npm remove，你会感觉很舒服。

新的 JavaScript 注册表 （JSR）

今年早些时候，Deno 团队推出了 JSR，这是一个现代的开源 JavaScript 注册表。它改变了游戏规则，因为它原生支持 TypeScript，允许您直接将模块发布为 TypeScript 源代码。JSR 处理跨不同运行时和环境加载模块的复杂任务，仅支持 ESM，从 JSDoc 样式的注释自动生成文档，并与类似 npm 和 npx 的系统一起使用。它甚至可以将 TypeScript 转换为 .js 和 .d.ts 文件。

Deno 标准库现已稳定

Deno 标准库包含经过全面审查的实用程序模块，适用于从数据操作到 Web 相关逻辑和 JavaScript 特定功能的所有内容。它在 JSR 上可用，并且可以与其他运行时和环境一起使用。

私有 npm 注册表等

Deno 2 像 Node 和 npm 一样处理私有 npm 注册表。您只需要一个 .npmrc 文件。Deno 会自动检测到它，并允许你拉取私有包，而无需任何额外设置。

Workspaces and Monorepos 工作区和 Monorepo

Deno 2 支持工作区，可以轻松管理 monorepo。只需列出 deno.json 中的成员目录即可：

成员可以具有单独的依赖项和配置。Deno 还了解 npm 工作区，允许混合 Deno-npm monorepo。您可以使用 deno publish 将工作区成员发布到 JSR。

Long Term Support (LTS) 长期支持 （LTS）

对于大型组织，审核新版本可能非常耗时。这就是 Deno 从 Deno 2.1 开始引入 LTS 发布频道的原因。此频道将在六个月内接收关键错误修复，以确保为生产使用提供稳定的基础。六个月后，将根据最新的稳定版本创建新的 LTS 分支。