{ "name": "laundry-desk", "version": "0.1.0", "description": "单店单机 Windows 桌面洗衣店柜台管理系统", "main": "./out/main/index.js", "author": "manpengan", "scripts": { "format": "prettier --write .", "lint": "eslint . --ext .js,.jsx,.ts,.tsx", "typecheck:node": "tsc --noEmit -p tsconfig.node.json", "typecheck:web": "tsc --noEmit -p tsconfig.web.json", "typecheck": "npm run typecheck:node && npm run typecheck:web", "start": "electron-vite preview", "dev": "electron-vite dev", "build": "npm run typecheck && electron-vite build", "postinstall": "electron-builder install-app-deps", "build:unpack": "npm run build && electron-builder --dir", "build:win": "npm run build && electron-builder --win --x64", "test": "vitest", "test:e2e": "playwright test" }, "build": { "appId": "com.laundry-desk", "productName": "Hongfa Laundry", "directories": { "output": "dist" }, "files": [ "out/**/*", "package.json" ], "asarUnpack": [ "**/*.node" ], "win": { "icon": "build/icon.ico", "target": [ "nsis" ] }, "nsis": { "include": "build/installer.nsh", "oneClick": false, "allowToChangeInstallationDirectory": true, "createDesktopShortcut": true, "createStartMenuShortcut": true, "shortcutName": "Hongfa Laundry" }, "publish": [ { "provider": "github", "owner": "manpengan", "repo": "laundry-desk" } ] }, "dependencies": { "@electron-toolkit/preload": "^3.0.2", "@electron-toolkit/utils": "^4.0.0", "@radix-ui/react-slot": "^1.2.4", "archiver": "^7.0.1", "better-sqlite3": "^12.9.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "drizzle-orm": "^0.45.2", "electron-pos-printer": "^1.1.0", "exceljs": "^4.4.0", "framer-motion": "^11.0.0", "lucide-react": "^0.400.0", "node-cron": "^4.2.1", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router-dom": "^7.0.0", "recharts": "^3.8.1", "tailwind-merge": "^2.3.0", "tencentcloud-sdk-nodejs-sms": "^4.0.0", "zod": "^4.3.6", "zustand": "^4.5.0" }, "devDependencies": { "@electron-toolkit/eslint-config-prettier": "^2.0.0", "@electron-toolkit/eslint-config-ts": "^2.0.0", "@electron-toolkit/tsconfig": "^1.0.1", "@playwright/test": "^1.59.1", "@tailwindcss/vite": "^4.2.4", "@types/archiver": "^7.0.0", "@types/better-sqlite3": "^7.6.0", "@types/node": "^20.0.0", "@types/node-cron": "^3.0.11", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@vitejs/plugin-react": "^4.3.0", "autoprefixer": "^10.4.0", "drizzle-kit": "^0.31.10", "electron": "^41.3.0", "electron-builder": "^24.13.0", "electron-vite": "^2.3.0", "eslint": "^8.57.0", "eslint-plugin-react": "^7.34.0", "postcss": "^8.4.0", "prettier": "^3.3.0", "tailwindcss": "^4.0.0", "typescript": "^5.5.0", "vite": "^5.3.0", "vitest": "^1.6.0" } }