@fuf-stack/vitest-config
Fröhlich QQ Frei 的默认虚拟配置 。 为工作空间级别(root)和项目级别(package)设置提供单独的配置.
与 Vitest 4.0+ 兼容
可用的配置
工作空间配置 (单位:千美元)/workspace- 对于单发根:
- 定义工作空间结构的项目阵列
- V8涵盖范围明确包括/不包括
- CI 工具的 LCOV 记者
项目配置 (单位:千美元)/project- 对于单个包:
- 类型脚本路径映射分辨率
- 默认节点环境
- 测试之间清晰的模拟
安装
# pnpm
pnpm add -D @fuf-stack/vitest-config vitest @vitest/coverage-v8
# npm
npm i -D @fuf-stack/vitest-config vitest @vitest/coverage-v8
# yarn
yarn add -D @fuf-stack/vitest-config vitest @vitest/coverage-v8
使用量
重要内容: 使用
.mts导入此只使用无害环境管理软件包时用于配置文件的扩展名。 使用.ts可能导致捆绑器出错, 因为工具可能试图使用require()改为import。 。 。 .
工作空间根配置
使用您单列波根中的工作空间配置 vitest.config.mts数字 :
// vitest.config.mts (root)
import config from '@fuf-stack/vitest-config/workspace';
export default config;
该条规定:
- 工程阵列 :
['apps/*', 'packages/!(config)', 'packages/config/*'] - 有合理默认的覆盖配置
- LCOV 记者
packages/config 是一个容器,而不是一个测试项目。 其儿童包是:
包括个人,所以他们的测试一次用自己的包名进行.
需要时自定义 :
使用 mergeConfig 在保留默认项目发现的同时调整设置:
// vitest.config.mts
import { mergeConfig } from 'vitest/config';
import workspaceConfig from '@fuf-stack/vitest-config/workspace';
export default mergeConfig(workspaceConfig, {
test: {
testTimeout: 10_000,
},
});
在默认路径外添加工程 :
用于现有测试项目 tools/integration-tests,添加其目录
相对工作空间根. mergeConfig 调和数组, 因此延伸
projects 在保存默认的应用程序和软件包项目时 :
// vitest.config.mts
import { mergeConfig } from 'vitest/config';
import workspaceConfig from '@fuf-stack/vitest-config/workspace';
export default mergeConfig(workspaceConfig, {
test: {
projects: ['tools/integration-tests'],
},
});
该目录可以提供自己的 vitest.config.mts 用于特定项目设置.
添加内置工程和额外覆盖路径 :
内部项目和 coverage.include 编号 : coverage.exclude数字 :
您的条目附在默认值后。 不要手动传播基础配置.
// vitest.config.mts
import { mergeConfig } from 'vitest/config';
import workspaceConfig from '@fuf-stack/vitest-config/workspace';
export default mergeConfig(workspaceConfig, {
test: {
projects: [
{
test: {
name: 'scripts',
include: ['scripts/**/*.test.mjs'],
environment: 'node',
},
},
],
coverage: {
include: ['scripts/**/*.mjs'],
},
},
});
默认覆盖排除已匹配 *.test.* 编号 : *.spec.* 每个文件
JS/TS扩展到工作区任何地方,所以额外包括不需要匹配
测试排除.
软件包级别配置
使用单个软件包中的工程配置 vitest.config.mts数字 :
// packages/my-package/vitest.config.mts
import config from '@fuf-stack/vitest-config/project';
export default config;
该条规定:
- TypeScript 路径映射分辨率( Vite 原生)
resolve.tsconfigPaths(中文(简体) ) - 节点环境(有益于图书馆、公用事业)
- 测试之间清晰的模拟
用于反应组件( 需要jsdom) :
// packages/ui-components/vitest.config.mts
import { mergeConfig } from 'vitest/config';
import projectConfig from '@fuf-stack/vitest-config/project';
export default mergeConfig(projectConfig, {
test: {
environment: 'jsdom',
setupFiles: ['./vitest.setup.ts'],
},
});
从Vitest 3.x迁移
- 根配置: 使用
/workspace导入 - 软件包配置: 使用
/project导入(或自定义为mergeConfig(中文(简体) ) - 重命名配置文件更改
.ts→.mts(仅限无害环境管理的包件需要) - 删除
vitest.workspace.ts文件 - 确保每个软件包的使用
defineProject()(由/project配置( c)
为什么 .mts 扩展?
此套装仅限无害环境管理("type": "module") (中文(简体) ). 当 Vitest 捆绑配置文件时 :
.ts文件模糊不清 - 捆绑者可能尝试require()❌.mts明确声明 ES 模块 - 使用import✅
使用 .ts 可能导致以下错误:
Error: Cannot use import statement outside a module
这个 .mts 扩展介绍将文件作为ES模块处理的工具,允许适当进口仅属于无害环境管理的依赖性.
脚本
{
"scripts": {
"test": "vitest",
"test:coverage": "vitest --coverage"
}
}
许可证
麻省理工学院