@jest/source-map

中文文档
30.5.2发布于 2026/09/18MITTypeScriptESM + CJS近 30 天下载 2.2亿

应用源地图来堆叠痕迹,所以一个失败的测试点在您写的代码上而不是在代码Jest运行上.

中文使用文档
文档目录7 节
  1. 安装
  2. API 密码
  3. SourceMapSupport#install(sourceMaps?: SourceMapRegistry | n…
  4. SourceMapSupport#getCallsite(level: number, sourceMaps?: So…
  5. getCallsite(level: number, sourceMaps?: SourceMapRegistry |…
  6. SourceMapRegistry
  7. 为可读性选择函数名称,而非光谱

@ jest/ source- map (英语)

应用源地图来堆叠痕迹,所以一个失败的测试点在您写的代码上而不是在代码Jest运行上.

这是杰斯特内部使用的模块. 它的存在是因为 --enable-source-maps 财务报告和审定财务报表 module.setSourceMapsSupport() 不覆盖编译的代码 vm,这是杰斯评价测试文件的方式,并且因为节点无法注册一个文件名的地图——杰斯服务地图来自自己的变换管道,而不是来自 sourceMappingURL 磁盘上的评论.

安装

$ npm install --save @jest/source-map

API 密码

SourceMapSupport#install(sourceMaps?: SourceMapRegistry | null, options?: SourceMapSupportInstallOptions): void

替换 Error.prepareStackTrace 在当前范围内,读取 .stack 在任何错误上使框架与原始来源相对应. jest-runner 拥有每个工人一个实例,每个测试文件安装一次.

sourceMaps 将已转换的文件映射到 .map 文件 Jest 写入了它的变换缓存——在 Jest 内部, runtime.getSourceMaps()编辑 sources 内有 URL 语义的地图解析度与已转换的文件相对,而不是与地图本身的位置相对. 登记册中缺失的文件返回到 sourceMappingURL 对文件本身进行评论,该文件涵盖预先编译的输出,用于运送自己的地图.

import {SourceMapSupport} from '@jest/source-map';

const sourceMapSupport = new SourceMapSupport();
sourceMapSupport.install(new Map([['/build/app.js', '/cache/app.js.map']]));

new Error('boom').stack;
// Error: boom
//     at greet (/src/app.ts:12:9)

物料在过程的寿命期间会被安装,每个调用交换都会被安装在新的登记册中. 无事被还原,是故意的:在测试完成后所抛出的一个错误——一个出错的计时器,一个浮出水面的承诺——是用户最难安排的时间,否则它就会在被转换的文件中报告一个位置.

无法解析的地图通过 console.warn; 通过 {suppressWarnings: true} 关掉它.

SourceMapSupport#getCallsite(level: number, sourceMaps?: SourceMapRegistry | null): CallSite

返回一个已重映射 CallSite, (中文(简体) ), level 在呼叫器上方的帧。 用于 --testLocationInResults。将其解析的地图与已安装的处理器共享,因此 .map 文件读取一次.

getCallsite(level: number, sourceMaps?: SourceMapRegistry | null): CallSite

折旧的自由功能别名 SourceMapSupport#getCallsite。 。 。 .

SourceMapRegistry

Map<string, string> ——将文件路径转换为源地图路径.

为可读性选择函数名称,而非光谱

框架以源地图命名 name 在画框 拥有 立场。 这个名字是标识符 调用 而不是附加功能,所以每个框架都用其线上的呼声附加注释:

at Object.toBeTruthy (assertionCount.test.js:12:17)
at Object.setTimeout (inside.js:9:3)

光谱校正读取名称 电话 换成位置。 这是什么 [email protected] 切换到,它会折叠上面的帧到 Object.<anonymous>,因为V8对于模块级框架没有自己的名称. 无论是哪种方式,位置都是一样的——只有名字不同,并且只有V8不能命名帧的地方.

这个包对读取测试失败的选择,所以保留了注释. 如果你需要谱面语义, getCallsite 手举起 CallSite 你可以自己地图.

版本与发布记录

@jest/source-map 共发布 65 个版本,首次发布于 2019/03/05;过去 12 个月发布了 2 个版本。

版本发布日期距今
30.5.2latest2026/09/181 个月前
30.5.02026/08/282 个月前
30.0.12025/06/191.4 年前
30.0.02025/06/101.4 年前
30.0.0-rc.1next2025/06/091.4 年前
30.0.0-beta.82025/06/041.4 年前

关于 @jest/source-map 的常见问题

@jest/source-map 是什么?

应用源地图来堆叠痕迹,所以一个失败的测试点在您写的代码上而不是在代码Jest运行上.

如何安装 @jest/source-map?

在项目目录运行 npm install @jest/source-map,或使用 pnpm add / yarn add / bun add。

@jest/source-map 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@jest/source-map 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@jest/source-map 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@jest/source-map 可以商用吗?

@jest/source-map 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@jest/source-map 的下载量有多少?

根据 npm 官方下载统计,@jest/source-map 在 2026/10/07 – 2026/11/05 这 30 天内被下载 216,266,136 次,日均约 7,208,871 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@jest/source-map 还在维护吗?

最新版本 30.5.2 发布于 2026/09/18(1 个月前);至今共发布 65 个版本,其中过去 12 个月发布了 2 个;首次发布于 2019/03/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。