最后的润色:v2.0.0-rc.10 的新功能
Deno 2 即将发布,但如果您想立即试用,可以使用Deno 2.0 发布候选版本。自两周前发布该候选版本以来,我们已进行了 10 个补丁更新,修复了 bug 并添加了新功能,例如用于通过 HTTP 导入模块的新权限标志。请阅读完整的更改列表。
要试用此发布候选版本,请在您的终端中运行以下指令:
deno upgrade
deno upgrade rc
ℹ️ 如果您使用 Homebrew 等其他分发方式,
deno upgrade
可能不可用。请遵循 shell 或 PowerShell 安装说明[https://docs.deno.org.cn/runtime/getting_started/installation/],然后运行上述命令。
🚨️ 我们正在积极征求反馈 🚨️
此发布候选版本有助于我们在最终的 2.x 版本发布前识别问题。如果您遇到任何问题或需要额外指导,请在 GitHub 上创建 issue,或在我们的 Discord 频道
#deno-2-help
中提问。我们的团队正在积极监控这两个地方,并将尽快提供帮助。
v2.0.0-rc.10 版本更新了什么
用于通过 HTTP 导入的新权限标志
--allow-import
网络 API 报告的错误(例如
Deno.listen()
或Deno.startTls()
)现在将抛出Deno.errors.Busy
错误,而不是通用的Deno.errors.BadResource
错误。现在使用
npm:esbuild
更容易了,感谢不再需要--allow-scripts
标志。运行使用带有 Node-API 插件的 npm 包的程序,如果安装不正确,现在会提供有用的提示。
语言服务器快速修复,为不分发类型但有相应
@types
包的 npm 包添加// @ts-types="npm:..."
deno fmt
稳定了 CSS、HTML 和 YAML 格式化程序。不再需要使用--unstable-css
、--unstable-html
和--unstable-yaml
标志。组件格式化程序现在支持.vto
和.njk
文件。node:buffer
模块现在支持transcode
方法node:crypto
获得对 p521 密钥的支持新的 Deno 版本将附带 sha256 校验和文件
globalThis.location
现在是一个可配置属性在 Deno 2 中已移除
window
全局对象,现在使用它时会显示有用的提示。
通过升级
tower_http
,fetch
API 处理压缩数据的吞吐量得到了改进。performance.measure()
API 已优化。支持在
package.json
中不存在包时使用deno run npm:<package>
。
以及大量的 Bug 修复
- 修复:Deno.UnsafeWindowSurface 更好的错误提示,正确的 HttpClient 名称,清理未使用的代码
- 修复:cjs 解析情况
- 修复:与 deno_config 保持一致,并将 "experimentalDecorators" 视为已弃用
- 修复:对带有空版本约束的 specifier 立即报错
- 修复:如果有效标志在子命令之前传递,则报错
- 修复:在帮助输出中隐藏 'deno cache'
- 修复:require(esm) 时发生 panic
- 修复:预编译时保留 SVG camelCase 属性
- 修复:移除帮助消息中的拼写错误
- 修复:更新 deno_npm 以修复
deno install
与 crossws 的问题 - 修复:将 patchver 更新到 0.2
- 修复:将 sui 更新到 0.4
- 修复(add/install):
deno add npm:pkg
中 npm 包默认使用 “latest” 标签 - 修复(check):在远程模块中忽略 noImplicitOverrides
- 修复(check):正确显示 js 文件类型文件中的依赖错误
- 修复(cli):使用 --node-modules-dir 标志时默认自动
- 修复(cli):仅当未完全允许时才为 deno serve 设置允许网络标志
- 修复(cli):对带有全局缓存的未运行生命周期脚本发出警告
- 修复(compile):在 RC 和 LTS 版本中支持 ‘deno compile’
- 修复(coverage):忽略文档测试中的 URL
- 修复(doc):将图表错误显示为警告
- 修复(ext/crypto):确保 EC 公钥以未压缩方式导出
- 修复(ext/crypto):拒绝 SubtleCrypto#importKey 中的空用法
- 修复(ext/node):修复 process.stdin.pause()
- 修复(ext/node):修复 vm sandbox 对象 panic
- 修复(ext/node):移除未实现的 promiseHook 存根
- 修复(ext/node):为 OpenBSD 存根 cpu_info()
- 修复(ext/web):在 EventTarget.removeEventListener 中不忽略 capture
- 修复(flags):--allow-all 应与较低权限冲突
- 修复(flags):将 docs.deno.com 的部分内容移至帮助输出
- 修复(flags):正确对 URL 报错
- 修复(fmt):--check 在 CSS、YAML 和 HTML 中已损坏
- 修复(info):使用 byonm 时,npm specifier 报错而不是 panic
- 修复(info):将 “version” 字段移动到 json 输出顶部
- 修复(install):直接比较版本以决定是否为工作区成员创建子 node_modules 目录
- 修复(install):将与包关联的标签存储在 node_modules 目录中
- 修复(install):即使未放置在
node_modules/.bin
中,也使 bin 条目可执行 - 修复(lint):在 linter 中正确处理旧版 jsx
- 修复(no-slow-types):更好的
override
处理 - 修复(node):如果静态分析 CJS 重新导出失败,则不报错
- 修复(node):实现支持
npm:sqlite3
所需的 libuv API - 修复(node):在 CJS 重新导出分析期间包含 “node” 条件
- 修复(node):通过临时文件而不是环境变量将 NPM_PROCESS_STATE 传递给子进程
- 修复(workspace):处理通过 --config 指定配置包含成员的情况
致谢
一如既往,没有我们社区的帮助,我们就无法构建 Deno!无论是在我们的社区 Discord 服务器中回答问题,还是报告 bug,我们都非常感谢您的支持。特别感谢以下人员对 Deno 2 发布候选版本做出的贡献:Ian Bull、Kenta Moriuchi、Mohammad Sulaiman、MujahedSafaa、Óscar Otero、Pig Fang、Simon Lecoq、Volker Schlecht 和 Carles Escrig Royo。
接下来
Deno 2.0 付出了大量心血,我们计划下周发布。感谢您的耐心,也感谢您试用发布候选版本并在 Discord 或 GitHub 上提供反馈。我们将继续积极监控这两个平台,确保所有主要 bug 得到修复。