Deno 1.40 发布:Temporal API、简化导入与开发者工具全面升级指南(2025)

作者:API传播员 · 2025-09-20 · 阅读时间:5分钟

我们很高兴地宣布 Deno 1.40 的发布,这是 Deno 发展历程中的重要一步。这个版本带来了许多新功能,包括支持高级日期和时间操作的强大 Temporal API,以及采用最新的装饰器语法以实现更具表达力的代码。此外,Deno 1.40 还对部分功能进行了弃用、稳定化和删除,为未来的 Deno 2 做好准备。


Temporal API 的引入

Temporal API 是 JavaScript 生态中一个重要的提案,旨在提供更强大的日期和时间操作功能。在 Deno 1.40 中,您可以通过启用 --unstable 标志来使用 Temporal API。

此外,Deno 1.40 还新增了对 import.meta.filenameimport.meta.dirname 属性的支持。这些属性类似于 CommonJS 模块系统中的 __filename__dirname,可以提供当前模块文件的绝对路径和目录路径:

  • import.meta.filename:提供当前模块文件的绝对路径。
  • import.meta.dirname:提供当前模块文件所在目录的路径。

以下是这些属性在不同操作系统中的表现:

在 Unix 系统中:

$ deno run /dev/my_module.ts
/dev/my_module.ts
/dev/

在 Windows 系统中:

C:> deno run C:my_module.ts
C:my_module.ts
C:

需要注意的是,这些属性仅适用于本地模块(从文件系统加载的模块),对于远程模块(通过 http://https:// 导入的模块)则返回 undefined


更简单的 deno.json 导入配置

在 Deno 1.40 中,deno.json 文件的 imports 字段支持更简化的语法。例如,之前如果要从 npm 使用 preact,需要手动配置子路径导出。而现在,您只需简单配置即可直接导入 preact 和其子路径(如 preact/hooks)。

此改进大大简化了依赖管理,提升了开发效率。


弃用的功能

为了优化平台性能和简化 API,Deno 1.40 对以下功能进行了弃用:

  • Deno.serveHttp():被更快、更简单的 Deno.serve() 替代。
  • Deno.metrics():转向更有针对性的命令行标志和 API,例如 --strace-ops
  • 流相关函数:逐步过渡到 Web 流,部分流函数已弃用,但仍可通过 Deno 标准库访问。
  • Deno.customInspect:改用 Symbol.for("Deno.customInspect"),以提高浏览器兼容性。
  • 资源 ID(rid)相关 API:包括 Deno.isatty()Deno.close() 等,未来将被原生 JavaScript 对象的资源引用替代。

这些弃用措施旨在为 Deno 2 的发布铺平道路,同时确保开发者有足够的时间完成迁移。


新的稳定功能

以下 API 在 Deno 1.40 中已正式稳定:

  • Web API:支持 rejectionhandled 事件,改进了未处理 Promise 拒绝的处理方式。
  • Node.js API:修复了部分 Node.js API 的兼容性问题,例如 ChildProcess.send()

改进的开发者工具

Deno 1.40 对开发者工具进行了多项改进:

  1. 更智能的类型检查:在类型检查期间,稳定和不稳定的 API 类型定义会自动包含,无需额外配置。
  2. 改进的自动导入完成:修复了某些情况下的解析错误,使导入映射更加准确。
  3. 新的诊断打印工具:为 deno-lintdeno-doc 提供了更清晰的诊断信息。
  4. 新增 linter 规则:默认启用了 "no-window" 规则,同时支持在忽略警告时添加注释解释。

不稳定功能的管理

Deno 1.40 开始逐步弃用通用的 --unstable 标志,转而采用更细粒度的标志(如 --unstable-webgpu)。此改动为未来的 Deno 2 提供了更清晰的功能控制。

此外,类型检查工具也改进了对不稳定 API 的支持,开发者在启用特定功能时将获得更明确的提示。


总结

Deno 1.40 是一个重要的版本更新,不仅引入了强大的 Temporal API 和更简化的配置方式,还通过弃用和稳定化措施为未来的 Deno 2 打下了坚实基础。我们鼓励开发者尽快升级到最新版本,以体验这些改进带来的便利。

原文链接: https://deno.com/blog/v1.40