在github开源你的前后端分离项目

前言

其实完整来说,应该是⌈优雅⌋的在github开源你的前后端分离项目。

这时候就会有人说了,开源项目还不简单吗。就算不会,网络上的教程也是比比皆是。但是,我的文章突出的是一个⌈优雅⌋,当别人看到你的项目时,怎么才能让他更简单的读懂并使用你的开源项目。

我们的项目发布是有版本的,比如说v1.0.0,v2.0.13之类的。此时我们有一个前端仓库和一个后端仓库,如何发布它们的版本并且保证它们两的版本是兼容的呢?想象一下这样的场景:用户下载了你的后端v1.2.0,却不知道应该搭配哪个前端版本,结果遭遇各种兼容性问题。良好的版本管理能避免这种混乱,让你的项目显得专业且易于使用。下面我们们细细的探究一下。

⌈优雅⌋开源

发布版本

先说如何发布版本,开发过程中,我们会频繁的创建commit,这是代码的历史记录点。当你已经把确定为该版本的代码最后一次push到了远程仓库,标志着我们发布版本的任务开始。那么就先会牵扯到版本该如何命名,版本号的结构:MAJOR.MINOR.PATCH

  • 主版本号(MAJOR):有不兼容的API修改
  • 次版本号(MINOR):向下兼容的功能新增
  • 修订号(PATCH):向下兼容的问题修正

不过我自己在这方面以及我看别人的开源项目在这方面的概念都比较模糊,并不都严格遵守。下面是一个具体开源版本发布的示例。

shell 复制代码
# 确定当前版本的代码并推送
git push origin main

# 创建带注释的标签
git tag -a v1.0.0 -m "发布新版本v1.0.0:第一个版本!"

# 推送标签到远程
git push origin v1.0.0

接下来就是进入远程仓库的网站,以github为例,进入仓库页面后点击Releases,接着Draft a new Release,选中目标版本的tag并对当前版本信息做详细描述(建议有自己的一套模板),即为发布成功!

元仓库

那么我们说回前后端版本兼容的情况,开发者面对我们的前端和后端的仓库的多样的版本,并不清楚应该将哪两个版本相互匹配,而在README中指明,显然不是一个有强指引效果的⌈优雅⌋的方案。而使用元仓库,就能很好的将两个仓库关联起来,它不包含实际业务代码,而是提供项目的全景视图导航功能

现在,我们以Auth-Matrix为例。在已经有了前后端仓库并且发布了相互兼容的版本的前提下,比如auth-matrix-backend v1.0.0以及auth-matrix-frontend v1.0.1。

shell 复制代码
# 我们先初始化元仓库
mkdir auth-matrix
cd auth-matrix
git init

# 接着添加前后端仓库到元仓库
# 或者通过ssh方式,都行
git submodule add https://github.com/thirty30ww/auth-matrix-backend.git
git submodule add https://github.com/thirty30ww/auth-matrix-frontend.git

# 拉取所有子模块最新代码
git submodule update --init --remote

# 选择兼容的要发布的版本
cd ./backend
git checkout v1.0.0
cd ../frontend
git checkout v1.0.1

# 6. 提交版本锁定
git add .
git commit -m "发布我的第一个前后端兼容版本!"

# 7. 创建元仓库版本标签
git tag -a v1.0.0 -m "发布新版本v1.0.0:第一个版本!"

# 8. 推送更新
git push origin v1.0.0

这样就有了一个前后端兼容的元仓库tag了,和上面的步骤一样release

总结

通过元仓库的巧妙设计,我们为前后端分离项目构建了清晰的版本桥梁。如上图所示,开发者现在可以:

  1. 从元仓库的README快速掌握项目全貌
  2. 通过GitHub Releases获取经过验证的兼容版本组合
  3. 一键克隆即可获得完美匹配的前后端代码

这种设计既保持了组件独立性,又解决了版本兼容的痛点,让开源协作变得简单而优雅。

想查看实际效果?欢迎参考我的开源项目:Auth-Matrix

相关推荐
Van_Moonlight7 小时前
RN for OpenHarmony 实战 TodoList 项目:空状态占位图
javascript·开源·harmonyos
Van_Moonlight10 小时前
RN for OpenHarmony 实战 TodoList 项目:顶部导航栏
javascript·开源·harmonyos
Logan Lie12 小时前
开源许可证科普:从 MIT 到 GPL
开源
AI大佬的小弟13 小时前
【小白第一课】大模型基础知识(1)---大模型到底是啥?
人工智能·自然语言处理·开源·大模型基础·大模型分类·什么是大模型·国内外主流大模型
GitCode官方15 小时前
G-Star 精选开源项目推荐|第四期
开源·atomgit
Van_captain15 小时前
rn_for_openharmony常用组件_Breadcrumb面包屑
javascript·开源·harmonyos
Van_Moonlight16 小时前
RN for OpenHarmony 实战 TodoList 项目:渐变背景色
javascript·开源·harmonyos
半熟的皮皮虾17 小时前
又重新写了个PDF工具箱-转换office格式/合并/拆分/删除常见操作都有了
python·程序人生·pdf·flask·开源·json·学习方法
Kagol17 小时前
深入浅出 TinyEditor 富文本编辑器系列2:快速开始
前端·typescript·开源
Dream_iy19 小时前
国产开源自定义拖拽大屏可视化工具对比分析
开源