Contributing
Grunt 项目有多个仓库
- grunt - 主要的 Grunt 项目
- grunt-init - 独立的 grunt-init 项目脚手架工具
- gruntjs.com - gruntjs.com 网站
- grunt-contrib 集合 - 所有 Grunt "contrib" 插件的集合
此外,每个单独的 grunt-contrib 插件都是 gruntjs 组织主页上列出的独立仓库。每个仓库都有自己的维护者,你可以通过查看最近的提交和推送轻松找到维护者。只需在你感兴趣的仓库中创建一个 issue,并 @mention
其中一个维护者即可开始。
贡献者许可协议
除了为其他用户提供支持外,大多数形式的贡献都需要你签署并提交一份贡献者许可协议(简称 CLA)给 jQuery 基金会。
简而言之,CLA 声明当你捐赠修复或文档时,你拥有你提交的代码,并且 jQuery 基金会可以将该代码授权给其他人。
签署 CLA 是一次性的事情,一旦完成,你就可以开始为所有 jQuery 基金会项目做贡献!但要有效,你需要了解贡献者和提交者如何协调他们的工作,所以参与并提出问题应该是你的第一步。
关于 CLA 的更多信息,请阅读 Alex Russell 的 为什么我需要签署这个?。
想要贡献?
如果你想贡献,但不知道从哪里开始,这里有一些建议。 下面链接的 issues 被标记为 需要 PR,这意味着它们需要一个拉取请求来修复。 选择任何这些 issues 并确保在处理它们时进行评论。
- grunt-init - 贡献指南应该放在 contributing.md 中
- grunt-contrib-jade - 添加对 basedir 选项的支持
- grunt-init-gruntfile - 不生成 package.json
- grunt-contrib-coffee - 支持 process 选项
- grunt - --gruntfile 参数在父目录中损坏
- grunt-contrib-compress - 添加 bzip2 支持
- grunt-contrib-jasmine - 增强日志记录
- grunt-contrib-less 多个 src 文件的源映射
发布新版本
要发布 grunt-contrib-*
插件的新版本,请按照以下步骤操作:
- 检查插件的 GitHub 页面,确保它通过了 Travis CI。
cd
进入插件目录。git pull
从master
分支获取最新更改。rm -rf node_modules
删除过时或旧的 node 模块。npm install
获取最新版本的 node 模块。- 运行
npm test
并确保所有测试在本地通过。 - 在
package.json
中bump版本 - 更新 CHANGELOG.md
- 在插件目录中运行
grunt
。这应该生成新的 README。 - 提交更改日志、
package.json
和 README 的更改。 - 为新版本创建一个新的 git 标签。使用此格式:
vX.Y.Z
。(例如v0.1.13
) - 推送更改到
master
,推送标签到插件仓库。 - 发布到 npm:
npm publish .
。如果你没有npm publish
的权限,请询问核心贡献者为你发布。
非代码贡献
如果你不想写代码,你仍然可以为项目做贡献!
- 你可以提交对文档的更新和改进。
- 提交文章和指南,这些也是文档的一部分。
- 通过在 StackOverflow、IRC 和 GitHub 上回答问题来帮助 Grunt 用户。
提交 issues
如果某些东西没有按照你的预期工作,请阅读文档,特别是新手入门指南。如果你想与某人聊天,请进入 IRC讨论 Grunt 并在那里提出你的问题。
如果文档中没有涵盖你的问题或你想报告一个 bug,确保它得到处理的最佳方式是在适当的 issues 跟踪器中提交。
- 如果 grunt、grunt-init、grunt-lib-??? 模块或特定的 grunt-contrib-??? 插件有问题
- 请在该项目的 issues 跟踪器中提交 issue。
- 如果你想贡献一个新插件
- 请在 grunt-contrib 集合 issues 跟踪器中提交 issue。我们不是接受所有插件,但我们会认真考虑你的插件。
- 如果网站有问题
- 请在 gruntjs.com 网站 issues 跟踪器中提交 issue。
- 如果有一个不特定于上述任何项目的 issue
- 请在 grunt issues 跟踪器中提交 issue,并告诉我们你为什么在那里提交。
简化 issue
尝试将你的代码缩减到重现 issue 所需的最小程度。这使得隔离和修复 issue 变得更加容易(和更快)。
解释 issue
如果我们无法重现 issue,我们就无法修复它。请列出重现 issue 所需的确切步骤。包括你的操作系统、Node.js、grunt 等版本。包括相关日志或示例代码。
讨论 Grunt
加入 freenode:IRC #grunt 频道进行一般讨论,或 #grunt-dev 进行核心和插件开发讨论。我们甚至有一个机器人。
请不要发私信。
修改 Grunt
- 确保已安装 grunt-cli(有关更多信息,请参见新手入门指南)
- Fork 并克隆仓库。
- 检出 master 分支(大多数 grunt/grunt-contrib 开发都发生在这里)。
- 运行
npm install
安装所有 Grunt 依赖。 - 运行
npm uninstall grunt
,这将删除node_modules
中额外的 Grunt,参见 npm issue 3958 - 运行
grunt
来 Grunt grunt。
假设你没有看到任何红色,你已经准备好了。只需确保在进行任何更改后运行 grunt
,以确保没有东西被破坏。
提交拉取请求
- 创建一个新分支,请不要直接在
master
中工作。 - 为你想要做的更改添加失败的测试。运行
grunt
查看测试失败。 - 修复问题。
- 运行
grunt
查看测试是否通过。重复步骤 2-4,直到完成。 - 更新文档以反映任何更改。
- 推送到你的 fork 并提交拉取请求。
语法
- 两个空格缩进。不要在任何地方使用制表符。如果需要制表符字符,请在字符串中使用
\t
。 - 没有尾随空白,除非在 markdown 文件中必须强制换行。
- 不要过度使用空白。
- 每个
var
语句不超过一个赋值。 - 使用单引号
'
分隔字符串,而不是双引号"
。 - 相比于
? :
条件或||
、&&
逻辑运算符的"聪明"用法,更喜欢使用if
和else
。 - 注释很棒。只需将它们放在代码行之前,而不是行末尾。
- 如有疑问,请遵循源代码中已使用的约定。
READMEs
所有 grunt-contrib-* 插件都使用 grunt-contrib-internal 来构建 README.md
和 CONTRIBUTING.md
文件。源文件位于相应的 docs/
文件夹中。README 中的更改日志是从 CHANGELOG
文件生成的。
提交对 README 文件的更改时,请直接编辑源文件,而不是直接编辑 README。