# mp-scafolld **Repository Path**: wu96t/mp-scafolld ## Basic Information - **Project Name**: mp-scafolld - **Description**: uniapp+springboot小程序开发环境搭建 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-10 - **Last Updated**: 2026-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mp-scaffold 小程序开发环境脚手架 CLI(Rust 编写)。一条命令拉取 **SpringBoot 后端** + **uniapp 小程序前端** 两套基础框架,并按参数统一改名,省去手工替换包名、模块名、appid 的重复劳动。 最终产物在输出目录下生成两个并列目录: ``` / ├── backend/ # 改名后的 SpringBoot 后端(来自 smart-admin) └── frontend/ # 改名后的 uniapp 前端(来自 unibest) ``` ## 前置依赖 - [Rust](https://www.rust-lang.org/) 工具链(`cargo` / `rustc`) - `git`(需在 PATH 中) ## 构建 ```bash cd mp-scaffold cargo build --release # 二进制位于 target/release/mp-scaffold ``` > 国内环境若 `crates.io` 下载慢,可在 `~/.cargo/config.toml` 配置 rsproxy 等镜像加速。 ## 安装为系统命令 ``` ``` cargo install --path . ``` ``` > 将会把工具安装到`~/.cargo/bin/`目录下 ## 使用 ```bash mp-scaffold \ -n mymall \ -g com.example.mall \ -p com.example.mall \ -m mymall \ -a __UNI__ABC123 \ -t "我的商城" \ -o ./myproject \ -w wxabcdef123456 ``` 执行流程: 1. `git clone` smart-admin 与 unibest(默认 `--depth 1` 浅克隆)到临时目录; 2. 抽取 smart-admin 中的 `smart-admin-api-java17-springboot3` 子目录作为后端工程放入 `backend/`; 3. 将 unibest 内容放入 `frontend/`(不含原 `.git`); 4. 后端改名:模块目录、Maven `artifactId` / `module` 列表 / 父引用 / `groupId`、Java 包名与包目录; 5. 前端改名:`env/.env*` 的 `VITE_APP_TITLE` / `VITE_UNI_APPID` / `VITE_WX_APPID`、`package.json` 的 `name`、`pages.config.ts` 的 `navigationBarTitleText`; 6. 在输出目录 `git init`(可用 `--no-git` 跳过)。 ## 参数说明 | 参数 | 说明 | 默认值 | | ---- | ---- | ------ | | `-o, --out` | 输出根目录(含 `backend/` 与 `frontend/`) | 等于 `-n` 的值 | | `-n, --name` | 项目基础名(同时作为 Maven 模块前缀与默认展示名) | **必填** | | `-g, --group-id` | Maven `groupId` | **必填** | | `-p, --package` | Java 基础包名 | 等于 `--group-id` | | `-m, --module-prefix` | Maven 模块前缀 | 等于 `--name` | | `-a, --appid` | uni-app 的 appid(如 `__UNI__XXXX`) | **必填** | | `-t, --title` | App 展示名 | 等于 `--name` | | `-w, --wx-appid` | 微信小程序 appid | 可选,不填则保留原值 | | `--backend-subdir` | smart-admin 中作为后端的子目录 | `smart-admin-api-java17-springboot3` | | `--backend-url` | 后端模板仓库地址 | `https://gitee.com/lab1024/smart-admin.git` | | `--frontend-url` | 前端模板仓库地址 | `https://gitee.com/feige996/unibest.git` | | `--depth` | clone 深度 | `1` | | `--force` | 强制覆盖已存在的输出目录 | 关闭 | | `--no-git` | 不在输出目录初始化 git 仓库 | 关闭 | ## 改名逻辑要点 ### 后端(Maven) - **模块前缀**:从父 `artifactId`(如 `sa-parent`)推断旧前缀 `sa`,按 `--module-prefix` 重命名。 例:`sa-base` → `mymall-base`、`sa-admin` → `mymall-admin`、`sa-parent` → `mymall-parent`, 同时重命名目录、`pom.xml` 中的 `artifactId`、`module` 列表、模块间依赖引用与父引用。 - **groupId**:精确替换 `net.lab1024` 为 `--group-id`,不会误改其他第三方 groupId。 - **包名**:扫描 `.java` 文件推断基础包(如 `net.lab1024.sa`),移动源码目录 `src/{main,test}/java/net/lab1024/sa` → `src/{main,test}/java/<新包路径>`,并全局替换包声明与 import。 - **安全性**:Maven 改名使用「精确标签匹配」而非「前缀盲替换」,因此第三方依赖 **`sa-token`** 等不会被误伤。 ### 前端(uniapp) - unibest 的 appid / 项目名实际来自 `env/` 下的环境变量,故修改 `VITE_UNI_APPID` / `VITE_APP_TITLE` 即可; - 同步更新 `package.json` 的 `name` 与 `pages.config.ts` 的 `navigationBarTitleText`。 ## 注意事项 - 默认只抽取 smart-admin 的 SpringBoot3 后端子目录;如需其他版本,调整 `--backend-subdir`。 - 改名后建议执行后端 `mvn compile` 与前端 `pnpm install && pnpm dev` 验证。 - 输出目录若已存在且非空会报错,请用 `--force` 强制覆盖(会先删除原目录)。