内容提要
Node.js v22.8.0新增了一个新的API模块enableCompileCache(),用于磁盘代码缓存。还支持在退出之前满足特定阈值的代码覆盖要求。包括各种错误修复和改进。可以在Node.js网站上找到发布文件和文档。
延伸解读
编译缓存 API 的实用价值
Node.js v22.8.0 新增的 module.enableCompileCache() 允许工具和库作者在代码中启用磁盘缓存,而不再依赖用户设置 NODE_COMPILE_CACHE 环境变量。这意味着框架或 CLI 工具可以自动为自身模块启用缓存,提升启动性能。该 API 是 v8-compile-cache 等第三方包的内置替代,且明确支持 ESM,对现代 Node.js 项目更友好。
代码覆盖率阈值如何影响 CI
在启用 --experimental-test-coverage 后,可通过 --test-coverage-branches、--test-coverage-functions、--test-coverage-lines 设置 0 到 100 的整数阈值。若任一覆盖率未达标,进程将以退出码 1 结束。这使 CI 中强制覆盖率门槛变得简单,无需额外脚本。但需注意该功能仍标记为实验性,且阈值设置错误会抛出 TypeError。
vm 上下文的新选项与适用场景
v22.8.0 实现了 vm.constants.DONT_CONTEXTIFY,用于创建不上下文化全局对象的上下文。当用户需要冻结上下文(上下文化后无法冻结)或不需要拦截器行为以加速全局访问时,这一选项非常有用。它提供了更轻量的 vm 上下文创建方式,适合对性能或安全性有特定要求的场景。
Q&A
Node.js v22.8.0新增了什么功能?
新增了enableCompileCache() API模块,用于启用磁盘代码缓存。
如何使用Node.js的代码覆盖率阈值功能?
需要启用--experimental-test-coverage标志,并设置覆盖率阈值,如--test-coverage-lines=<threshold>。
enableCompileCache() API模块的主要优势是什么?
它允许工具和库作者启用自己的代码缓存,性能更佳,并支持ESM。
Node.js v22.8.0中如何设置代码覆盖率的阈值?
可以设置分支覆盖率、函数覆盖率和行覆盖率的阈值,范围为0到100之间的整数。
如果代码覆盖率未达到指定阈值会发生什么?
如果未达到阈值,进程将以代码1退出。
Node.js v22.8.0修复了哪些错误?
修复了多个错误和改进,包括性能提升和文档更新。