{ "name": "competition-management-backend", "version": "1.0.0", "description": "比赛管理系统后端", "author": "", "private": true, "license": "MIT", "scripts": { "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", "start:dev": "set NODE_ENV=development&&nest start --watch", "start:debug": "NODE_ENV=development nest start --debug --watch", "start:prod": "NODE_ENV=production node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "NODE_ENV=test jest", "test:watch": "NODE_ENV=test jest --watch", "test:cov": "NODE_ENV=test jest --coverage", "test:debug": "NODE_ENV=test node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "NODE_ENV=test jest --config ./test/jest-e2e.json", "prisma:status:dev": "dotenv -e .env.development -- prisma migrate status", "prisma:generate": "prisma generate", "prisma:generate:dev": "dotenv -e .env.development -- prisma generate", "prisma:migrate": "prisma migrate dev", "prisma:migrate:dev": "dotenv -e .env.development -- prisma migrate dev --create-only --name add_contest_module", "prisma:migrate:deploy": "NODE_ENV=production prisma migrate deploy", "prisma:studio": "prisma studio", "prisma:studio:dev": "NODE_ENV=development prisma studio", "prisma:studio:prod": "NODE_ENV=production prisma studio", "init:admin": "ts-node scripts/init-admin.ts", "init:admin:permissions": "ts-node scripts/init-admin-permissions.ts", "init:menus": "ts-node scripts/init-menus.ts", "init:super-tenant": "ts-node scripts/init-super-tenant.ts", "init:linksea-tenant": "ts-node scripts/init-linksea-tenant.ts", "init:tenant-admin": "ts-node scripts/init-tenant-admin.ts", "init:tenant-admin:permissions": "ts-node scripts/init-tenant-admin.ts --permissions-only", "init:tenant-permissions": "ts-node scripts/init-tenant-permissions.ts", "init:tenant-menu-permissions": "ts-node scripts/init-tenant-menu-permissions.ts", "update:password": "ts-node scripts/update-password.ts", "fix:invalid-datetime": "ts-node scripts/fix-invalid-datetime.ts", "cleanup:tenant-permissions": "ts-node scripts/cleanup-tenant-permissions.ts", "init:roles:super": "ts-node scripts/init-roles-permissions.ts --super", "init:roles": "ts-node scripts/init-roles-permissions.ts", "init:roles:all": "ts-node scripts/init-roles-permissions.ts --all" }, "dependencies": { "@nestjs/common": "^10.3.3", "@nestjs/config": "^3.1.1", "@nestjs/core": "^10.3.3", "@nestjs/jwt": "^10.2.0", "@nestjs/mapped-types": "^2.1.0", "@nestjs/passport": "^10.0.3", "@nestjs/platform-express": "^10.3.3", "@prisma/client": "^6.19.0", "bcrypt": "^6.0.0", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", "passport": "^0.7.0", "passport-jwt": "^4.0.1", "passport-local": "^1.0.0", "reflect-metadata": "^0.2.1", "rxjs": "^7.8.1" }, "devDependencies": { "@nestjs/cli": "^10.3.2", "@nestjs/schematics": "^10.1.0", "@nestjs/testing": "^10.3.3", "@types/bcrypt": "^5.0.2", "@types/express": "^4.17.21", "@types/jest": "^29.5.11", "@types/node": "^20.11.5", "@types/passport-jwt": "^4.0.1", "@types/passport-local": "^1.0.36", "@typescript-eslint/eslint-plugin": "^6.19.1", "@typescript-eslint/parser": "^6.19.1", "dotenv": "^17.2.3", "dotenv-cli": "^11.0.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", "jest": "^29.7.0", "prettier": "^3.2.4", "prisma": "^6.19.0", "source-map-support": "^0.5.21", "ts-jest": "^29.1.2", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", "typescript": "^5.3.3" }, "jest": { "moduleFileExtensions": [ "js", "json", "ts" ], "rootDir": "src", "testRegex": ".*\\.spec\\.ts$", "transform": { "^.+\\.(t|j)s$": "ts-jest" }, "collectCoverageFrom": [ "**/*.(t|j)s" ], "coverageDirectory": "../coverage", "testEnvironment": "node" } }