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

使用@nx/vite:test执行器时,nx affected无法生成coverage目录

Nx Monorepo中nx affected --target=test无法生成Vitest项目coverage目录的解决方案

针对你遇到的问题——项目目录执行test能正常生成coverage目录,但根目录用nx affected --target=test运行时虽命中正确target却无法生成coverage,以下是几个可尝试的解决方向:

1. 固定Coverage输出路径

Vitest默认的相对路径在根目录执行命令时,可能会将coverage生成到根目录而非项目目录。可以显式指定项目内的绝对路径:

  • 在项目的vitest.config.ts中配置:
    import { defineConfig } from 'vitest/config';
    import path from 'path';
    
    export default defineConfig({
      test: {
        coverage: {
          reportsDirectory: path.resolve(__dirname, 'coverage'),
          reporter: ['text', 'html']
        }
      }
    });
    
  • 或者在项目的project.json的test target里指定:
    {
      "targets": {
        "test": {
          "executor": "@nx/vite:test",
          "options": {
            "coverage": true,
            "reportsDirectory": "./packages/myVitestProj/coverage"
          }
        }
      }
    }
    

2. 确保传递Coverage参数

根目录执行nx affected时,可能没有默认触发coverage生成,需要显式带上参数:

nx affected --target=test --coverage

如果希望默认开启,可在项目project.json的test target options中设置"coverage": true。

3. 跳过Nx缓存

Nx的缓存机制可能复用了之前未生成coverage的测试结果,强制跳过缓存重新执行:

nx affected --target=test --coverage --skip-nx-cache

4. 校验Vitest Executor配置完整性

确认项目的test target配置中,coverage相关参数完整:

{
  "targets": {
    "test": {
      "executor": "@nx/vite:test",
      "options": {
        "coverage": true,
        "include": ["src/**/*.{ts,tsx}"],
        "exclude": ["node_modules", "dist"]
      }
    }
  }
}

内容的提问来源于stack exchange,提问作者Moshisho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:15:10