{ "name": "ecommerce-ai-backend", "version": "1.0.0", "description": "AI智能销售平台后端服务 - 基于微服务架构", "main": "dist/server.js", "scripts": { "dev": "nodemon --exec ts-node src/server.ts", "build": "tsc", "start": "node dist/server.js", "test": "jest --coverage --watchAll=false", "test:watch": "jest --watch", "test:unit": "jest --testPathPattern=unit", "test:integration": "jest --testPathPattern=integration", "lint": "eslint 'src/**/*.{ts,tsx}'", "lint:fix": "eslint 'src/**/*.{ts,tsx}' --fix", "format": "prettier --write 'src/**/*.{ts,tsx,json}'", "docker:build": "docker build -t ecommerce-backend .", "docker:dev": "docker-compose up -d", "docker:down": "docker-compose down", "migrate": "ts-node src/database/migrations/migrate.ts", "seed": "ts-node src/database/seeds/seed.ts", "sync:products": "ts-node src/scripts/sync-products-to-es.ts", "test:search": "ts-node src/scripts/test-search.ts", "init:parse": "ts-node src/scripts/init-parse-classes.ts", "es:start": "docker-compose -f docker-compose.search.yml up -d", "es:stop": "docker-compose -f docker-compose.search.yml down", "es:logs": "docker-compose -f docker-compose.search.yml logs -f elasticsearch" }, "keywords": [ "ecommerce", "ai", "microservices", "express", "parse-server", "typescript" ], "author": "Backend Development Team", "license": "MIT", "engines": { "node": ">=20.0.0", "npm": ">=8.0.0" }, "dependencies": { "@elastic/elasticsearch": "^8.11.0", "@langchain/core": "^1.0.3", "@langchain/openai": "^1.0.0", "axios": "^1.6.2", "bcrypt": "^5.1.1", "bull": "^4.12.0", "compression": "^1.7.4", "cors": "^2.8.5", "dotenv": "^16.3.1", "express": "^4.18.2", "express-rate-limit": "^7.1.5", "express-validator": "^7.0.1", "helmet": "^7.1.0", "ioredis": "^5.3.2", "joi": "^17.11.0", "jsonwebtoken": "^9.0.2", "lodash": "^4.17.21", "moment": "^2.29.4", "mongodb": "^7.0.0", "morgan": "^1.10.0", "multer": "^1.4.5-lts.1", "parse": "^5.0.0", "parse-server": "^6.5.11", "redis": "^4.6.11", "sharp": "^0.33.0", "socket.io": "^4.7.4", "socket.io-client": "^4.8.1", "uuid": "^9.0.1", "winston": "^3.11.0" }, "devDependencies": { "@types/bcrypt": "^5.0.2", "@types/compression": "^1.7.5", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/jest": "^29.5.11", "@types/jsonwebtoken": "^9.0.5", "@types/lodash": "^4.14.202", "@types/morgan": "^1.9.9", "@types/multer": "^1.4.11", "@types/node": "^20.10.5", "@types/parse": "^3.0.9", "@types/supertest": "^6.0.2", "@types/uuid": "^9.0.7", "@typescript-eslint/eslint-plugin": "^6.15.0", "@typescript-eslint/parser": "^6.15.0", "eslint": "^8.56.0", "fast-check": "^4.4.0", "husky": "^8.0.3", "jest": "^29.7.0", "lint-staged": "^15.2.0", "nodemon": "^3.0.2", "prettier": "^3.1.1", "supertest": "^6.3.3", "ts-jest": "^29.1.1", "ts-node": "^10.9.2", "typescript": "^5.3.3" }, "lint-staged": { "src/**/*.{ts,tsx}": [ "eslint --fix", "prettier --write" ] } }