AVA 支持的 Node.js 版本(Support Statement):官方支持策略与维护承诺详解
测试【免费下载链接】avaNode.js test runner that lets you develop with confidence 项目地址https://gitcode.com/gh_mirrors/ava/ava点击查看免费下载AVA 是一个专注于并发执行与开发信心的 Node.js 测试运行器。本指南以仓库官方支持声明docs/support-statement.md为核心系统讲解 AVA 对 Node.js 版本的支持策略、支持与放弃支持dropping support的确切含义、主版本号变更与支持范围的关系以及实验特性nonSemVerExperiments与版本承诺的边界。读完本文你将能准确判断哪些 Node.js 版本可以放心用于运行 AVA、升级 AVA 主版本时支持范围会如何变化以及如何在自己的项目里落实这套支持策略。核心原则跟随 Node.js 官方发布节奏AVA 的支持策略建立在一条简单而明确的基准之上AVA 支持任何 Node.js 官方自身仍在支持 的主要版本中的最新发布版。也就是说AVA 不会自行定义一个独立的 Node.js 版本清单而是跟随 Node.js 官方发布计划Release Schedule。只要某个 Node.js 主版本仍处于官方支持期包括当前的 LTS 版本与正在维护的 Current 版本AVA 就承诺支持该主版本下的最新发布版。这一原则在仓库的多个位置得到一致体现readme.md 中Supported Node.js versions一节原样引用了这条策略并指向 docs/support-statement.md 作进一步说明package.json 的engines字段将其落实为安装期约束当前版本要求node: ^22.20 || ^24.12 || 26意味着 Node.js 22≥22.20、24≥24.12及 26 以上的最新发布版被明确支持.github/workflows/ci.yml 的 CI 测试矩阵在ubuntu-latest、windows-latest、macos-latest三个平台上分别以node-version: [^22.20, ^24.12, ^26]运行完整测试套件用真实执行验证支持承诺。从源码结构看engines字段与 CI 矩阵共同构成了支持声明的双重落地机制前者在npm install阶段向不符合要求的 Node.js 版本发出警告/报错后者保证支持声明中的每个版本都持续被测试覆盖。支持Support的确切含义文档对支持一词给出了明确的操作性定义避免产生歧义。所谓支持某个 Node.js 版本具体包含两件事在该版本下运行完整测试套件AVA 的 CI 会在承诺支持的每个 Node.js 版本上跑完整测试这既包括npm test对应的主测试流程见 scripts/test.sh也包括 scripts/ci.sh 中带有覆盖率收集c8、watch 模式测试、TAP 报告器测试等更完整的 CI 流程接受针对该版本 Bug 的 Pull Request只要问题不是 Node.js 自身已知、且即将被官方修复的 BugAVA 都会接受修复补丁。相应地**放弃支持Dropping Support**的含义同样被明确化AVA 会把该 Node.js 版本从 CI 测试矩阵中移除并且不再接受专门针对该版本修复 Bug 的 Pull Request。这意味着被放弃的版本可能在新版本上出现回归且不会被主动修复因此升级前务必核对支持范围。需要注意的例外是如果某个故障是Node.js 自身已知的 Bug、且上游即将修复AVA 不会接受为绕过它而引入的补丁——这是为了避免在 AVA 中堆叠针对上游临时缺陷的兼容代码。主版本号Major Version与支持范围的关系支持声明的后半部分重点阐述了 AVA 主版本号major version的语义这是版本策略中最容易被使用者忽略、却最影响升级决策的部分放弃一个仍处于 LTS 覆盖期的主版本时AVA 会提升主版本号。换句话说如果你正在使用的 AVA 主版本突然不再支持某个 LTS 版本这是重大变更会以主版本号升级的形式显式宣告而不是悄悄发生。每次提升主版本号AVA 都会显式放弃对非最新 Node.js 发布版的支持。这样做的目的有两个一是可以放心依赖较新 Node.js 中反向移植backported的 API二是可以利用较新 V8 引擎带来的能力无论这些依赖发生在 AVA 自身还是它的某个依赖包里。这是 AVA 能够保持代码库精简、不维护大量 polyfill 的关键前提。允许提前放弃如果某个新 AVA 主版本预计在某个 Node.js 版本达到生命周期终点End-of-Life之际或之后才趋于稳定AVA 可以在准备提升主版本号的预发布版本major-version-bumping-pre-release中就提前放弃对该 Node.js 版本的支持。也就是说放弃支持的时点不必严格等到 EOL 当天而是允许与发布计划对齐。尽量避免意外放弃AVA 会尽力避免不小心破坏对非最新 Node.js 发布版的支持。如果这类破坏确实发生了AVA 会接受用于恢复功能的 Pull Request但如果修复成本过高也可能选择弃用deprecate出问题的那个 AVA 版本并直接提升主版本号。综合起来这套规则对使用者的实际含义是停留在旧的 AVA 主版本并不意味着可以停留在旧的 Node.js 版本——一旦 AVA 提升主版本号支持范围就会向各主版本的当前最新发布版收敛旧的 Node.js 发布版只会在相应的主版本线内被临时兼容。实验特性nonSemVerExperiments不在版本承诺之内支持声明的最后一条专门划定了实验特性的边界通过nonSemVerExperiments配置启用的实验特性可能在任何时候被修改或移除而不必等待新主版本发布。这意味着实验特性不受语义化版本SemVer承诺保护——即使 AVA 的版本号没有变化实验特性也可能出现行为变更、被替换甚至被删除。其设计意图是让 AVA 可以快速验证新想法而无需为此承担长期兼容义务。该机制在配置加载层有完整的实现佐证配置入口见 docs/06-configuration.md 的 Experiments 一节示例配置如下// ava.config.js export default { nonSemVerExperiments: { feature: true } };lib/load-config.js 用白名单管理实验特性const EXPERIMENTS new Set([observeRunsFromConfig])目前仅支持observeRunsFromConfig这一个实验lib/load-config.js 在加载配置时做了两项校验nonSemVerExperiments必须是纯对象否则报错nonSemVerExperiments from … must be an object且其中的每个键都必须出现在白名单中否则报错nonSemVerExperiments.${key} from … is not a supported experiment对应的测试用例见 test/config/loader.js其错误快照记录在 test/config/snapshots/loader.js.md可直接验证上述两类报错信息。因此在依赖 AVA 时应当注意生产环境请避免依赖任何实验特性即使它们在你的 AVA 版本上可以正常工作同时由于白名单会随版本演进升级 AVA 后原本开启的实验特性可能已不在支持列表内需在升级后检查配置是否仍然有效。实践建议如何围绕支持策略规划升级结合支持声明与仓库中的落地实现可以为使用 AVA 的项目总结出几条可操作的规划建议以 Node.js 官方支持期为准绳在规划 Node.js 升级时优先对照 Node.js 官方发布计划而不是 AVA 的历史版本号。只要你的 Node.js 版本仍在官方支持期内且是最新发布版AVA 当前主版本就应能正常运行。把AVA 主版本升级视为支持范围收敛的信号每当 AVA 发布新的主版本都要检查自己的 Node.js 版本是否属于该主版本的最新发布版如需继续使用旧 Node.js 发布版则可能需要停留在旧的 AVA 主版本线但不保证获得新功能与全部修复。让 CI 矩阵与支持声明保持一致可以参考仓库自身的做法——在 .github/workflows/ci.yml 中为每个受支持的 Node.js 主版本建立矩阵并在 package.json 的engines字段中声明最低版本要求双保险地落实支持策略。将实验特性与生产依赖隔离nonSemVerExperiments白名单目前仅含observeRunsFromConfig随时可能变化建议只在独立的分支或实验环境中开启并保证不将其纳入必须长期兼容的代码路径。借助测试套件验证兼容性如果需要在特定 Node.js 版本上交付最稳妥的方式是直接在该版本上运行 AVA 的测试流程npm test见 scripts/test.sh以实际执行结果而非版本号判断兼容性。小结AVA 的官方支持声明docs/support-statement.md以跟随 Node.js 官方支持期为单一基准定义了支持/放弃支持的明确操作含义并通过放弃 LTS 版本必须提升主版本号每次主版本升级都会显式收敛到各主版本的最新发布版两条规则将版本承诺与主版本号语义绑定同时实验特性通过 lib/load-config.js 中的白名单机制与配置校验被明确排除在版本承诺之外。理解这套策略能帮助你在升级 Node.js 与 AVA 时做出可预期的决策避免在非受支持的版本组合上踩坑。赞分享测试【免费下载链接】avaNode.js test runner that lets you develop with confidence 项目地址https://gitcode.com/gh_mirrors/ava/ava点击查看免费下载相关推荐LunaTranslator视觉小说翻译完整指南LunaTranslator视觉小说翻译完整指南 没汉化的日文视觉小说边玩边查词根本跟不上剧情英文游戏对话框刷得更快更别想逐字理解。LunaTransl桌面应用OCR人工智能Gatsby 5.16.0 版本发布详解React 19 与 Node.js 24 官方支持Gatsby 5.16.0 版本发布详解React 19 与 Node.js 24 官方支持 导读 本文基于 Gatsby 官方 v5.16 发布说明 do前端静态站点Web框架上一篇Seal数据库查询优化Room的查询性能分析下一篇CANN/pypto-gym稀疏Flash Attention创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →