allinssl/frontend/scripts/sync-project.md

96 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 项目同步工具文档
## 功能名称
**跨平台 Turborepo 工作区编译部署自动化工具**
## 功能简述
这是一款基于纯 Shell 脚本开发的自动化工具,借助交互式命令行界面,能够对 Turborepo 项目的应用工作区进行扫描。它支持选定工作区的编译操作,还能把编译结果同步到指定的 Git 仓库,并且可以选择性地同步过滤后的项目结构。该工具最大的特点是实现了跨平台兼容,可在 Windows、macOS 和 Linux 系统上稳定运行。
## 技术规格
- **实现语言**:严格遵循 POSIX 标准的 Shell 脚本
- **跨平台方案**
- 在 Windows 系统中,依赖 Git Bash/MSYS2 环境运行
- 在 macOS/Linux 系统上,直接使用原生 bash/zsh 环境
- **核心依赖工具**
- 需要预先安装 pnpm 包管理工具
- 必须安装 git 版本控制工具
- 要具备标准 Unix 工具集,像 find、grep、sed 等
- 可选安装 yq 工具用于 YAML 配置管理
## 目录结构
所有配置和生成的文件统一放在项目根目录的 `.sync` 目录中:
- **.sync/**:工具根目录
- `sync-config.yaml`:工作区同步配置文件
- `history`:操作历史记录
- `git-repos/`Git 仓库同步目录,用于存储同步的 Git 仓库内容
- `plugins/`:插件目录
## 配置文件格式
```yaml
# 工具配置
config:
parallel_build: false # 是否并行编译
dry_run: false # 是否干运行
# 工作区配置
workspaces:
# 证书管理项目同步配置
allin-ssl:
sync_mappings:
- git:
url: "http://git.bt.cn/wzz/allinssl.git"
branch: "1.0.1"
alias: "allinssl-gitlab"
sync: ["/dist", "/build"] # 要同步的目录,只支持两个字段
source: true # 是否同步源码
- git:
url: "https://github.com/allinssl/allinssl.git"
branch: "1.0.1"
alias: "allinssl-github"
sync: ["/dist", "/build"] # 要同步的目录,只支持两个字段
source: true # 是否同步源码
```
## 交互方式
- **菜单驱动界面**
- 运用上下方向键来进行选项导航
- 通过回车键完成确认操作
- 使用数字键1/0进行选择/取消选择
- **多步骤流程引导**:每个操作步骤都配有明确的提示信息和状态反馈
- **彩色日志输出**:对不同类型的信息,如错误、警告、成功等,使用不同颜色进行区分显示
- **步骤可视化**:直观显示当前操作进度和已完成步骤
## 优化流程
1. **初始化**:检查环境和项目结构(只执行一次)
2. **编译阶段**:先编译当前工作区的代码
3. **Git准备阶段**检查Git目录必要时拉取最新代码
4. **同步阶段**将编译后的代码复制到Git目录支持多目录同步
5. **提交阶段**:提交并推送更改到远程仓库
## 使用方法
```bash
./sync-project.sh [选项]
```
选项:
- `--parallel, -p` - 启用并行编译
- `--dry-run, -d` - 干运行模式,不执行实际操作
- `--help, -h` - 显示帮助信息
## 兼容保证
- **路径处理**:自动处理不同操作系统的路径分隔符差异
- **命令适配**:针对不同系统提供兼容的命令实现
- **错误处理**:提供统一的错误处理和日志记录机制
## 性能优化
- 避免重复运行相同的检测逻辑
- 缓存配置文件加载结果
- 仅在必要时检查依赖工具
- 并行执行支持用于多工作区同步
## 维护与更新
- 定期检查和更新依赖工具
- 添加新功能时遵循模块化设计
- 保持脚本的跨平台兼容性
- 更新文档以反映新增功能和变更