简体中文 | [English](./CONTRIBUTING.en-US.md) 🎉 欢迎向 L7 贡献代码! 🎉 # 代码贡献规范 ## 1.下载源码 ```bash git clone https://github.com/antvis/L7 --depth=1 ``` ## 2.前置依赖安装 ### 2.1.安装 pnpm 由于使用了 pnpm workspace,首先需要安装 [pnpm](https://pnpm.io/installation) ### 2.2.安装项目依赖 ```bash pnpm install ``` ## 3.运行项目 ```bash # 运行 DEMO pnpm dev ``` **其它命令**: - `pnpm site:dev` 启动本地官网 - `pnpm test:unit` 运行单元测试 - `pnpm test-cover` 运行单元测试并查看代码覆盖率 - `pnpm test:integration` 运行集成测试 - `pnpm build` 构建源码包, 分别输出 umd, es 和 lib 目录 ## 4.代码风格 [CODE GUIDELINES](./CODE_GUIDELINES.md) ## 5.提交代码 ### 5.1.Commit 提交规范 根据 [angular 规范](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format) 提交 commit,这样 history 看起来更加清晰。 提交 commit 的类型,包括以下几种 - feat: 新功能 - fix: 修复问题 - docs: 修改文档 - style: 修改代码格式,不影响代码逻辑 - refactor: 重构代码,理论上不影响现有功能 - perf: 提升性能 - test: 增加修改测试用例 - chore: 修改工具相关(包括但不限于文档、代码生成等) - deps: 升级依赖 尽量用一句话清楚的描述这次提交做了什么,查看具体参考[文档](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit)。 ### 5.2.提交代码变更集 我们使用了 [changesets](https://github.com/changesets/changesets) 进行全自动的语义化发布,当我们开发完成后执行 changeset 并提交变更集。 ```bash pnpm run changeset git add . git commit -m "chore: commit changeset" ``` ### 5.3.提交 Pull Request 如果你有仓库的开发者权限,而且希望贡献代码,那么你可以创建分支修改代码提交 PR,AntV 开发团队会 review 代码合并到主干。 ```bash # 先创建开发分支开发,分支名应该有含义,避免使用 update、tmp 之类的 $ git checkout -b branch-name # 提交代码,message 见下面的规范 $ git add . # git add -u 删除文件 $ git commit -m "fix: role.use must xxx" $ git push origin branch-name ``` 提交后就可以在 [L7](https://github.com/antvis/l7/pulls) 创建 Pull Request 了。 由于谁也无法保证过了多久之后还记得多少,为了后期回溯历史的方便,请在提交 MR 时确保提供了以下信息。 1. 需求点(一般关联 issue 或者注释都算) 2. 升级原因(不同于 issue,可以简要描述下为什么要处理) 3. 框架测试点(可以关联到测试文件,不用详细描述,关键点即可) 4. 关注点(针对用户而言,可以没有,一般是不兼容更新等,需要额外提示) ## 6.版本发布 ![Release](https://github.com/antvis/L7/assets/26923747/edf6b817-c699-4fbf-8168-0da1cb429031) ### 6.1.线上自动版本发布 > 详细流程 [版本发布指南](https://www.yuque.com/antv/l7/qqburqndl8g584kw?singleDoc) 1. 去 [GitHub Action](https://github.com/antvis/L7/actions/workflows/create-bumb-version-pr.yml) 触发 Create bump version PR Action 执行,选择发布分支,触发 Action 执行 2. 等待 Action 执行完成,执行完成会提一个变更版本的 PR 3. 去确认 PR 版本变更内容,如果没有问题 approve PR,等待发布版本 Action 执行,期间会发布到 NPM、打 tag 到 Github、创建 GitHub Release 4. 第 3 步成功,会进行钉钉消息通知,机器人自动合并 PR,后台自动部署新官网 5. 第 3 步失败,会进行钉钉消息通知,去 GitHub Action 查看失败原因 ### 6.2.手动版本发布 1. 创建本地 `release` 分支 2. 若没有要发布的变更集,执行 `pnpm run changeset` 脚本,创建本次版本发布变更集,执行完成 commit 变更集 3. 执行 `pnpm run version-packages` 脚本,更新要发布包的版本号和 changelog,确认内容并 commit 4. 执行 `pnpm run publish-packages` 脚本,会发布包到 NPM、打 tag 到 GitHub 5. 将 `release` 分支变更内容,以提交 PR 方式合并到发布分支 6. 去 [GitHub Releases](https://github.com/antvis/L7/releases) 创建本次发布的 Release,创建完成后会自动部署新官网 ### 6.3.预发版 beta/alpha/next 发布流程 以预发 beta 为例,新增加一个功能,发布 beta 版本: 1. 创建本地 `beta` 分支 2. 执行 `pnpm exec changeset pre enter beta` [命令](https://github.com/changesets/changesets/blob/main/docs/command-line-options.md#pre)🔗,进入 `beta` 预发模式 3. 完成功能研发、添加变更集、push 到远端 `beta` 分支 4. 版本发布,与线上自动版本发布流程一致,也可以选择手动发布版本 beta 版本发布验证完成后,合并到主分支发布流程: 1. 执行 `pnpm exec changeset pre exit` [命令](https://github.com/changesets/changesets/blob/main/docs/command-line-options.md#pre)🔗,退出预发模式 2. 将 `beta` 分支变更内容,以提交 PR 方式合并到主分支 3. 版本发布,与线上自动版本发布流程一致,也可以选择手动发布版本