大家好,我是 [kiner-tang(文辉)](https://github.com/kiner-tang),我个人的工作内容可以说与 Ant Design 密切相关,可以算是 Ant Design 的重度用户了。也正因如此,让我由一个使用者慢慢地向着贡献者 Contributor 迈进,将自己在工作过程中遇到的一些问题和总结出的新特性回馈于社区,并最终很荣幸地成为了 Ant Design 的 Collaborator 中的一员。在从使用者到贡献者,再从贡献者到合作者的旅途中,也遇到了不少的问题,借此机会梳理总结一下,希望能对新加入 Ant Design 社区的贡献者和合作者们有所帮助。
关于`package.json`当中版本描述中的`^`和`~`的区别,可参考:[What's the difference between tilde(~) and caret(^) in package.json](https://stackoverflow.com/questions/22343224/whats-the-difference-between-tilde-and-caret-in-package-json)
这样,当我们的依赖,如`rc-cascader`修复了一个 bug 并发布了一个 patch 版本,如:`3.9.1`,那么,用户最新安装的版本就是`3.9.1`,而针对 Ant Design 的维护者,我们只需要执行如下命令:
```bash
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 项目当中去验证。如:
经过一段时间贡献,相信你已经对 Ant Design 的整体开发流程和项目架构有了更加深入的了解,此时,或许你希望承担更多的任务,为开源社区贡献更多的力量。那么,你可以通过以下链接评论申请成为 Ant Design 的 Collaborator ,获得更多的权限 [Add Collaborator permission for some active contributors](https://github.com/ant-design/ant-design/issues/3222),Collaborator 们会启动投票流程,投票通过后会邀请你正式成为 Ant Design 的 Collaborator。