BuildAdmin是一个持续迭代版本、新增功能和修复BUG的系统,您可以参考此文档保持您的BuildAdmin为最新版本。

# Git包

我们推荐您使用Git管理系统的代码,这是目前世界上最好的版本管理工具,没有之一。

# 更新核心代码

# 保存工作现场(将目前还不想提交的但是已经修改的代码保存至堆栈中)
git stash

# 从远程仓库获取最新代码并自动合并到本地
git pull

# pull 命令如果有冲突,先处理冲突,下文有处理冲突示范(您新增的文件不会发生冲突,而框架文件我们更新同时您也更新了该文件才可能冲突)

# 恢复工作现场
git stash pop

# 更新后端依赖

composer update -vvv

# 更新数据库

如果app/admin/buildadmin.sql文件有更新,请根据Git更新日志对比直接修改数据库。

# 清理系统缓存

后台->右上角垃圾桶图标->清理系统缓存(该操作会删除runtime/cache目录

# 更新时额外可能会用到的命令

# 查看远程仓库信息
git remote -v

# 查看 stash 队列
git stash list

# 清空 stash 队列
git stash clear

下文提供了一次完整的更新示范,以方便不了解git的小伙伴更新框架

# 拉取代码(更新示范第一步)

# 保存工作现场
git stash
Saved working directory and index state WIP on master: ******** # 命令输出:保存工作区成功

# 检查远程仓库设置
git remote -v
origin      https://gitee.com/wonderful-code/buildadmin.git (fetch)
origin      https://gitee.com/wonderful-code/buildadmin.git (push)
# PS:笔者这里BuildAdmin远程仓库的名称是origin,你仓库的可能不一样,或者干脆没有地址为`https://gitee.com/wonderful-code/buildadmin.git`的远程仓库设置
# 如果没有该仓库地址,请执行命令添加:git remote add buildamdin https://gitee.com/wonderful-code/buildadmin.git

# 拉取最新代码,buildadmin 为远程仓库名称
git pull buildadmin master
remote: Enumerating objects: 833, done.
remote: Counting objects: 100% (336/336), done.
remote: Compressing objects: 100% (151/151), done.
remote: Total 833 (delta 243), reused 183 (delta 183), pack-reused 497
Receiving objects: 100% (833/833), 265.19 KiB | 385.00 KiB/s, done.
Resolving deltas: 100% (434/434), completed with 72 local objects.
From https://gitee.com/wonderful-code/buildadmin
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> buildadmin/master
Auto-merging app/admin/controller/Index.php # 更新已自动合并
Auto-merging app/api/common.php
Auto-merging app/api/controller/Account.php
Auto-merging app/api/controller/User.php
Auto-merging app/api/lang/zh-cn.php
CONFLICT (content): Merge conflict in app/api/lang/zh-cn.php # 冲突!仓库改了这个文件,你本地也改了这个文件,需要手动解决冲突
Auto-merging app/common/library/Auth.php
Auto-merging config/buildadmin.php
Auto-merging extend/ba/module/Manage.php
Auto-merging web/src/api/controllerUrls.ts
Auto-merging web/src/api/frontend/user/index.ts
Auto-merging web/src/utils/axios.ts
CONFLICT (content): Merge conflict in web/src/utils/axios.ts # 冲突!
Auto-merging web/src/views/frontend/user/account/overview.vue
CONFLICT (content): Merge conflict in web/src/views/frontend/user/account/overview.vue # 冲突!
Automatic merge failed; fix conflicts and then commit the result. # 提示你需要手动解决冲突,然后commit

# 解决冲突(更新示范第二步)

  • 找到以上提示冲突的文件,逐一手动解决冲突。
  • 您也可以直接打开VScode编辑器,在源代码管理选项卡上,所有的冲突文件被罗列在合并更改处,如图所示:



    点开第一个冲突文件,可以看到git使用<<<<<<<......>>>>>>>包裹了冲突部分的代码,并使用=======分隔了本地代码和新代码



    VScode在冲突代码块之上,提供了Accept Current ChangeAccept Incoming ChangeAccept Both Change、等按钮,可以方便的进行一键合并。非VScode用户手动进行合并即可。

    app/api/lang/zh-cn.php文件合并前



    app/api/lang/zh-cn.php文件合并后,(合并时请删除<>=等符号,只保留正确的代码即可)



    src/views/frontend/user/account/overview.vue文件合并前



    src/views/frontend/user/account/overview.vue文件合并后

    \

# 完成合并(更新示例第三步)

# 处理完冲突后,提交代码
git add .
git commit -m 处理冲突

# 恢复工作现场
git stash pop

# 更新后端依赖
composer update

# 更新前端依赖
pnpm install

# 调整不兼容更新

框架可能会带来一些不兼容更新,比如:

  • 本次更新框架同时更新了Element-plus,新版本的Element-plus废弃了el-dialogcustom-class属性,打开站点,F12控制台可见警告;打开编辑器在项目内搜索custom-class,将所有el-dialogcustom-class替换为class即可。
  • v1.0.6版本框架更新了buildValidatorData的传参方式等等,需参考v1.0.6不兼容更新对已有代码进行修改。