进度: 0/3 故事完成 (0%) 最近更新: 2025-12-16 (史诗重写) 当前状态: 所有故事待开始
修复当前数据库迁移脚本问题,使server包提供可用的迁移功能,web包能够正确调用并集成到启动流程。
server包TypeORM脚本问题:
packages/server/package.json中的迁移脚本路径错误(指向./src/server/data-source.ts但不存在)tsx依赖,脚本无法执行packages/server/src/data-source.ts但脚本未更新web包迁移脚本缺失:
web/package.json中的db:migrate脚本指向不存在的scripts/migrate.ts文件pnpm start启动流程未集成数据库迁移迁移功能未封装:
pnpm start目标:使packages/server中的TypeORM命令能够正确执行
具体任务:
packages/server/package.json中的脚本路径:
./src/server/data-source.ts → 修正为:./src/data-source.tstsx依赖已添加(已添加)pnpm db:migrate - 运行迁移pnpm db:migrate:generate - 生成迁移文件pnpm db:migrate:revert - 回滚迁移成功标准:
pnpm db:migrate能够正确连接到数据库目标:在server包中创建可导出的迁移工具,供其他包调用
具体任务:
packages/server/src/migration-runner.ts
runMigrations()函数:运行所有待处理迁移getMigrationStatus()函数:查看迁移状态packages/server/src/cli/migrate.ts
tsx packages/server/src/cli/migrate.ts runtsx packages/server/src/cli/migrate.ts status成功标准:
@d8d/server的迁移工具runMigrations()函数可以程序化调用目标:修复web包缺失的迁移脚本,集成自动迁移到启动流程
具体任务:
web/scripts/migrate.ts文件runMigrations()函数web/package.json中的db:migrate脚本路径web/package.json中的start脚本AUTO_MIGRATE=true/false成功标准:
pnpm db:migrate在web包中能够正确执行pnpm start在启动前自动运行数据库迁移(可配置)// packages/server/src/data-source.ts (已存在)
import { initializeDataSource } from '@d8d/shared-utils'
// 导入所有实体并初始化
// packages/server/src/migration-runner.ts
export async function runMigrations(): Promise<void>
export async function getMigrationStatus(): Promise<MigrationStatus>
// web/package.json
{
"scripts": {
"db:migrate": "tsx scripts/migrate.ts",
"start": "AUTO_MIGRATE=true tsx scripts/migrate.ts && PORT=8080 cross-env NODE_ENV=production node server"
}
}
db:migrate脚本可正常工作pnpm start自动运行数据库迁移(可配置)本史诗专注于解决最紧急的数据库迁移问题,确保生产环境部署时数据库架构可以正确更新。