ts-jest 安装与 Jest 配置指南:从依赖安装到 config:init 自动生成配置文件 测试开发工具【免费下载链接】ts-jestA Jest transformer with source map support that lets you use Jest to test projects written in TypeScript.项目地址https://gitcode.com/gh_mirrors/ts/ts-jest点击查看免费下载本指南面向需要在 TypeScript 项目中接入 Jest 测试的开发者系统讲解 ts-jest 的安装方式、Jest 配置文件的两条创建路径ts-jest config:init与jest --init以及自定义配置时 preset 与transform的关系。读完本文你将能在一分钟内搭好可运行的jest.config.js并理解配置背后 ts-jest 预设的生成原理。一、安装依赖一次命令装齐四件套ts-jest 是 Jest 的一个 transformer负责把.ts/.tsx文件编译为 Jest 可执行的 JavaScript并附带 source map 支持。要让测试链路完整跑通项目里需要同时具备 Jest、TypeScript、ts-jest 本身以及类型声明包types/jest。在项目根目录执行以下命令即可一次性安装全部依赖npm install --save-dev jest typescript ts-jest types/jest四个包的分工如下依赖作用jest测试运行框架本体typescriptTypeScript 编译器ts-jest 在转译阶段调用它ts-jest连接 Jest 与 TypeScript 的 transformertypes/jest提供describe、it、expect等全局 API 的类型声明让测试文件通过类型检查关于版本兼容的说明ts-jest 与 Jest、TypeScript 存在版本耦合。以当前仓库 package.json 中的peerDependencies为准ts-jest 声明支持jest^29.0.0 || ^30.0.0、typescript4.3 7同时将babel/core、babel-jest、jest/transform等列为可选 peer 依赖。这意味着如果项目要混用 Babel 处理 JS 文件还需要另行安装对应的 Babel 相关包。常见报错与兜底方案官方文档特别提醒如果执行npx相关命令时出现npx: command not found可以将npx XXX替换为node node_modules/.bin/XXX从项目根目录直接调用本地安装的二进制文件。例如node node_modules/.bin/ts-jest config:init二、创建 Jest 配置文件让 Jest 认识 TypeScript默认情况下Jest 不加任何配置也能运行但它不会编译.ts文件。要让 Jest 用 ts-jest 转译 TypeScript必须创建一个告知 Jest 使用 ts-jest 预设的配置文件。方式一npx ts-jest config:init自动生成ts-jest 自带 CLI可以自动为你生成基础配置# npm 项目 npx ts-jest config:init # Yarn 项目 yarn ts-jest config:init命令执行后会在项目根目录生成一个jest.config.js其中包含了告诉 Jest 如何处理.ts文件的预设信息。生成的配置长什么样从 init.ts 的模板源码可以看出config:init实际生成的内容基于 Handlebars 模板最终产物类似const { createDefaultPreset } require(ts-jest); const tsJestTransformCfg createDefaultPreset().transform; /** type {import(jest).Config} **/ module.exports { testEnvironment: node, transform: { ...tsJestTransformCfg, }, };其中transform键由createDefaultPreset()提供核心是匹配.tsx?文件的规则^.\\.tsx?$: [ts-jest, {}]见 src/constants.ts 与 create-jest-preset.ts。如果项目package.json中type: module模板会自动改用export default导出。方式二jest --init手动补全你也可以使用 Jest 官方初始化命令根据包管理器前缀npx或yarnnpx jest --init过程中 Jest 会交互式提问其中关于“是否启用 TypeScript”的问题请回答no。初始化完成后手动在生成的jest.config.js中追加一行module.exports { // ... preset: ts-jest, };这样 Jest 就会加载ts-jest提供的默认预设对应 presets/default/jest-preset.js该文件实际转发到根目录jest-preset.js并最终引用构建产物dist中的defaults。两种方式的取舍ts-jest config:init生成的是显式的transform配置便于后续直接修改jest --init走的是preset: ts-jest的简写路线隐藏了底层正则与 transformer 细节适合追求最小配置的场景。三、config:init的高级参数一份命令适配多种项目形态从 init.ts 中导出的help文本可以看到ts-jest config:init远不止“生成默认配置”这么简单Usage: ts-jest config:init [options] [config-file] Arguments: config-file 可以是 js 或 json 格式的 Jest 配置文件 若传入 package.json则配置写入 jest 属性。 默认: jest.config.js Options: --force 丢弃已有的任何 Jest 配置 --js ts|babel 以 ts 让 ts-jest 处理 .js 文件 或以 babel 让 babel-jest 处理 --no-jest-preset 禁用 Jest presets --tsconfig file 指定 tsconfig.json 的路径 --babel 启用 Babel 处理 ts-jest 转译出的 js 内容已废弃 --jsdom 使用 jsdom 作为测试环境而非 node几个典型用法# 指定配置文件名为 package.json写入 jest 属性 npx ts-jest config:init package.json # 让 ts-jest 同时接管 .js 文件allowJs 场景 npx ts-jest config:init --js ts # 使用 jsdom 环境适合 React 组件测试 npx ts-jest config:init --jsdom # 指定 tsconfig 路径 npx ts-jest config:init --tsconfig tsconfig.test.json # 覆盖已存在的配置 npx ts-jest config:init --force这些选项与 src/cli/index.ts 中 yargs 解析的参数一一对应。其中--js的取值被coerce强制限定为babel或ts非法值会直接报错--js ts会调用createJsWithTsPreset将 transform 规则扩展为^.\\.[tj]sx?$即同时覆盖.ts、.tsx、.js、.jsx见 create-jest-preset.ts--js babel则会生成同时包含babel-jest处理 JS与ts-jest处理 TS的双轨配置见 create-jest-preset.ts。另外config:init在写入前会做一系列安全检查默认配置文件名必须为.js或以package.json结尾若目标文件已存在且未加--force会直接抛错避免误覆盖见 init.ts。四、自定义配置preset 与 transform 的边界修改 Jest 自身配置若需要调整 Jest 自身的全局选项如testEnvironment、moduleNameMapper、coverageThreshold等应遵循 Jest 官方配置指南操作。ts-jest 只负责“把 TypeScript 变成 JavaScript”这一层不干预 Jest 的测试运行策略。修改 ts-jest 专属选项ts-jest 提供了 8 个专属配置项定义在 Jest 配置的transform对象中也可写入package.json的jest字段、jest.config.js或jest.config.ts。完整参数见 options.md核心清单如下选项作用类型默认值compiler指定用作编译器的 TypeScript 模块stringtypescripttsconfigTypeScript 编译器相关配置路径 / 对象 / 禁用string|object|boolean自动isolatedModules禁用类型检查仅做单文件转译boolean关闭astTransformers自定义 TypeScript AST transformersobject自动diagnostics诊断信息相关配置boolean|object开启babelConfigBabel(Jest) 相关配置boolean|string|object关闭stringifyContentPathRegex匹配的文件将变成返回自身内容的模块string|RegExp关闭useESM启用 ESM 支持boolean自动两种推荐写法写法一使用createDefaultPreset()显式展开生成配置的默认产物// jest.config.js const { createDefaultPreset } require(ts-jest) /** type {import(ts-jest).JestConfigWithTsJest} */ module.exports { // [...] ...createDefaultPreset(), }写法二使用preset简写// jest.config.js module.exports { preset: ts-jest, }一个重要提醒若你在自定义配置中自行编写了transform对象请务必移除preset: ts-jest否则 Jest 可能无法正确转译文件——两者同时存在会互相干扰。这一注意事项在 options.md 的开头有明确警示。另外如果使用jest.config.tsTypeScript 编写的配置Jest 会通过ts-node编译该配置文件这个过程不经过 ts-jest二者互不参与。五、安装后的验证与进一步学习安装并生成配置后可以写一个最小的冒烟测试来验证链路是否打通// sum.ts export function sum(a: number, b: number): number { return a b }// sum.spec.ts import { sum } from ./sum test(sum adds two numbers, () { expect(sum(1, 2)).toBe(3) })然后运行npx jest或npm test。若测试通过说明 Jest 已能正确识别并转译 TypeScript 文件。后续还可以深入以下仓库文档与源码全部 ts-jest 专属选项 options.md含compiler、tsconfig、diagnostics、isolatedModules等各参数的独立详解页预设的生成逻辑与 ESM 变体 create-jest-preset.ts提供createDefaultPreset、createJsWithTsPreset、createJsWithBabelPreset以及对应 ESM 版本config:init命令的完整实现与参数解析 init.ts 与 index.ts仓库自带的各类示例项目ESM、Babel、Monorepo、React 等可作参考 examples结语安装 ts-jest 的核心只有两步装齐四个依赖包然后让 Jest 认识.ts文件。npx ts-jest config:init是官方推荐的自动化解法其背后通过createDefaultPreset系列函数生成精确的transform匹配规则而手动自定义时牢记“写了transform就别再写preset”这条边界即可避免绝大多数配置冲突问题。赞分享测试开发工具【免费下载链接】ts-jestA Jest transformer with source map support that lets you use Jest to test projects written in TypeScript.项目地址https://gitcode.com/gh_mirrors/ts/ts-jest点击查看免费下载相关推荐ts-jest 安装与配置指南依赖安装、config:init 初始化与 Jest 配置定制ts jest 安装与配置指南依赖安装、 config:init 初始化与 Jest 配置定制 本指南面向使用 Jest 编写 TypeScript 项目测试测试开发工具ts-jest 安装与 Jest 配置初始化完整指南从依赖安装到 preset 定制ts jest 安装与 Jest 配置初始化完整指南从依赖安装到 preset 定制 本篇指南围绕 ts jest 官方文档《Installation》展开测试开发工具2025最新ts-jest安装指南从依赖配置到自动化初始化全流程2025最新ts jest安装指南从依赖配置到自动化初始化全流程 还在为TypeScript项目配置Jest测试环境而头疼本文将带你完成从依赖安装到自动化配测试开发工具上一篇Terminal.Gui 移除 Legacy ConfigurationManager 的迁移工程实录CM → MEC 基线清查与可复现验证下一篇使用 Zeit Now 部署 Prisma GraphQL 服务器从基础 now 到环境变量驱动的 .env 进阶实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考