首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Deno 1.42:使用 JSR 更好地进行依赖管理

3 月 28 日,Deno 宣布 1.42 版本正式推出。Deno 的愿景是简化编程,其中一个重要方面就是管理依赖关系。虽然 npm 已发展成为最成功的开源注册表,但使用和发布模块却变得越来越复杂。

基于 npm 的成功,JSR 提供​了一个现代化的、TypeScript 优先且跨平台兼容的注册表,并完全集成到 Deno 中。

Deno v1.42 通过 deno publish 和 deno add 子命令提供更强大的依赖关系管理,可以从 JSR 和 npm 发布和安装模块。最重要的是,此版本提供了改进的 Node/npm 兼容性、多项 LSP 改进、更快的启动时间(以及其他性能优势)等等。

如果您已经安装了 Deno,请在终端中使用 deno upgrade 命令升级到版本 1.42。如果您尚未安装 Deno,您可以使用以下命令之一或许多其他方式安装它。

以下是 Deno 1.42 新增功能的概述。

JSR、 deno publish 和 deno add

JSR 是现代 JavaScript 和 TypeScript 包的开源注册表。了解我们为何构建 JSR,使用 JSR 绝对是一种乐趣。它消除了分发 TypeScript 和 JavaScript 的所有麻烦。

在 1.42 中,Deno 添加了对 JSR 的一流支持。这意味着无需任何额外的工具,您就可以使用模块并将其发布到 JSR。

有两个新的子命令。首先是 deno add 。它的工作方式与 npm add 类似,但默认为 JSR 包。例如,如果您想使用 JSR 中的 @std/assert ,您只需运行

这将添加一个导入映射条目,使您可以轻松导入代码

请注意, deno add 还支持添加带有 npm: 前缀的 npm 包。

对于模块作者可以使用 deno publish 执行您所期望的操作,它将发布到 JSR。JSR 也完全融入到 Deno 的 LSP 和 VS Code 扩展中。即使使用 TypeScript,也希望 go-to-definition 能够正常工作。 Intellisense 对于 JSR 包来说应该工作得很好。

Node.js 和 npm 兼容性

此版本中进行了大量改进,使 Deno 与 Node.js 更加兼容;以及与 npm 兼容性相关的多项改进。此外,设置 node_modules/ 目录的性能也得到了改进 - 您可以在 Deno v1.42 中看到高达 1.7 倍的速度提升。

deno task

对于任何以 #!/usr/bin/env -S 开头的 shebang,跨平台 shebang 支持已在 deno task 中实现。给定一个 script.ts 文件和 deno.json :

现在即使在 Windows 计算机上也可以运行此任务。

退出状态变量

shell 现在支持使用 $? 来获取上次运行命令的退出代码:

改进的重定向支持

现在实现了输入重定向和更多文件描述符重定向:

任务描述

如果您使用的是 JSONC 文件,您现在可以使用注释向任务添加描述:

deno lint --fix

该基础设施已实现在命令行上自动修复 lint 规则并通过编辑器中的快速修复。

例如,给出以下代码:

deno lint 现在输出以下内容:

请注意文本 (1 fixable via --fix) 。让我们尝试一下:

目前,这仅适用于三个 lint 规则,但该列表会随着时间的推移而增长。

类型检查

以前,如果您使用 --check 标志运行 deno run ,当遇到静态不可分析的动态导入或启动工作线程时,Deno 可能会在执行过程中键入 check。

此功能带来了很大的维护负担,给 JSR 带来了一些挑战,并产生了不良行为,即可能在执行过程中使正在运行的应用程序失败。因此,在初始类型检查之后不再进行类型检查(强调: deno run --check main.ts 在执行任何模块之前仍然进行类型检查)。

如果需要,建议使用 deno check 子命令来键入检查这些模块。

deno install 更新

deno install 允许您轻松安装和分发可执行代码。

虽然此命令很有用,但许多用户希望它能够在项目本地“安装”依赖项 - 就像之前介绍的 deno add 一样。

为了更好地符合预期,Deno 2 中的 deno install 将更改为在项目本地安装脚本。也就是说, deno install 将是 deno add 的别名。-g / --global 标志仍然支持当前行为,以告诉 Deno 您想要全局安装脚本。

如果您忽略它,Deno 现在会警告您并建议使用 -g / --global 标志。

语言服务器改进

从 v1.37 开始,我们的 LSP 支持 npm: 说明符的补全。在 v1.42 中,我们不仅添加了对 jsr: 说明符的支持,还添加了包名称和版本的补全。

其他改进和修复

在 JSR 导入悬停文本中包含注册表 url

不要警告本地文件从 .js 重定向到 .d.ts 文件

不要对供应的远程模块应用符号重命名

对包说明符导入映射键应用尾部斜杠扩展

表现

此版本全面提升了性能,其中最值得注意的是:

更快的启动时间:Linux 上的启动时间缩短了 10%。现在,引导程序初始化会在快照期间预热并减少内存分配。

更高效的 setTimeout 和 setInterval :计时器进行了重大重写。创建一百万个计时器大约需要 1.4 秒,而 Deno 1.41 中需要 5.9 秒,同时内存使用量也减少了 70%。

Fresh 2.0 即将到来

我们的下一个主要 Fresh 版本将更加简单,具有更可组合的、类似 Express 的 API。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OxLB2c3CkfE7uUGvg643iZlw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券