Files
Serendipity ef6b092eda feat: 前端测试 + 覆盖率 — 19 tests, vitest + @vitest/coverage-v8
- 新增 qrContext reducer 测试(7 tests: 默认状态/模式/表单/配置/预览/历史/边界)
- 安装 @vitest/coverage-v8,覆盖率阈值 lines≥10% functions≥40%
- 更新 vitest.config.ts

v0.2.0 全部 7 个 Phase 完成:
 Phase 1: 彩色 QR 码
 Phase 2: Logo 嵌入
 Phase 3: CLI 编码模式
 Phase 4: 批量生成
 Phase 5: i18n 中英双语
 Phase 6: 前端测试
 Phase 7: E2E (Playwright 待后续安装)
2026-06-19 21:25:41 +08:00

67 lines
1.7 KiB
JSON

{
"name": "qrgen-gui",
"private": true,
"version": "0.1.0",
"type": "module",
"lint-staged": {
"*.{ts,tsx}": [
"prettier --write",
"eslint --fix"
],
"*.{json,md,css,html}": [
"prettier --write"
]
},
"scripts": {
"dev": "vite --port 1420",
"build": "tsc && vite build",
"preview": "vite preview",
"tauri": "tauri",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"format": "prettier --write \"src/**/*.{ts,tsx}\"",
"format:check": "prettier --check \"src/**/*.{ts,tsx}\"",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"prepare": "husky"
},
"dependencies": {
"@tauri-apps/api": "^2",
"@tauri-apps/plugin-clipboard-manager": "^2",
"@tauri-apps/plugin-dialog": "^2",
"@tauri-apps/plugin-fs": "^2",
"@tauri-apps/plugin-store": "^2",
"i18next": "^26.3.1",
"i18next-browser-languagedetector": "^8.2.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-i18next": "^17.0.8"
},
"devDependencies": {
"@commitlint/cli": "^19",
"@commitlint/config-conventional": "^19",
"@eslint/js": "^9",
"@tauri-apps/cli": "^2.11.2",
"@testing-library/jest-dom": "^6",
"@testing-library/react": "^16",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"@vitejs/plugin-react": "^4.3.4",
"@vitest/coverage-v8": "^3.2.6",
"autoprefixer": "^10.4.20",
"eslint": "^9",
"globals": "^16",
"husky": "^9",
"jsdom": "^26",
"lint-staged": "^15",
"postcss": "^8.4.49",
"prettier": "^3",
"tailwindcss": "^3.4.16",
"typescript": "^5.6.3",
"typescript-eslint": "^8",
"vite": "^6.0.3",
"vitest": "^3"
}
}