先理解项目结构和两种升级场景
交行定制版基于云枢产品主线(8.7.x)二次开发。前端项目中有两类包,升级方式完全不同:
| 类型 | 包含哪些 | 升级方式 |
|---|---|---|
| 项目工程包 | admin、portal、mobile、extension-template、cloudpivot-form-extend | 从 FTP 拉取新代码 → Git 合并二开代码 |
| 定制依赖包 | cloudpivot、cloudpivot-admin-core、cloudpivot-designer、cloudpivot-form、cloudpivot-list、extension-bankcomm | 只需修改 resolutions 版本号 |
产品发版时 FTP 上会放新的工程代码,需要把你的二开代码合并进去
FTP 上发布的是产品的项目工程代码(不是依赖包)。浏览器打开 FTP 地址,选择最新日期的目录下载:
目录命名规则:{分支名}-{日期YYYYMMDD},下载后包含以下目录:
拿到后,你需要将自己的二开代码合并进去。推荐使用 Git 操作:
# 1. 确保当前二开代码已全部提交 git add -A && git commit -m "chore: 升级前保存二开代码" # 2. 创建一个临时分支,将 FTP 的产品代码放进来 git checkout -b upgrade/bankcomm-YYYYMMDD # 3. 将 FTP 下载的 packages 目录覆盖到对应位置 # (admin/、mobile/、portal/ 等工程目录) cp -r /path/to/ftp/packages/admin ./packages/admin cp -r /path/to/ftp/packages/mobile ./packages/mobile cp -r /path/to/ftp/packages/portal ./packages/portal # ... 其他有更新的目录 # 4. 提交产品新代码 git add -A && git commit -m "chore: 导入产品包 bankcomm-YYYYMMDD" # 5. 切回你的开发分支,合并产品代码 git checkout feature-8.7.x-bankcomm git merge upgrade/bankcomm-YYYYMMDD # 6. 解决冲突(如果有),然后提交 # 冲突通常出现在你二开修改过的文件中 git add -A && git commit
如果只更新 cloudpivot 系列依赖包,无需合并代码
定制依赖包通过 resolutions 引用,升级时只需要修改版本号,不需要替换任何代码文件。
打开项目根目录的 package.json,找到末尾的 resolutions 字段:
"resolutions": { "cloudpivot": "1.1.0-ai-platform-bankcomm-X.Y", "cloudpivot-admin-core": "1.1.0-ai-platform-bankcomm-X.Y", "cloudpivot-designer": "1.1.0-ai-platform-bankcomm-X.Y", "cloudpivot-form": "1.1.0-ai-platform-bankcomm-X.Y", "cloudpivot-list": "1.1.0-ai-platform-bankcomm-X.Y", "extension-bankcomm": "1.1.0-ai-platform-bankcomm-X.Y" }
示例:将 cloudpivot 从 2.1 升级到 2.2:
// 只需把版本号改一下 "cloudpivot": "1.1.0-ai-platform-bankcomm-2.1" ↓ "cloudpivot": "1.1.0-ai-platform-bankcomm-2.2"
sync-local-versions.js(preinstall 钩子),yarn install 时会自动将所有包对定制包的引用对齐为 resolutions 中声明的版本。无论哪种场景,最后都需要执行
# 1. 安装依赖(preinstall 会自动同步版本) yarn install # 2. 构建全部端(portal + mobile + admin) yarn build:all # 或者按需单独构建 yarn build:portal # 用户门户 yarn build:admin # 管理后台 yarn build:mobile # 移动端
yarn install 报版本冲突,检查 resolutions 版本号是否正确。必要时删除 node_modules 和 yarn.lock 后重试。后端升级只需修改版本号,无需替换代码
后端的更新方式非常简单。产品团队发布新版本后,只需在二开工程的依赖配置中,将云枢产品包的版本号更新为最新版本即可。
pom.xml 或 build.gradle 中的版本号,构建时会自动拉取最新的产品包。以 Maven 项目为例,在二开工程的 pom.xml 中找到产品依赖版本,更新为新版本号:
<!-- 更新前 --> <properties> <cloudpivot.version>x.x.x-旧版本</cloudpivot.version> </properties> <!-- 更新后 --> <properties> <cloudpivot.version>x.x.x-新版本</cloudpivot.version> </properties>
拉取新依赖并打包
# Maven 项目 mvn clean package -DskipTests # 或 Gradle 项目 gradle clean build -x test
构建完成后按正常流程部署即可。二开工程中的定制代码无需任何修改。
6 个定制包 · 已发布 4 · 跳过 2(已发布)
| 包名 | 版本号 | 状态 | 发布地址 |
|---|---|---|---|
cloudpivot |
1.1.0-ai-platform-bankcomm-2.1 |
已发布 | nexus01.authine.cn/npm-cloudpivot |
cloudpivot-admin-core |
1.1.0-ai-platform-bankcomm-2.1 |
已发布 | nexus01.authine.cn/npm-cloudpivot |
cloudpivot-designer |
1.1.0-ai-platform-bankcomm-2.1 |
已发布 | nexus01.authine.cn/npm-cloudpivot |
extension-bankcomm |
1.1.0-ai-platform-bankcomm-2.0 |
已发布 | nexus01.authine.cn/npm-cloudpivot |
cloudpivot-form |
1.1.0-ai-platform-bankcomm-2.0 |
跳过 (已发布) | nexus01.authine.cn/npm-cloudpivot |
cloudpivot-list |
1.1.0-ai-platform-bankcomm-2.0 |
跳过 (已发布) | nexus01.authine.cn/npm-cloudpivot |