index.js
1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
* `@drama/config/vitest` 公共面 —— `defineNodePreset` / `defineVuePreset` 两个工厂。
*
* - `defineNodePreset(overrides)`:纯逻辑包用,`environment:'node'`。
* - `defineVuePreset(overrides)`:组件包用,`environment:'jsdom'` + `@vitejs/plugin-vue`。
*
* 两者共享 coverage 门槛、include/exclude、reporter(单一来源),overrides 深合并可改门槛。
*
* 消费示例:
* // packages/foo/vitest.config.js
* import { defineNodePreset } from '@drama/config/vitest'
* export default defineNodePreset()
*
* // packages/ui/vitest.config.js
* import { defineVuePreset } from '@drama/config/vitest'
* export default defineVuePreset()
*/
import { buildSharedTestConfig, deepMerge, COVERAGE_THRESHOLDS } from './base.js'
export { COVERAGE_THRESHOLDS }
/**
* node 环境 Vitest config(纯逻辑包)。
* @param {Record<string, unknown>} [overrides] 深合并进默认(可覆盖门槛 / include 等)。
* @returns {Record<string, unknown>}
*/
export function defineNodePreset(overrides = {}) {
const base = {
test: {
...buildSharedTestConfig(),
environment: 'node',
},
}
return deepMerge(base, overrides)
}
/**
* jsdom + Vue 环境 Vitest config(组件包)。
* Vue 插件经动态 import 装配,避免纯 node 消费方加载本工厂时被强制拉起 plugin-vue。
* @param {Record<string, unknown>} [overrides] 深合并进默认。
* @returns {Promise<Record<string, unknown>>} 含 Vue 插件的 config(异步以惰性加载插件)。
*/
export async function defineVuePreset(overrides = {}) {
const { default: vue } = await import('@vitejs/plugin-vue')
const base = {
plugins: [vue()],
test: {
...buildSharedTestConfig(),
environment: 'jsdom',
},
}
return deepMerge(base, overrides)
}