跳转到内容

本地开发环境

开发主题 / 插件 / 模型包前,先把 BangNiCMS 本地跑起来

  • Node.js ≥ 20
  • pnpm ≥ 8(必须用 pnpm,不是 npm / yarn)
  • PostgreSQL ≥ 14(或 MySQL 8,需要切换 Prisma provider)
  • Docker(推荐,自动起依赖)
  • Git
Terminal window
git clone https://github.com/miaochi998/BangNiCMS.git
cd BangNiCMS
Terminal window
pnpm install

monorepo 结构:

BangNiCMS/
├── apps/
│ ├── server/ 后端 NestJS
│ ├── web/ 前台 Astro
│ └── admin/ 后台 Next.js
├── packages/
│ ├── shared-types/
│ ├── sdk/
│ └── ...
└── infra/
└── scripts/
Terminal window
cp .env.example .env

按需要填:

BANGNICMS_DATABASE_URL=postgresql://...
BANGNICMS_SERVER_PORT=3000
BANGNICMS_WEB_PORT=4321
BANGNICMS_ADMIN_PORT=3001

必须用提供的脚本:

Terminal window
pnpm restart:local

脚本自动:

  1. 停止已跑的进程
  2. 启动 Docker 依赖(PostgreSQL)
  3. pnpm install
  4. Prisma generate + migrate + seed
  5. 启动 server、web、admin
  6. 健康检查

不要手动 npm run dev——会绕过迁移和健康检查。

服务URL
后台 adminhttp://localhost:3001
前台 webhttp://localhost:4321
API serverhttp://localhost:3000
API 文档http://localhost:3000/api/docs

默认管理员账号:

  • 用户名:admin
  • 密码:admin123(首次登录强制改)

主题源码在 apps/web/src/themes/ 下。

修改代码 → Astro 自动热重载。

Terminal window
# 在 apps/web/src/themes/ 下创建新主题目录
cp -r official-site my-new-theme
# 修改 manifest.json + 代码
# 后台「扩展市场 → 主题」上传 zip 测试

类似——在 packages/extensions/ 下开发。

如果改了 Prisma schema:

Terminal window
pnpm prisma migrate dev --name my_change

后端 NestJS 默认开 debug 端口 9229,VSCode 配 launch.json:

{
"type": "node",
"request": "attach",
"port": 9229,
"name": "Attach to Server"
}

浏览器 F12 + 主题代码加 console.log。

命令
pnpm restart:local完整重启
pnpm restart:local:stop停止所有服务
pnpm restart:local:status查看状态
pnpm restart:local:logs:server查看 server 日志
pnpm test跑单元测试
pnpm test:e2e跑 E2E 测试
pnpm typecheckTypeScript 类型检查
pnpm lint代码 lint
pnpm build生产构建

E2E 测试位于 tests/e2e/

Terminal window
pnpm test:e2e

详见 tests/e2e/README.md

贡献新功能时必须配套加 E2E 测试

pnpm restart:local 会自动 seed 一些测试数据:

  • 默认管理员
  • 示例语言
  • 示例分类
  • 示例产品 / 文章

如果想重置:

Terminal window
pnpm prisma migrate reset
pnpm restart:local
  • 检查 Node 版本(≥ 20)
  • 清理 node_modules + pnpm-lock.yaml 重装
  • 看错误信息——通常是某个依赖兼容问题
  • 检查端口是否被占用(让脚本停止再重启)
  • /tmp/bangnicms-*.log 查具体错
  • 确认 Docker 启动了
  • 确认 .env 中的 BANGNICMS_DATABASE_URL 正确
  • docker ps 看 postgres 容器在跑

.env 中的端口配置。不要在代码里硬编码端口。