/** * `@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} [overrides] 深合并进默认(可覆盖门槛 / include 等)。 * @returns {Record} */ 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} [overrides] 深合并进默认。 * @returns {Promise>} 含 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) }