# Electron约定

:+1::tada: 首先，感谢抽出时间做出贡献的每一个人。 :tada::+1:

这个项目将坚持贡献者盟约 [code of conduct](CODE_OF_CONDUCT.md).
我们希望贡献者能遵守贡献者盟约，如果有任何不能接受的行为被发现，请报告至electron@github.com(PS:请用英语)

下面是一组用于改进Electron的指南。
这些只是指导方针，而不是规则，做你认为对的事，并随时
在提出一个pull请求更改该文档。

## 提交 Issues

* 你可以在这里创建一个 issue [here](https://github.com/electron/electron/issues/new),
但在这样做之前请阅读以下注意事项，其中应包含尽可能多的细节。
如果可以能，请尽量包括:
  * Electron版本
  * 使用程序所使用的系统及系统版本
  * 如果适用，请包含：你做什么时发生了所提交的问题，以及你所期待的结果。
* 其他有助于解决你的 issue 的选项:
  * 截图或GIF动画
  * 终端中的错误堆栈
  * 执行 [cursory search](https://github.com/electron/electron/issues?utf8=✓&q=is%3Aissue+)
  查看是否已经存在类似问题。

## 提交 Pull Requests

* 包括在你拉的请求截图和动画GIF只要有可能。
* 遵循的JavaScript，C ++和Python [coding style defined in docs](/docs/development/coding-style.md).
* 书写对应文档 [Markdown](https://daringfireball.net/projects/markdown).
  请参考 [Documentation Styleguide](/docs/styleguide.md).
* 使用简短明了的提交信息，请参考 [Commit Message Styleguide](#git-commit-messages).

## 文档样式

### 通用代码

* 以一个空行作为文件结尾。
* 请按以下顺序加载模块:
  * 内置 Node 模块 (参考 `path`)
  * 内置 Electron 模块 (参考 `ipc`, `app`)
  * 本地模块 (使用相对路径)
* 请按以下顺序排列类的属性与方法:
  * 类的方法和属性 (方法以 `@` 开始)
  * 实例的方法和属性
* 避免和平台相关的代码:
  * 使用 `path.join()` 来链接文件名
  * 当需要使用临时目录的时候使用 `os.tmpdir()` 而不是 `/tmp` 。
* 使用 `return` 进行明确返回时
  * 不使用 `return null`, `return undefined`, `null`, 或 `undefined`

### Git 提交信息(鉴于进行Git提交时需要英文书写，此处暂不翻译)

* Use the present tense ("Add feature" not "Added feature")
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
* Limit the first line to 72 characters or less
* Reference issues and pull requests liberally
* When only changing documentation, include `[ci skip]` in the commit description
* Consider starting the commit message with an applicable emoji:
  * :art: `:art:` when improving the format/structure of the code
  * :racehorse: `:racehorse:` when improving performance
  * :non-potable_water: `:non-potable_water:` when plugging memory leaks
  * :memo: `:memo:` when writing docs
  * :penguin: `:penguin:` when fixing something on Linux
  * :apple: `:apple:` when fixing something on macOS
  * :checkered_flag: `:checkered_flag:` when fixing something on Windows
  * :bug: `:bug:` when fixing a bug
  * :fire: `:fire:` when removing code or files
  * :green_heart: `:green_heart:` when fixing the CI build
  * :white_check_mark: `:white_check_mark:` when adding tests
  * :lock: `:lock:` when dealing with security
  * :arrow_up: `:arrow_up:` when upgrading dependencies
  * :arrow_down: `:arrow_down:` when downgrading dependencies
  * :shirt: `:shirt:` when removing linter warnings
