欢迎!我们很高兴您能来到这里,并非常期待您能有兴趣参与 Luckysheet 贡献。当然,在您参与 Luckysheet 贡献之前,请确保通读以下全文:
我们保证尊重所有参与贡献的人,不限于提出问题、文档和代码贡献、解决bug以及其它贡献的人;
我们有义务遵守当地法律法规,所有的附带法律风险的行为我们都是拒绝的;
我们反对任何参与者存在贬损评论、人身攻击、骚扰或侮辱他人以及其他非专业行为;
我们有权并有责任删除或编辑与此行为准则不符的内容,不限于代码、Issues、wiki、文档以及其它。不遵守行为准则的参与者可能会被移除团队;
我们接受任何人的监督,任何人可通过问题反馈,向我们报告发现的与此行为准则不符的事实存在。
在您提交特性/改进前,应该注意以下几点:
具体步骤:
在 Luckysheet 的 Issues 列表中,有很多由其他人创建的issue并未被修复,如果你感兴趣的话,可以认领这些issue。认领步骤如下:
进入 Luckysheet 的Github页面 ,点击右上角按钮 Fork 进行 Fork。
git clone 到本地
git clone https://github.com/<your_github_name>/Luckysheet.git
上游建立连接
cd Luckysheet
git remote add upstream https://github.com/mengshukeji/Luckysheet.git
创建开发分支
git checkout -b dev
修改提交代码
git add .
npm run commit
git push origin dev
同步代码,将最新代码同步到本地
git fetch upstream
git rebase upstream/master
如果有冲突(没有可以忽略)
git status # 查看冲突文件,并修改冲突
git add .
git rebase --continue
提交git rebase --continue命令的时候,如果弹出vim提示编辑commit信息,则可以添加你的修改,然后保存退出
vim命令请参考阅读vim
提交分支代码
git push origin dev
如果提示需要先pull 可以先拉取在提交
git pull origin dev
git push origin dev
若弹出vim提示编辑commit信息,可以直接通过vim命令退出
vim命令请参考阅读vim
一般性的代码规范示例
保持块深度最小。尽可能避免嵌套If条件
// CORRECT
if (!comparison) return
if (variable) {
for (const item of items) {}
} else if (variable2) {
// Do something here
}
// INCORRECT
if (comparison) {
if (variable) {
for (const item in items) {}
} else if (variable2) {
// Do something here
}
} else {
return
}
不要使用操作数进行链比较
// CORRECT
if (cb) cb()
if (!cb || (cb === fn)) cb()
// INCORRECT
cb && cb()
(!cb || (cb === fn)) && cb()
所有变量都应该按字母顺序在块的开头声明
// CORRECT
function foo () {
const foo = 'bar'
const bar = 'foo'
if (conditional) {}
...
return foo
}
// INCORRECT
function foo () {
const foo = 'bar'
if (conditional) {}
const bar = 'foo'
...
return foo
}
尽快返回
// CORRECT
if (condition) return 'foo'
if (condition2) return 'bar'
// Return must have a blank line above
return 'fizz'
// INCORRECT
const variable = ''
if (condition) {
variable = 'foo'
} else if (condition2) {
variable = 'bar'
} else {
variable = 'fizz'
}
return variable
任何人只要对 Luckysheet 项目做了贡献,那您就是官方承认的 Luckysheet 项目的Contributor了,从Contributor成长为Committer并没有一个确切的标准, 也没有任何预期的时间表,但是Committer的候选人一般都是长期活跃的贡献者,成为Committer并没有要求必须有巨大的架构改进贡献, 或者多少行的代码贡献,贡献代码、贡献文档、参与邮件列表的讨论、帮助回答问题等等都提升自己影响力的方式。
潜在贡献清单(无特定顺序):