大家好,我是 kiner-tang(文辉),我个人的工作内容可以说与 Ant Design 密切相关,可以算是 Ant Design 的重度用户了。也正因如此,让我由一个使用者慢慢地向着贡献者 Contributor 迈进,将自己在工作过程中遇到的一些问题和总结出的新特性回馈于社区,并最终很荣幸地成为了 Ant Design 的 Collaborator 中的一员。在从使用者到贡献者,再从贡献者到合作者的旅途中,也遇到了不少的问题,借此机会梳理总结一下,希望能对新加入 Ant Design 社区的贡献者和合作者们有所帮助。
这样,当我们的依赖,如rc-cascader修复了一个 bug 并发布了一个 patch 版本,如:3.9.1,那么,用户最新安装的版本就是3.9.1,而针对 Ant Design 的维护者,我们只需要执行如下命令:
git clean -fdx
npm i
快照更新问题
在 Ant Design 当中,我们使用 jest 进行单元测试和覆盖率测试,而很多第一次参与 Ant Design 项目开发的同学可能经常会发现,自己只是修改了某个 demo 中的文字,为啥一推送上去,CI 中的测试任务就失败了呢?这就要从 Ant Design 的快照检测说起了。
在绝大部分工具库中,都是比较强调幂等性的概念,意思就是同一个方法,无论执行多少次,只要输入参数是一样的,那么得到的结果也就是一样的。而在 Ant Design 当中,个人认为使用快照检测最大的作用也正是校验我们的 demo 的幂等性,以此确保组件输出的稳定性和确定性。其实快照检测的原理很简单,就是将我们的 demo 生成 html 字符串保存下来,下次在运行测试任务时进行对比,如果发现有差异就说明快照检测失败了。
在 Ant Design 中,大部分的组件都是基于 react-component 的组件的一个上层封装,因此,如果有用户报障,我们在排查问题时,如果发现问题出在了 @rc-component/xxx 或 rc-xxx 组件当中,那么我们就需要往这些组件提 pr 进行修复。在修复之后,我们需要在 Ant Design 项目当中验证修复的结果,那么,我们就可以将该项目 link 到 Ant Design 项目当中去验证。如:
在 rc 项目下执行 npm link
在 Ant Design 当中执行 npm link "项目名称"
当我们验证通过后,就可以向 rc 组件提 pr 了。
需要注意的是,link 可能会导致运行 test 命令时产生异常,因此,我们在本地验证完毕后,需要本地运行以下命令删除 link 过来的包:
npm unlink "rc-field-form" --no-save
npm i
当最终该 pr 被合并过去之后,通常维护者会发布一个版本,如果发布的是 patch 版本,那么你只需要在 Ant Design 项目当中安装验证一下就好了。但如果发布的是minor版本,那么我们还需要在 Ant Design 项目中主动升级一下版本,并在本地验证通过后,单独向 Ant Design 提一个 pr 进行升级修复。
经过一段时间贡献,相信你已经对 Ant Design 的整体开发流程和项目架构有了更加深入的了解,此时,或许你希望承担更多的任务,为开源社区贡献更多的力量。那么,你可以通过以下链接评论申请成为 Ant Design 的 Collaborator ,获得更多的权限 Add Collaborator permission for some active contributors,Collaborator 们会启动投票流程,投票通过后会邀请你正式成为 Ant Design 的 Collaborator。