cherry-studio/vitest.config.ts
Phantom 71dfec6875
chore(i18n): Separate check-i18n and sync-i18n; add auto sort i18n (#8206)
* feat(i18n): 优化i18n check脚本

* fix: 移除重复的代码行和错误信息

* fix: 重新排序

* fix: i18n sort

* test

* test

* test

* test

* test

* test

* feat(i18n): 添加同步翻译脚本并重构检查脚本

重构 check-i18n 脚本为纯检查功能,不再自动修改翻译文件
新增 sync-i18n 脚本用于自动同步翻译文件结构
更新 package.json 添加 sync:i18n 命令
移除不再需要的 husky pre-commit.js 钩子

* docs(i18n): 移除未使用的测试翻译文本

* feat(scripts): 添加对象键名排序功能及测试

添加 lexicalSort 函数和 sortedObjectByKeys 函数用于按字典序排序对象键名
新增测试用例验证排序功能

* feat(i18n): 添加翻译文件键值排序检查功能

添加对i18n翻译文件键值字典序的检查功能,确保翻译文件保持一致的排序结构

* refactor(i18n): 优化同步逻辑并添加键排序功能

移除syncRecursively的返回值检查,简化同步流程
添加对翻译文件的键排序功能,使用sortedObjectByKeys工具
确保主模板和翻译文件在同步后都保持有序

* fix(i18n): 重新排序翻译文件

* style(scripts): 格式化sort.js

* chore: 将 test:sort 重命名为 test:scripts
2025-07-19 23:26:40 +08:00

84 lines
2.2 KiB
TypeScript

import { defineConfig } from 'vitest/config'
import electronViteConfig from './electron.vite.config'
const mainConfig = (electronViteConfig as any).main
const rendererConfig = (electronViteConfig as any).renderer
export default defineConfig({
test: {
workspace: [
// 主进程单元测试配置
{
extends: true,
plugins: mainConfig.plugins,
resolve: {
alias: mainConfig.resolve.alias
},
test: {
name: 'main',
environment: 'node',
setupFiles: ['tests/main.setup.ts'],
include: ['src/main/**/*.{test,spec}.{ts,tsx}', 'src/main/**/__tests__/**/*.{test,spec}.{ts,tsx}']
}
},
// 渲染进程单元测试配置
{
extends: true,
plugins: rendererConfig.plugins,
resolve: {
alias: rendererConfig.resolve.alias
},
test: {
name: 'renderer',
environment: 'jsdom',
setupFiles: ['@vitest/web-worker', 'tests/renderer.setup.ts'],
include: ['src/renderer/**/*.{test,spec}.{ts,tsx}', 'src/renderer/**/__tests__/**/*.{test,spec}.{ts,tsx}']
}
},
// 脚本单元测试配置
{
extends: true,
test: {
name: 'scripts',
environment: 'node',
include: ['scripts/**/*.{test,spec}.{ts,tsx}', 'scripts/**/__tests__/**/*.{test,spec}.{ts,tsx}']
}
}
],
// 全局共享配置
globals: true,
setupFiles: [],
exclude: ['**/node_modules/**', '**/dist/**', '**/out/**', '**/build/**'],
coverage: {
provider: 'v8',
reporter: ['text', 'json', 'html', 'lcov', 'text-summary'],
exclude: [
'**/node_modules/**',
'**/dist/**',
'**/out/**',
'**/build/**',
'**/coverage/**',
'**/tests/**',
'**/.yarn/**',
'**/.cursor/**',
'**/.vscode/**',
'**/.github/**',
'**/.husky/**',
'**/*.d.ts',
'**/types/**',
'**/__tests__/**',
'**/*.{test,spec}.{ts,tsx}',
'**/*.config.{js,ts}'
]
},
testTimeout: 20000,
pool: 'threads',
poolOptions: {
threads: {
singleThread: false
}
}
}
})