# ryp-cpn
**Repository Path**: renneseme/ryp-cpn
## Basic Information
- **Project Name**: ryp-cpn
- **Description**: 将 RuoYi-Vue-Plus脚手架(6.X 优先,兼容 5.X)在线下载或本地解压后,一键完成包名、模块前缀、RuoYi 字样、数据库与 Redis 配置的批量替换,在指定目录输出可直接开发的工程代码。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-09-12
- **Last Updated**: 2026-09-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 桌面端工具
## README
# 若依工程改造器(ryp-cpn)
桌面端工具:将 **RuoYi-Vue-Plus** 脚手架(6.X 优先,兼容 5.X)在线下载或本地解压后,一键完成**包名、模块前缀、RuoYi 字样、数据库与 Redis 配置**的批量替换,在指定目录输出可直接开发的工程代码。
基于 **Tauri 2 + React 18 + TypeScript**,一套代码打包 Windows / macOS / Linux 安装包。
## 界面预览
**主界面**:编号步骤卡片引导完成全部配置

**历史记录**:自动记录每次替换任务(最近 50 次)

**关于页**:版本信息、简介与技术栈致谢

## 功能特性
- **两种代码来源**:在线下载(内置 Gitee / GitHub 源,`git clone --depth 1` 浅克隆,默认分支 `6.X`)或选择本地 zip 压缩包
- **包名重命名**:`org.dromara` → 自定义包名
- 自动从源码目录发现**本项目自身子包**(common / system / workflow / …),只替换项目代码
- 自动保护同名第三方依赖坐标(`org.dromara.warm` / `org.dromara.sms4j` / `org.dromara.mica-mqtt` / `org.dromara.easy-es`)不被误改
- 物理移动源码目录 `src/main/java/org/dromara` → `src/main/java/<新包路径>`,并清理空目录
- **模块前缀替换**:`ruoyi-admin` → `<前缀>-admin`(目录与 pom 同步改名)、`ruoyi_group`、`RuoYi-Vue-Plus`、`RuoYi` / `Ruoyi` 变体、`DromaraApplication` → `<前缀驼峰>Application`、`DromaraServletInitializer` 同步改名;可选替换「若依」中文
- **数据库 / Redis 配置**:结构化 YAML 补丁,按键名定位 `datasource.master` 与 `spring.data.redis` 段落,只改键值、**保留全部注释与排版**,不依赖具体默认值 —— 上游更新配置文件也不受影响;Redis 留空的项不做修改
- **仅分析模式**:dry-run,只输出替换摘要不生成工程
- **任务历史**:自动记录最近 50 次任务(配置、耗时、结果)
- **表单记忆**:配置自动保存在本机,下次打开自动恢复
- **替换规则外置**:所有规则在 [`src-tauri/resources/replacement-rules.json`](src-tauri/resources/replacement-rules.json),支持 `{{变量}}` 模板;若依升级后一般只需微调规则文件,无需改代码
## 使用
### 环境要求
- Node.js 18+、pnpm
- Rust 1.77+(Windows 需 MSVC Build Tools)
- git(在线下载模式使用)
### 开发运行
```bash
pnpm install
pnpm tauri dev
```
### 使用流程
1. **代码来源**:选「在线下载」(Gitee / GitHub + 分支)或「本地压缩包」
2. **替换配置**:填新包名(如 `com.acme.app`)、工程前缀(如 `acme`)、显示名称,主类名实时预览
3. **数据库**:填 JDBC 连接串、用户名、密码
4. **Redis**:填 host / port / 密码 / database,留空项不改
5. **输出**:选择输出目录(生成 `<输出目录>/<工程前缀>/`),可勾选「仅分析」试跑
6. 点击**开始替换**,实时查看进度,完成后输出替换摘要(扫描 / 修改文件数、重命名统计、各规则命中数)
## 三平台打包
### 本机打包
```bash
pnpm tauri build
```
| 平台 | 产物 | 说明 |
|---|---|---|
| Windows | `.msi`、NSIS `.exe` 安装包 | Windows / macOS / Linux 均可直接构建 |
| macOS | `.app`、`.dmg` | 仅能在 macOS 系统上构建 |
| Linux | `.deb`、`.AppImage` | Windows 上需通过 WSL2 构建 |
注意:`cargo` 需在 PATH 中(Windows 下确认 `%USERPROFILE%\.cargo\bin` 已加入)。
### 云端打包(GitHub Actions)
仓库已内置 [`.github/workflows/build.yml`](.github/workflows/build.yml):将代码推送到 GitHub 后,打 `v*` 标签(如 `v0.1.0`)或在 Actions 页面手动触发,即可在云端自动构建三平台安装包——Windows(msi/exe)、macOS Intel + Apple Silicon(app/dmg)、Linux(deb/AppImage),并自动上传到 GitHub Release(草稿状态,发布前可检查)。
这是获得 macOS 安装包的推荐方式——macOS 包无法在 Windows/Linux 上构建。
**更换应用图标**:替换 `src-tauri/icons/source/app.png`(建议 1024×1024),执行 `pnpm tauri icon src-tauri/icons/source/app.png` 重新生成全套图标,再重新 build。
## 工程结构
```
src/ 前端(React + TypeScript)
pages/JobPage.tsx 主界面:来源选择、配置表单、进度与摘要
pages/HistoryPage.tsx 历史记录
pages/SettingsPage.tsx 设置
pages/AboutPage.tsx 关于
App.tsx 应用壳(侧边栏导航)
App.css 全局样式(响应式:1080/860/560 三档断点)
src-tauri/
src/
engine.rs 任务总控:克隆/解压 → 分析 → 改名 → 替换 → 输出
patcher.rs 包发现、文本替换(保护第三方依赖)、路径改名
yamledit.rs 结构化 YAML 补丁(datasource.master / redis)
rules.rs 规则加载
ziputil.rs zip 解压(zip-slip 防护)与流式下载
resources/
replacement-rules.json 替换规则(外置,可维护)
icons/source/app.png 应用图标源图
docs/screenshots/ README 截图
```
## 测试
```bash
cd src-tauri
cargo test
```
包含引擎单元测试与**真实仓库端到端测试**:将本地克隆的 RuoYi-Vue-Plus 6.X / 5.X 打包后完整执行替换流程并逐项断言(模块改名、主类迁移、pom 坐标、第三方依赖保留、YAML 配置与注释、零残留等)。端到端测试依赖本地 `.ref/` 目录下的克隆(`git clone --depth 1 -b 6.X https://gitee.com/dromara/RuoYi-Vue-Plus.git .ref/ryp-6x`),无克隆时自动跳过。
## 注意事项
- SQL 脚本文件名(`ry_vue.sql` 等)保持原名,数据库名以你填写的 JDBC 连接串为准
- 二进制文件(图片 / 字体等)自动跳过;非 UTF-8 文本文件跳过并记入警告
- 输出目录 `<输出目录>/<工程前缀>/` 已存在时会拒绝写入,避免覆盖
- 表单 / 历史记录保存在本机 WebView 本地存储中,可在「设置」页清空
## 致谢
- [dromara/RuoYi-Vue-Plus](https://gitee.com/dromara/RuoYi-Vue-Plus) —— 所改造的脚手架
- [Tauri](https://tauri.app)、[React](https://react.dev)、[Iconify · Lucide](https://icon-sets.iconify.design)(图标,MIT License)
## 许可证
[MIT License](LICENSE)