Develop 开发模块
develop/ 是 Pbstar-admin 的工程化模块,集中了交互式 CLI 与接口 mock,root 通过 pnpm run -filter develop <cmd> 透传调用。
develop
├── cli # CLI:create/dev/build/add/remove/check
├── mock # 接口 mock(可持久化到 localStorage)
├── plugins # rsbuild 插件(distZipPlugin)
├── dist # 打包产物(按应用分目录)
└── distZip # 打包压缩包Create 创建子应用
Pbstar-admin CLI 工具用于快速创建和管理子应用,主要功能包括:
- 交互式创建子应用
- 自动生成项目目录结构
- 自动配置端口和路由
- 自动更新项目配置文件
使用方法
bash
pnpm run create执行命令后,CLI 会提示输入子应用 appKey 和选择子应用类型。
创建完成后会自动:
- 在
apps/目录下生成子应用文件夹(基于develop/cli/template模板) - 更新
apps/apps.json配置文件 - 更新
rsbuild.config.ts多环境配置
注意事项
- 子应用 appKey 只能包含小写字母、数字和连字符
- 保留名:
main、components不可作为 appKey - 子应用类型为 In 内部子应用和 Out 外部子应用;选择 Out 类型时需提供有效的 git 仓库地址(https 或 ssh 格式,以
.git结尾) - 端口号超出范围会导致创建失败,默认范围为 8801-8899
- 创建前请确保已安装所有依赖
Dev 启动服务
功能
- 启动指定应用
- 支持热更新
- 提供访问地址和端口信息
- 启动多个应用需要单独多开终端窗口
使用方法
bash
pnpm run dev执行命令后,会提示选择要启动的应用。
- 主应用默认端口为
8800(开发模式下仅在单选主应用时自动打开浏览器) - 子应用端口取
apps/apps.json中的devPort - 子应用经 wujie 运行时挂载到主应用,请统一通过主应用地址访问
- 按
Ctrl+C结束时会一并停止所有已启动的 dev 服务
Build 打包项目
使用方法
bash
pnpm run build执行命令后,会提示选择要打包的应用。
打包完成后:
- 主应用产物输出到
develop/dist/main,各子应用输出到develop/dist/{appKey} distZipPlugin会把每个应用的产物打成 zip,输出到develop/distZip/(文件名含时间戳)
子应用线上地址在构建时读取 apps/apps.json 的 proUrl,生产环境接口地址由 nginx 代理处理(见 部署)。
Add 添加依赖
功能
- 为指定工程添加依赖
- 支持添加开发依赖和生产依赖
使用方法
bash
pnpm run add执行命令后,会提示选择要添加依赖的工程、输入依赖包名称和选择依赖包类型。
可选择的工程范围:全局工程 / assets / components / develop / main / 各子应用。
Remove 删除依赖
功能
- 为指定工程删除依赖
使用方法
bash
pnpm run remove执行命令后,会提示选择要删除依赖的工程和输入要删除的依赖名称。
Check 类型检查
功能
- 对 main 与全部子应用跑
vue-tsc类型检查 - 子应用清单从
apps/apps.json动态读取,新增/删除子应用无需手动改这里 - 外部子应用(out 类型)未拉取 submodule 时没有 tsconfig,自动跳过
使用方法
bash
pnpm run check项目未配置 ESLint/Prettier,改动后主要靠 check 与 dev 实跑验证。
Mock 接口 mock
develop/mock 为前端接口 mock,仅在开发环境且 PUBLIC_MOCK=T 时生效,生产环境永久关闭。
开启方式
在本地 .env.development 设置:
PUBLIC_MOCK=T拦截逻辑位于 assets/utils/request.ts:发起请求时先判断 isMockEnabled,命中路由表则走 matchMock 返回本地数据,未命中再发真实请求。
目录结构
develop/mock
├── data # 各模块 mock 数据与处理函数
│ ├── main.ts # 登录/登出/个人信息/看板等
│ ├── user.ts # 用户管理
│ ├── role.ts # 角色管理
│ ├── permission.ts # 权限管理
│ └── person.ts # example 人员列表
├── index.ts # 路由表 method:url -> handler,matchMock 匹配
├── persist.ts # localStorage 持久化(isMockEnabled 总开关、种子数据)
└── utils.ts # nextId / ok / fail / paginate 工具特性
- 以
method:url为键维护路由表,命中即返回统一的Res结构(code/msg/data),可模拟网络延迟(默认 200ms) - 数据可持久化到 localStorage(键
p_mock_data),改动在刷新后仍保留;删除该键再刷新即可重置为种子数据 - 接口未登记时给出 warning 并回退到真实请求
- 分页接口用
paginate处理,新增记录 id 用nextId自增,避免与种子数据冲突
