Ctrl K
ComunidadGuías…

package.json

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
{
  "name": "campus-wall",
  "version": "1.0.0",
  "description": "校园墙网站 + 广播站点歌系统",
  "main": "server.js",
  "engines": {
    "node": ">=20.0.0"
  },
  "overrides": {
    "axios": "1.20.0",
    "lodash.set": "file:vendor/lodash-set-safe",
    "lodash.unset": "file:vendor/lodash-unset-safe"
  },
  "scripts": {
    "start": "node server.js",
    "dev": "node --watch server.js",
    "test": "npm run test:song-approval && npm run test:ip-lookup && npm run test:admin-request-cache && npm run test:dependency-safety && npm run test:pagination && npm run test:reservation && npm run test:avatar && npm run test:upload-middleware && npm run test:auth-upload && npm run test:ai && npm run test:cleanup && npm run test:wechat-output && npm run test:wechat-song-flow && npm run test:daily-song-state && npm run check:routes && npm run test:email-service && npm run test:anonymous-policy && npm run test:feedback-notices && npm run test:interaction-consistency && npm run test:backend-architecture && npm run test:gamification-service && npm run test:home-first-paint && npm run test:home-request-race && npm run test:site-info-sharing && npm run test:responsive-boundary && npm run test:radio-layout && npm run test:mp-weekly-song-schedule && npm run test:radio-submit-flow && npm run test:detail-interactions && npm run test:post-media-editor && npm run test:mp-draft-modules && npm run test:mp-draft-flow && npm run test:admin-style-architecture && npm run test:release-notes && npm run test:runtime && npm run test:http && npm run test:song-maintenance && npm run test:radio-slot-schedule && npm run test:frontend-assets && npm run test:feedback-clarity && npm run test:schema-migrations && npm run test:write-transaction && npm run test:notification-outbox && npm run test:content-transactions && npm run test:mp-sync-jobs && npm run test:architecture-reliability && npm run test:reschedule-idempotency && npm run test:database-startup-check && npm run test:song-submit-http && npm run test:wechat-author-repair && npm run test:public-privacy",
    "test:admin-request-cache": "node scripts/test-admin-request-cache.js",
    "test:song-approval": "node scripts/test-song-approval.js",
    "test:ai": "node scripts/test-ai-provider.js",
    "test:avatar": "node scripts/test-avatar-storage.js",
    "test:upload-middleware": "node scripts/test-upload-middleware.js",
    "test:auth-upload": "node scripts/test-auth-upload.js",
    "test:dependency-safety": "node scripts/test-dependency-safety.js",
    "test:cleanup": "node scripts/test-cleanup.js",
    "test:wechat-output": "node scripts/test-wechat-output.js",
    "test:wechat-song-flow": "node scripts/test-wechat-song-flow.js",
    "test:wechat-author-repair": "node scripts/test-wechat-author-repair.js",
    "test:email-service": "node scripts/test-email-service.js",
    "test:anonymous-policy": "node scripts/test-anonymous-policy.js",
    "test:feedback-notices": "node scripts/test-feedback-notices.js",
    "test:interaction-consistency": "node scripts/test-interaction-consistency.js",
    "test:backend-architecture": "node scripts/test-backend-architecture.js",
    "test:gamification-service": "node scripts/test-gamification-service.js",
    "test:pagination": "node scripts/test-pagination.js",
    "test:reservation": "node scripts/test-reservation-availability.js",
    "test:home-first-paint": "node scripts/test-home-first-paint.js",
    "test:home-request-race": "node scripts/test-home-request-race.js",
    "test:site-info-sharing": "node scripts/test-site-info-sharing.js",
    "test:responsive-boundary": "node scripts/test-responsive-boundary.js",
    "test:radio-layout": "node scripts/test-radio-layout.js",
    "test:radio-submit-flow": "node scripts/test-radio-submit-flow.js",
    "test:detail-interactions": "node scripts/test-detail-interactions.js",
    "test:post-media-editor": "node scripts/test-post-media-editor.js",
    "test:mp-draft-modules": "node scripts/test-mp-draft-modules.js",
    "test:mp-draft-flow": "node scripts/test-mp-draft-flow.js",
    "test:admin-style-architecture": "node scripts/test-admin-style-architecture.js",
    "test:release-notes": "node scripts/test-release-notes.js",
    "test:daily-song-state": "node scripts/test-daily-song-state.js",
    "check:mirrors": "node scripts/check-frontend-mirror.js",
    "check:privacy": "node scripts/check-sensitive-files.js",
    "check:deployment": "node scripts/test-deployment-static.js",
    "check:routes": "node scripts/test-route-stability.js",
    "cleanup:avatars": "node scripts/cleanup-orphan-avatars.js",
    "build": "npm run sync:frontend && npm run check:mirrors && node scripts/build-static-site.js",
    "preview": "vite preview",
    "test:mp-weekly-song-schedule": "node scripts/test-mp-draft-layout-static.js",
    "test:runtime": "node scripts/test-runtime-lifecycle.js",
    "test:http": "node scripts/test-http-application.js",
    "test:song-maintenance": "node scripts/test-song-maintenance.js",
    "sync:frontend": "node scripts/sync-frontend.js",
    "test:frontend-assets": "node scripts/test-frontend-assets.js",
    "test:radio-slot-schedule": "node scripts/test-radio-slot-schedule.js",
    "test:feedback-clarity": "node scripts/test-feedback-clarity.js",
    "test:schema-migrations": "node scripts/test-schema-migrations.js",
    "test:write-transaction": "node scripts/test-write-transaction.js",
    "test:notification-outbox": "node scripts/test-notification-outbox.js",
    "test:content-transactions": "node scripts/test-content-transactions.js",
    "test:mp-sync-jobs": "node scripts/test-mp-sync-jobs.js",
    "test:architecture-reliability": "node scripts/test-architecture-reliability.js",
    "test:reschedule-idempotency": "node scripts/test-reschedule-idempotency.js",
    "test:database-startup-check": "node scripts/test-database-startup-check.js",
    "test:song-submit-http": "node scripts/test-song-submit-http.js",
    "test:ip-lookup": "node scripts/test-ip-lookup.js",
    "build:demo": "node scripts/build-pages-demo.js",
    "admin:create": "node scripts/create-initial-admin.js",
    "test:public-privacy": "node scripts/test-public-privacy.js"
  },
  "dependencies": {
    "@cloudbase/node-sdk": "^3.18.3",
    "bcryptjs": "^2.4.3",
    "compression": "^1.8.1",
    "cookie-parser": "^1.4.6",
    "cors": "^2.8.5",
    "dotenv": "^16.3.1",
    "express": "^4.18.2",
    "express-rate-limit": "^8.5.2",
    "express-session": "^1.17.3",
    "helmet": "^8.2.0",
    "ip2region": "^2.3.0",
    "jsonwebtoken": "^9.0.2",
    "lodash": "^4.18.1",
    "lodash.set": "file:vendor/lodash-set-safe",
    "lodash.unset": "file:vendor/lodash-unset-safe",
    "morgan": "^1.10.0",
    "multer": "^2.4.0",
    "mysql2": "^3.6.0",
    "naive-ui": "^2.38.0",
    "nodemailer": "^10.1.1",
    "pinia": "^2.1.0",
    "qrcode": "^1.5.4",
    "ssh2": "^1.17.0",
    "vue": "^3.4.0",
    "vue-router": "^4.2.0",
    "ipaddr.js": "^1.9.1"
  },
  "devDependencies": {
    "vite": "^6.4.3"
  }
}