使用@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
相关产品推荐
相关产品推荐

