{ "name": "renovation-expenses", "version": "1.2.0", "description": "装修记账与预算管理工具", "license": "MIT", "type": "module", "main": "server/index.js", "scripts": { "dev:server": "node --watch server/index.js", "dev:client": "vite", "dev": "concurrently -k -n server,client -c blue,green \"npm:dev:server\" \"npm:dev:client\"", "build": "tsc --noEmit -p client/tsconfig.json && vite build", "start": "node server/index.js", "test": "node server/tests/legacy-wal-migration.test.mjs && node server/tests/api.test.mjs && node server/tests/export-actual.test.mjs && node server/tests/compose-env.test.mjs && node server/tests/docker-config.test.mjs && node server/tests/export-finalize.test.mjs && node server/tests/receipt-limits.test.mjs && node server/tests/backup-restore.test.mjs && node server/tests/receipt-unlink-guard.test.mjs && node server/tests/backup.test.mjs && node server/tests/bought-guard.test.mjs && node server/tests/zip-missing-file.test.mjs && node server/tests/section-restore.test.mjs && node server/tests/settings-payments.test.mjs && node server/tests/orders-query-reorder.test.mjs && node server/tests/spawn-server.test.mjs && node server/tests/section-export.test.mjs && vitest run" }, "dependencies": { "@fastify/multipart": "^10.1.1", "@fastify/static": "^10.1.3", "archiver": "^8.0.0", "better-sqlite3": "^11.10.0", "exceljs": "^4.4.0", "fastify": "^5.12.1", "pino-roll": "^4.0.0" }, "devDependencies": { "@ant-design/icons": "^5.6.1", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@types/node": "^26.6.6", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^5.2.0", "antd": "^5.21.0", "concurrently": "^9.0.0", "dayjs": "^1.11.13", "echarts": "^5.5.1", "echarts-for-react": "^3.0.2", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.26.2", "sonner": "^2.0.8", "typescript": "^5.5.4", "vite": "^7.3.6", "vitest": "^5.0.5" } }