最后的润色:v2.0.0-rc.10 版本的新特性
Deno 2 即将发布,但如果您想立即尝试,可以使用 Deno 2.0 候选版本。自从我们两周前发布候选版本以来,我们已经进行了 10 次补丁更新,其中我们修复了错误并添加了新功能,例如通过 HTTP 导入模块的新权限标志。请继续阅读完整的更改列表。
要试用候选版本,请在您的终端中运行以下说明
deno upgrade
deno upgrade rc
ℹ️ 如果您正在使用 Homebrew 等其他分发方法,
deno upgrade
可能不可用。按照(shell 或 powershell 安装说明)[https://docs.deno.org.cn/runtime/getting_started/installation/] 进行操作,然后运行上述命令。
🚨️ 我们正在积极征求反馈 🚨️
此候选版本帮助我们在最终 2 版本发布之前识别问题。如果您遇到任何问题或需要额外的指导,请在 GitHub 中创建 issue,或在我们的 Discord 的
#deno-2-help
频道中提问。我们的团队正在积极监控这两个地方,并将尽快提供帮助。
v2.0.0-rc.10 版本的新特性
新增
--allow-import
权限标志,用于通过 HTTP 导入现在,net 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
全局变量时,会显示有用的提示。
window
全局变量的提示通过升级
tower_http
,压缩数据的fetch
API 吞吐量得到了提高performance.measure()
API 已得到优化当包不在
package.json
中时,支持deno run npm:<package>
在显式安装时,重复警告关于未运行的生命周期脚本
以及大量的错误修复
- 修复:改进了 Deno.UnsafeWindowSurface 的错误提示,修正了 HttpClient 名称,清理了未使用的代码
- 修复:cjs 解析案例
- 修复:与 deno_config 一致,并将 “experimentalDecorators” 视为已弃用
- 修复:对于具有空版本约束的标识符,尽早报错
- 修复:如果有效的标志在子命令之前传递,则报错
- 修复:从帮助输出中隐藏 ‘deno cache’
- 修复:require(esm) 时 panic
- 修复:预编译保留 SVG camelCase 属性
- 修复:删除帮助消息中的错别字
- 修复:更新 deno_npm 以修复使用 crossws 的 deno install
- 修复:将 patchver 更新到 0.2
- 修复:将 sui 更新到 0.4
- 修复(add/install):在
deno add npm:pkg
中,npm 包默认使用 “latest” 标签 - 修复(check):忽略远程模块中的 noImplicitOverrides
- 修复(check):正确地在 js 文件的类型文件中显示依赖错误
- 修复(cli):使用
--node-modules-dir
标志时,默认设置为 auto - 修复(cli):仅当尚未允许所有网络访问时,才为 deno serve 设置 allow net 标志
- 修复(cli):在使用全局缓存时,警告关于未运行的生命周期脚本
- 修复(compile):在 RC 和 LTS 版本中支持 ‘deno compile’
- 修复(coverage):忽略来自文档测试的 URL
- 修复(doc):将图形错误显示为警告
- 修复(ext/crypto):确保 EC 公钥以未压缩形式导出
- 修复(ext/crypto):拒绝 SubtleCrypto#importKey 中的空用法
- 修复(ext/node):修复 process.stdin.pause()
- 修复(ext/node):修复 vm 沙箱对象 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 标识符,报错而不是 panic
- 修复(info):将 “version” 字段移到 json 输出的顶部
- 修复(install):直接比较版本以决定是否为工作区成员创建子 node_modules 目录
- 修复(install):在 node_modules 目录中存储与包关联的标签
- 修复(installl):即使 bin 条目未放在
node_modules/.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 服务器中回答问题还是报告错误,我们都非常感谢您的支持。特别感谢以下人员为 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 中提供反馈。我们将继续积极监控这两个领域,以确保所有重大错误都得到修复。