Files
lingxi/package.json
Stev_Wang 3e384febf3
ci / 质量门禁 (push) Canceled after 0s
fix(tooling): 给 db:reset 增加显式确认,避免误清本地密码
背景:
- 本轮部门管理联调后执行了 pnpm db:reset 清理测试数据,清空本地库,
  导致用户手工改过的登录密码被重置回 lingxi2026;
- 之前只保证了 ./dev.sh / pnpm dev / pnpm db:init 不会重置数据,
  db:reset 本身仍可被脚本或助手无提示执行,问题没有真正兜住。

改动:
- 新增 scripts/db-reset.mjs:默认拒绝执行并打印影响;只有显式
  ALLOW_DB_RESET=1 才调用 prisma migrate reset --force;
- package.json 的 db:reset 指向该脚本;
- README / AGENTS §6 §11 / e2e README / A1 实施报告同步:
  日常迁移补种子只用 pnpm db:init,验证/联调中禁止 db:reset;
  e2e 会改写 actor 密码,需使用专用账号或独立测试库。

影响面:
- 确需清库时多一步显式确认;迁移、启动、单测、int 测试不受影响。

回滚方式:
- 回滚本提交即恢复 db:reset 直接执行 prisma migrate reset --force。

验证证据:
- pnpm db:reset 无 ALLOW_DB_RESET 时退出码 1,并打印拦截说明;
- pnpm format:check / lint 通过;node --check scripts/db-reset.mjs 通过。
2026-11-03 15:16:52 +08:00

70 lines
2.4 KiB
JSON

{
"name": "lingxi",
"version": "0.1.0",
"private": true,
"description": "灵犀 · 信息流广告素材一站式生产平台",
"packageManager": "pnpm@10.34.9",
"engines": {
"node": "24.15.0",
"pnpm": ">=10.0.0 <11.0.0"
},
"scripts": {
"preinstall": "node scripts/only-allow-pnpm.mjs",
"prepare": "husky",
"dev": "turbo run dev --parallel",
"build": "turbo run build",
"lint": "eslint . --max-warnings=0",
"lint:fix": "eslint . --fix",
"format": "prettier --write .",
"format:check": "prettier --check .",
"check:dev": "node scripts/check-dev-deps.mjs",
"typecheck": "turbo run typecheck && tsc -p tsconfig.json --noEmit",
"test": "turbo run test",
"test:int": "turbo run test:int",
"test:e2e": "turbo run build && node scripts/e2e.mjs",
"ci:local": "node scripts/ci-local.mjs",
"db:generate": "prisma generate",
"db:migrate": "prisma migrate dev",
"db:init": "prisma migrate deploy && pnpm db:seed",
"db:reset": "node scripts/db-reset.mjs",
"db:seed": "tsx prisma/seed.ts",
"openapi:export": "tsx --tsconfig apps/api/tsconfig.json apps/api/src/scripts/export-openapi.ts && openapi-typescript openapi/lingxi.openapi.json -o apps/web/src/api/generated/openapi.d.ts && prettier --write apps/web/src/api/generated/openapi.d.ts",
"openapi:diff": "node scripts/openapi-diff.mjs",
"postinstall": "prisma generate"
},
"devDependencies": {
"@commitlint/cli": "20.5.3",
"@commitlint/config-conventional": "20.5.3",
"@eslint/js": "9.39.5",
"@playwright/test": "1.59.1",
"@prisma/client": "6.19.3",
"@types/node": "24.19.2",
"@types/react": "19.3.0",
"@types/react-dom": "19.3.0",
"@vitest/coverage-v8": "3.2.7",
"dotenv": "18.0.9",
"eslint": "9.39.5",
"eslint-import-resolver-typescript": "4.4.5",
"eslint-plugin-import-x": "4.17.1",
"eslint-plugin-jsx-a11y": "6.10.2",
"eslint-plugin-react-hooks": "7.1.1",
"eslint-plugin-react-refresh": "0.5.7",
"eslint-plugin-simple-import-sort": "14.0.0",
"globals": "17.14.0",
"husky": "9.1.7",
"lint-staged": "16.4.0",
"openapi-typescript": "7.13.0",
"prettier": "3.9.10",
"prisma": "6.19.3",
"tsup": "8.5.1",
"tsx": "4.23.15",
"turbo": "2.11.10",
"typescript": "5.9.3",
"typescript-eslint": "8.72.1",
"vitest": "3.2.7"
},
"prisma": {
"seed": "tsx prisma/seed.ts"
}
}