You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nrwl/Nx jest.preset.js中如何引用projectName配置值?

在Nx Monorepo中动态配置Jest覆盖率目录的项目名称

你遇到的问题是<projectName>作为静态字符串无法被Jest自动解析,Nx提供了两种可靠的动态获取当前项目名称的方式:

方案一:使用Nx注入的环境变量

Nx在执行测试命令时会自动设置NX_TARGET_PROJECT环境变量,直接在预设文件中引用即可动态生成对应项目的覆盖率目录:

const nxPreset = require('@nrwl/jest/preset').default;

module.exports = {
  ...nxPreset,
  coverageDirectory: `../../coverage/${process.env.NX_TARGET_PROJECT}`,
};

执行nx test <your-project-name>后,覆盖率报告会自动生成在coverage/<your-project-name>目录下。

方案二:通过Jest配置函数动态生成(兼容旧版Nx)

如果环境变量方式不生效(比如使用较旧版本的Nx),可以将预设导出为一个函数,利用Jest的配置上下文获取项目信息:

const nxPreset = require('@nrwl/jest/preset').default;

module.exports = async (jestConfig) => {
  const baseConfig = await nxPreset(jestConfig);
  // 优先从jestConfig的displayName取项目名,环境变量兜底
  const projectName = jestConfig.displayName || process.env.NX_TARGET_PROJECT;
  return {
    ...baseConfig,
    coverageDirectory: `../../coverage/${projectName}`,
  };
};

这种方式更灵活,能适配不同版本的Nx和Jest配置场景。

验证方法

运行任意项目的测试命令,比如nx test my-library,检查根目录下的coverage文件夹,确认是否生成了my-library子目录且包含覆盖率报告文件。

内容的提问来源于stack exchange,提问作者Barry Michael Doyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:42:38