ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

零依赖测试方案:sample-monorepo 使用 Node 原生测试运行器的 5 个技巧

零依赖测试方案:sample-monorepo 使用 Node 原生测试运行器的 5 个技巧 零依赖测试方案sample-monorepo 使用 Node 原生测试运行器的 5 个技巧【免费下载链接】sample-monorepoSample monorepo setup with npm workspaces and typescript project references项目地址: https://gitcode.com/gh_mirrors/sa/sample-monorepo核心关键词零依赖测试、Node 原生测试运行器在前端与 Node 生态中测试通常意味着引入 Jest、Vitest 或 Mocha 等庞大的测试框架。而 sample-monorepo 这个基于 npm workspaces 与 TypeScript project references 的示例项目却展示了另一种更轻量的零依赖测试方案直接使用 Node 内置的测试运行器node --test。它不需要安装任何测试框架就能在 monorepo 中完成多包测试。本文将分享 5 个实用技巧帮你快速上手这套方案。1. 使用node --test替代测试框架实现零依赖测试sample-monorepo 的根目录 package.json 中测试脚本只调用 Node 原生能力没有任何 Jest 或 Mocha 依赖test:only: node --test --enable-source-maps \packages/*/dist/test/**/*.js\技巧点Node 22 已内置node:test模块无需任何第三方测试框架。测试产物为编译后的 JS 文件直接交给 Node 运行。--enable-source-maps让报错堆栈映射回 TS 源码方便定位。2. 用node:test与node:assert/strict编写测试用例以应用包为例packages/app/src/test/app.test.tsx 展示了最简写法从node:test引入describe/it从node:assert/strict引入断言无需任何额外配置。import { describe, it } from node:test; import assert from node:assert/strict;技巧点describe/it语法与主流框架几乎一致迁移成本极低。assert/strict提供严格的相等性比较断言能力完全够用。甚至可以直接测试 React 组件的服务端渲染见同文件中的renderToString用例。3. 配合--enable-source-maps调试 TypeScript 源码在 tsconfig.base.json 中开启了sourceMap与declaration测试脚本通过--enable-source-maps让运行时错误直接指向.ts源码行号。技巧点编译产物在packages/*/dist/源码映射让堆栈清晰可读。调试体验与直接跑 TS 无异无需 ts-node 等额外工具。4. 用通配符一次性运行所有包的测试组件包中有嵌套测试目录packages/components/src/test/sub/folder/test2.test.ts。根目录的测试脚本用通配符packages/*/dist/test/**/*.js覆盖所有包的所有测试文件。技巧点monorepo 下无需在每个包单独执行测试一条命令跑全量。新增包只需放入packages/目录测试自动纳入符合 README.md 中新增包即复制目录的约定。5. 用pretest钩子串联 lint 与构建根 package.json 中定义了pretestnpm run lint npm run build确保测试前先完成代码检查与 TypeScript 构建。技巧点借助 npm 生命周期钩子实现 lint → build → test 的完整流水线。配合eslint-plugin-no-only-tests防止.only用例被误提交。每个子包也都有独立的test脚本如 packages/server/package.json既可全量运行也可按包运行。总结sample-monorepo 用事实证明了在 Node 22 时代零依赖测试完全可行。它省去了框架安装、配置文件的成本让测试回归简单。若你的项目也是 npm workspaces TypeScript project references 的结构不妨直接npm run test体验这套 Node 原生测试运行器方案——少一个依赖多一分清爽。如果你想亲自体验可克隆 https://gitcode.com/gh_mirrors/sa/sample-monorepo 后依次执行npm i、npm run build、npm test。【免费下载链接】sample-monorepoSample monorepo setup with npm workspaces and typescript project references项目地址: https://gitcode.com/gh_mirrors/sa/sample-monorepo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进