Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add wiki #705

Merged
merged 4 commits into from
Mar 5, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions docs/zh-cn/contributor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# 贡献指南

## 为什么要成为贡献者?

欢迎您来到我们的社区!**Formily** 是阿里巴巴唯一官方向外公布的开源表单框架,功能和质量都有一定保证,拥有众多的社区使用者,参与贡献可以使 **Formily** 变得强大,也会让更多开发者能够享受到更好的开发表单的体验,我们非常感谢任何对本项目发起 **Pull Request** 的同学。

## 我可以贡献什么?

* features 新增/修改功能特性
* unitest 新增/修改单测
* bugfix 修复现有issue的问题
* doc 文档改进
* other 其他

## 如何贡献?

#### 拉取仓库
* 原始仓库:https://github.com/alibaba/formily
* 目标仓库:folk到自己的github上
![](https://img.alicdn.com/tfs/TB1NLrjxXY7gK0jSZKzXXaikpXa-2206-490.png)

#### 拉取分支
原始分支是 alibaba/formily master ,拉取后的分支应该是 quirkyshop/formily master
> 注意:建议分支名为[feat]-[name],[feat]是这个分支的类型,可选的有[feat][unitest][doc][bugfix][other],[name]则是名字,自定义就好了。eg. unittest-core(意为:对核心补充单测)

#### 提交代码
代码风格遵循2空格,无分号,非说明请不要在代码中附带任何console相关的方法及debugger。
开发完成后,到自己folk出来的仓库提交pull request
![](https://img.alicdn.com/tfs/TB1HSvqxkT2gK0jSZFkXXcIQFXa-2050-898.png)
![](https://img.alicdn.com/tfs/TB1O.6mxbr1gK0jSZR0XXbP8XXa-1696-254.png)
> 注意这里的左边目标仓库(base repository是 alibaba/formily master) ,然后右边当前分支自己仓库的 doc-wiki

#### PR规范
参考文档:https://github.com/alibaba/formily/blob/master/.github/GIT_COMMIT_SPECIFIC.md
* PR名称:格式:`<type>(<scope>): <subject>` 举例:`feat(core): add unit test`
* PR内容:列举本次改动的内容
* PR要求:增加的feat内容,尽量做到注释清晰,相应的单测覆盖要尽可能覆盖
* BUGFIX要求:如果修改的问题和issues相关,请在内容中附上相关的issueID。

#### 审核与合并
审核阶段会进入多review的流程,`@janryWang` 负责审核这个改动是否合并,其他同学也会参与讨论,讨论的经过都会留存在github的PR里,钉钉群也会收到相应的通知。

当看到PullRequests列表中的状态变为closed即为合并成功。
![](https://img.alicdn.com/tfs/TB1HUnjxXY7gK0jSZKzXXaikpXa-964-104.png)

#### 同步源仓库变更到folk后的仓库

```shell
# 首先在自己的分支增加一个upstream,即原仓库
$ git remote add upstream https://github.com/alibaba/formily.git
# 获取原仓库最新的变更
$ git fetch upstream
# 同步原仓库的改动到本地分支
$ git pull upstream master [当前本地目标分支,不填默认就是当前分支]
```

#### 项目开发
拉取目录到本地后,需要安装依赖,并且由于是多项目管理,互相有依赖,需要用lerna来做到
```shell
$ cd formily
$ npm install #安装整体项目依赖
$ npm run build #先跑一遍构建
$ npm run bootstrap # 安装子项目依赖
$ npm run build #各自构建子项目lib
```

#### 目录结构
* core 核心层
* react UI层,react实现
* validator 校验器
* shared 公共逻辑
* react-shared-component 通用视图组件层
* react-schema-editor 可视化Schema编辑器
* react-schema-renderer Schema渲染组件
* antd/next/meet 生态层
* antd/next/meet-components 生态组件层
* printer Schema打印组件
* devtools 浏览器插件
* ...

#### 开发模式
举例说明,现在开发core,想要比较有体感的使用某个core的API
```shell
$ cd formily
$ npm run doc:core # 查看core的demo展示,目录位于 packages/core/README.md
```
此时编辑 packages/core/README.md 会在 `watch` 模式下看到 `demo` 的改变,方便直观感受和修改代码

> 更多开发模式请参考源码,我们在各个目录下都提供了示例 `README.md` 的 `demo` 。

#### 单元测试
举例说明,现在对core进行单测覆盖
```shell
$ cd formily
$ npm run test:core # 会执行 packages/core/src/__test__ 下的单元测试
```
> 更多单测形式请参考源码,我们已在源码中提供超过200个单元测试!