{ "name": "class-helper", "version": "1.3.3", "private": true, "description": "ClassHelper - 班级信息管理系统(Web 管理端 + 后端服务 + 桌面客户端)", "packageManager": "pnpm@11.8.0", "engines": { "node": ">=20.19.0" }, "scripts": { "build:shared": "pnpm --filter @classhelper/shared build", "dev": "pnpm build:shared && concurrently -k -n shared,server,web -c cyan,green,magenta \"pnpm --filter @classhelper/shared dev\" \"pnpm --filter @classhelper/server dev\" \"pnpm --filter @classhelper/web-admin dev\"", "dev:server": "pnpm build:shared && pnpm --filter @classhelper/server dev", "dev:web": "pnpm build:shared && pnpm --filter @classhelper/web-admin dev", "dev:desktop": "pnpm build:shared && pnpm --filter @classhelper/desktop-client dev", "build": "pnpm build:shared && pnpm --filter @classhelper/server build && pnpm --filter @classhelper/web-admin build && pnpm --filter @classhelper/desktop-client build", "build:desktop": "pnpm build:shared && pnpm --filter @classhelper/desktop-client build", "check:icons": "node scripts/check-icons.mjs", "typecheck": "pnpm build:shared && pnpm -r --no-bail typecheck", "lint": "eslint .", "lint:fix": "eslint . --fix", "format": "prettier --write \"**/*.{ts,js,mjs,cjs,vue,json,md,yaml,yml,css,scss,html}\"", "format:check": "prettier --check \"**/*.{ts,js,mjs,cjs,vue,json,md,yaml,yml,css,scss,html}\"", "db:generate": "pnpm --filter @classhelper/server db:generate", "db:migrate": "pnpm --filter @classhelper/server db:migrate", "db:seed": "pnpm --filter @classhelper/server db:seed", "db:reset": "pnpm --filter @classhelper/server db:reset", "db:studio": "pnpm --filter @classhelper/server db:studio", "db:switch:mysql": "node scripts/use-database.mjs mysql", "db:switch:sqlite": "node scripts/use-database.mjs sqlite", "verify:e2e": "node scripts/verify-e2e-isolated.mjs", "verify:v14": "node scripts/verify-v14.mjs", "verify:client-agent": "node scripts/verify-client-agent.mjs", "verify:review-client": "node scripts/verify-review-client.mjs", "verify:review-api": "node scripts/verify-review-api.mjs", "verify:clients-api": "node scripts/verify-clients-api.mjs", "verify:client-migrations": "node scripts/verify-client-migrations.mjs", "verify:desktop": "pnpm --filter @classhelper/desktop-client smoke", "verify:web": "node scripts/ui-smoke/run.mjs", "verify:packaged": "node scripts/verify-packaged.mjs", "icons": "node scripts/generate-icons.mjs", "version:check": "node scripts/version.mjs", "version:bump": "node scripts/version.mjs --bump", "docs:build": "node docs/build.mjs", "docs:serve": "node docs/build.mjs --serve", "pages:build": "node scripts/build-pages.mjs", "dev:site": "pnpm docs:build && node website/serve.mjs", "docs:check": "node docs/build.mjs --check", "dist:win": "pnpm --filter @classhelper/desktop-client dist:win", "dist:server": "pnpm build:shared && pnpm --filter @classhelper/server build && pnpm --filter @classhelper/web-admin build && node scripts/dist-server.mjs", "dist:server:linux": "pnpm build:shared && pnpm --filter @classhelper/server build && pnpm --filter @classhelper/web-admin build && node scripts/dist-server.mjs --platform linux", "dist:all": "pnpm dist:server && pnpm dist:win", "verify:desktop:visual": "node packages/desktop-client/scripts/smoke.mjs --visual", "verify:desktop:online": "node packages/desktop-client/scripts/smoke.mjs --online" }, "devDependencies": { "concurrently": "^10.0.5", "eslint": "^10.10.0", "eslint-plugin-vue": "^10.11.0", "prettier": "^3.9.6", "typescript": "~5.9.3", "typescript-eslint": "^8.70.0", "vue-eslint-parser": "^10.4.1" } }