Skip to content

Commit 6b7d107

Browse files
zhaozhimingsindresorhus
authored andcommitted
Close #17 PR: translate AVA docs to zh_CN.
1 parent f7f4f8f commit 6b7d107

10 files changed

+1657
-0
lines changed

readme.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
- [日本語](ja_JP/readme.md) *(by [@makotot](https://github.com/makotot))*
66
- [Português](pt_BR/readme.md) *(by [@charbelrami](https://github.com/charbelrami))*
77
- [Русский](ru_RU/readme.md) *(by [@sohje](https://github.com/sohje))*
8+
- [简体中文](zh_CN/readme.md) *(by [@zhaozhiming](https://github.com/zhaozhiming))*
89

910

1011
## Contribute

zh_CN/code-of-conduct.md

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
___
2+
**备注**
3+
4+
这是 [code-of-coduct.md](https://github.com/sindresorhus/ava/blob/master/code-of-coduct.md) 的简体中文翻译。这个[链接](https://github.com/sindresorhus/ava/compare/89767ec3b6174e59d37faaadb50cfa3c0d58bda6...master#diff-d3030a18b089fdb1fbfabf6e75e4aef0) 用来查看本翻译与 AVA 的 master 分支是否有差别(如果你没有看到`code-of-coduct.md`发生变化,那就意味着这份翻译文档是最新的)。
5+
___
6+
7+
# 贡献者的行为准则
8+
9+
翻译:[Español](https://github.com/sindresorhus/ava-docs/blob/master/es_ES/code-of-conduct.md), [Français](https://github.com/sindresorhus/ava-docs/blob/master/fr_FR/code-of-conduct.md), [日本語](https://github.com/sindresorhus/ava-docs/blob/master/ja_JP/code-of-conduct.md), [Português](https://github.com/sindresorhus/ava-docs/blob/master/pt_BR/code-of-conduct.md), [Русский](https://github.com/sindresorhus/ava-docs/blob/master/ru_RU/code-of-conduct.md), [简体中文](https://github.com/sindresorhus/ava-docs/blob/master/zh_CN/code-of-conduct.md)
10+
11+
作为这个项目的贡献者和维护者,我们希望社区开放和受欢迎,我们承诺尊重所有参与项目的人,不管是报告问题,提交功能需求,更新文档,提交 pull request 或 patch,或者是其他积极的活动。
12+
13+
我们致力于让每个参与项目的人享受相同的体验,不管经验水平,性别,性别身份和表达,性取向,残疾,个人形象,身体大小,种族,种族渊源,年龄,宗教信仰或者国籍。
14+
15+
参与者不被接收的行为有如下例子:
16+
17+
* 色情内容或图片
18+
* 个人攻击
19+
* 恶意攻击或者侮辱、贬低他人的言论
20+
* 公开或者私下骚扰
21+
* 公布他人私人信息,包括现实和网络的信息
22+
* 没有得到明确许可进行的演讲
23+
* 其他不道德和不专业的行为
24+
25+
项目维护者有如下权利和义务,包括删除,编辑或者拒绝评论,提交,代码,wiki 编辑,问题和其他贡献者没有遵守行为准则的行为等操作,可以临时或永久的禁止任何贡献者,如果认为贡献者不合适,威胁他人,无礼或者有害的,会进行临时或者永久禁止的处理。
26+
27+
通过采用这份行为准则,项目维护者承诺在项目管理的方方面面上公平和坚持地贯彻这些原则。如果有维护者没有遵守或执行行为准则,他可能就会在项目团队中被永久除名。
28+
29+
30+
当个人代表项目或者社区的时候,这份行为准则适用于项目空间和公共空间。
31+
32+
举报辱骂,骚扰或者其他不被接受的行为可以通过 [email protected] 联系项目维护人员。所有的投诉都会被审计和调查,最终会产生一个认为必要和合理的结果。维护人员有义务为报告者保密其信息。
33+
34+
这份行为准则改编自[贡献者契约][homepage],版本 1.3.0,可在 [http://contributor-covenant.org/version/1/3/0/][version] 获取。
35+
36+
[homepage]: http://contributor-covenant.org
37+
[version]: http://contributor-covenant.org/version/1/3/0/

zh_CN/contributing.md

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
___
2+
**备注**
3+
4+
这是 [contributing.md](https://github.com/sindresorhus/ava/blob/master/contributing.md) 的简体中文翻译。这个[链接](https://github.com/sindresorhus/ava/compare/89767ec3b6174e59d37faaadb50cfa3c0d58bda6...master#diff-cc4aac3e9be04e0413c9520f223b493c) 用来查看本翻译与 AVA 的 master 分支是否有差别(如果你没有看到`contributing.md`发生变化,那就意味着这份翻译文档是最新的)。
5+
___
6+
# 向 AVA 贡献
7+
8+
✨ 感谢向 AVA 作出贡献! ✨
9+
10+
请注意,这个项目发布带有[贡献者的行为准则](code-of-conduct.md),参与这个项目你需要同意并遵守其中的条款。
11+
12+
翻译:[Español](https://github.com/sindresorhus/ava-docs/blob/master/es_ES/contributing.md), [Français](https://github.com/sindresorhus/ava-docs/blob/master/fr_FR/contributing.md), [日本語](https://github.com/sindresorhus/ava-docs/blob/master/ja_JP/contributing.md), [Português](https://github.com/sindresorhus/ava-docs/blob/master/pt_BR/contributing.md), [Русский](https://github.com/sindresorhus/ava-docs/blob/master/ru_RU/contributing.md), [简体中文](https://github.com/sindresorhus/ava-docs/blob/master/zh_CN/contributing.md)
13+
14+
## 我怎么贡献?
15+
16+
### 改进文档
17+
18+
作为 AVA 的用户你是帮助我们改进文档的最佳候选人,修改拼写错误,修复错误,更好的解释,更多的例子等等。为一些可以改进的事情提问题,[帮助我们翻译文档](https://github.com/sindresorhus/ava-docs),不管任何事情,即使是改善现在这个文档。
19+
20+
### 改善问题
21+
22+
一些问题在创建时缺少信息,不能重现,描述太过简单无效,帮助我们将他们变得更容易处理,因为处理问题需要大量时间,我们情愿将时间花在修复缺陷和添加新功能上面。
23+
24+
### 在问题中给出反馈
25+
26+
我们总是在问题跟踪器上寻找更多的讨论意见,这是一个影响 AVA 未来发展方向的好机会。
27+
28+
### 在我们的聊天室中闲聊
29+
30+
我们有一个[聊天室](https://gitter.im/sindresorhus/ava),可以进到里面潜水,跟我们聊天,或者帮助其他人。
31+
32+
### 提交问题
33+
34+
- 问题跟踪器是针对问题的,请使用我们的[聊天室](https://gitter.im/sindresorhus/ava) 或者 [Stack Overflow](https://stackoverflow.com/questions/tagged/ava) 来寻求支持。
35+
- 在新开一个问题之前先搜索以前的问题。
36+
- 确保你使用的是最新版本的 AVA。
37+
- 用一个清晰和描述性好的标题。
38+
- 包含尽可能多的信息:重现问题的步骤,错误的信息,Node.js 的版本,操作系统等。
39+
- 在问题的描述上你花越多时间,越多的信息将给到我们。
40+
- [最好的问题提交方式是提供一个失败的测试案例。](https://twitter.com/sindresorhus/status/579306280495357953)
41+
42+
### 提交一个 pull rquest
43+
44+
- 重大的修改最好是先开一个问题来进行讨论,这样可以避免你做一些不必要的工作。
45+
- 对于长期远大的任务,你应该将你所做的工作在社区中提出来并尽快得到反馈,尽快开一个能证明你想法的最简版本的 pull request。在前期,不需要把事情做得完美,或者 100% 完成,只需要在标题添加一个 [WIP] 前缀,然后描述哪些工作你需要继续做的。这样评审人员就不会挑剔其中的小细节或者指出哪些你已经知道的改进点。
46+
- 新功能应该具备测试和文档。
47+
- 不要包含不相关的修改。
48+
- 在提交 pull request 之前检查代码和运行测试,通过执行`$ npm test`命令来完成。
49+
- 在一个[主题分支](https://github.com/dchelimsky/rspec/wiki/Topic-Branches) 中提交 pull request 而不是 master 分支。
50+
- 为 pull request 和 commit 使用一个清晰和描述性强的标题。
51+
- 写一个让人信服的描述来说明为什么我们要接受你的 pull request。说服我们是你的工作,需要回答“为什么”并提供用例。
52+
- 你可能被要求修改你的 pull request,但绝对没有必要去新开一个 pull request,[只需要更新原来那个就可以了。](https://github.com/RichardLitt/docs/blob/master/amending-a-commit-guide.md)

zh_CN/docs/recipes/browser-testing.md

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
___
2+
**备注**
3+
4+
这是 [browser-testing.md](https://github.com/sindresorhus/ava/blob/master/docs/recipes/browser-testing.md) 的简体中文翻译。这个[链接](https://github.com/sindresorhus/ava/compare/8e2f3dca177a4283ad882596d3c1425cabb998ef...master#diff-9d3d394077fa7f97cbbb0fefc098ac60) 用来查看本翻译与 AVA 的 master 分支是否有差别(如果你没有看到`browser-testing.md`发生变化,那就意味着这份翻译文档是最新的)。
5+
___
6+
7+
# 设置 AVA 做浏览器测试
8+
9+
翻译:[Français](https://github.com/sindresorhus/ava-docs/blob/master/fr_FR/docs/recipes/browser-testing.md), [Русский](https://github.com/sindresorhus/ava-docs/blob/master/ru_RU/docs/recipes/browser-testing.md), [简体中文](https://github.com/sindresorhus/ava-docs/blob/master/zh_CN/docs/recipes/browser-testing.md)
10+
11+
12+
13+
AVA[](https://github.com/sindresorhus/ava/issues/24) 不支持在浏览器中运行测试。一些库要求浏览器指定全局变量(`window`, `document`, `navigator`等等)。
14+
React 就是其中的一个例子,最低要求如果你想用 ReactDOM.render 和用 ReactTestUTils 模拟事件。
15+
16+
这个秘方让需要模拟浏览器环境的库可以工作。
17+
18+
## 安装 jsdom
19+
20+
安装 [jsdom](https://github.com/tmpvar/jsdom)
21+
22+
> 一个 WHATWG DOM 和 HTML 标准的 JavaScript 实现,给 node.js 使用的。
23+
24+
```
25+
$ npm install --save-dev jsdom
26+
```
27+
28+
## 设置 jsdom
29+
30+
创建一个 helper 文件并放在`test/helpers`文件夹中,这样确保 AVA 不会把它当成测试来处理。
31+
32+
`test/helpers/setup-browser-env.js`:
33+
34+
```js
35+
global.document = require('jsdom').jsdom('<body></body>');
36+
global.window = document.defaultView;
37+
global.navigator = window.navigator;
38+
```
39+
40+
## 配置测试使用 jsdom
41+
42+
配置 AVA,将`require`设置为 helper 文件,这样每个测试运行前都会先加载它。
43+
44+
`package.json`:
45+
46+
```json
47+
{
48+
"ava": {
49+
"require": [
50+
"./test/helpers/setup-browser-env.js"
51+
]
52+
}
53+
}
54+
```
55+
56+
## 享受!
57+
58+
编写你的测试并享受一个模拟的 window 对象吧。
59+
60+
`test/my.react.test.js`:
61+
62+
```js
63+
import test from 'ava';
64+
import React from 'react';
65+
import {render} from 'react-dom';
66+
import {Simulate} from 'react-addons-test-utils';
67+
import sinon from 'sinon';
68+
import CustomInput from './components/custom-input.jsx';
69+
70+
test('Input calls onBlur', t => {
71+
const onUserBlur = sinon.spy();
72+
const input = render(
73+
React.createElement(CustomInput, {onUserBlur),
74+
div
75+
)
76+
77+
Simulate.blur(input);
78+
79+
t.true(onUserBlur.calledOnce);
80+
});
81+
```

zh_CN/docs/recipes/code-coverage.md

+188
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
___
2+
**备注**
3+
4+
这是 [code-coverage.md](https://github.com/sindresorhus/ava/blob/master/docs/recipes/code-coverage.md) 的简体中文翻译。这个[链接](https://github.com/sindresorhus/ava/compare/1868204c1901f45b4f66a520ef6486fdd71fe1d2...master#diff-b3aa0c81a407f54f636a1cf5a619a4a6) 用来查看本翻译与 AVA 的 master 分支是否有差别(如果你没有看到`code-coverage.md`发生变化,那就意味着这份翻译文档是最新的)。
5+
___
6+
7+
# 代码覆盖率
8+
9+
翻译:[Español](https://github.com/sindresorhus/ava-docs/blob/master/es_ES/docs/recipes/code-coverage.md), [Français](https://github.com/sindresorhus/ava-docs/blob/master/fr_FR/docs/recipes/code-coverage.md), [日本語](https://github.com/sindresorhus/ava-docs/blob/master/ja_JP/docs/recipes/code-coverage.md), [Português](https://github.com/sindresorhus/ava-docs/blob/master/pt_BR/docs/recipes/code-coverage.md), [Русский](https://github.com/sindresorhus/ava-docs/blob/master/ru_RU/docs/recipes/code-coverage.md), [简体中文](https://github.com/sindresorhus/ava-docs/blob/master/zh_CN/docs/recipes/code-coverage.md)
10+
11+
12+
因为 AVA[重新处理了测试文件][process-isolation],所以你不能使用 [`istanbul`] 来做代码覆盖率,但你可以使用 [`nyc`] 来完成,它是支持子进程的 [`istanbul`]
13+
14+
## 设置
15+
16+
首先安装 NYC:
17+
18+
```
19+
$ npm install nyc --save-dev
20+
```
21+
22+
然后添加`.nyc_output``coverage`文件夹到你的`.gitignore`文件。
23+
24+
`.gitignore`:
25+
26+
```
27+
node_modules
28+
coverage
29+
.nyc_output
30+
```
31+
32+
## ES5 覆盖率
33+
34+
使用 NYC 很简单就可以提供使用 ES5 来写的生产代码的覆盖率,只需要在测试脚本前面加上`nyc`
35+
36+
```json
37+
{
38+
"scripts": {
39+
"test": "nyc ava"
40+
}
41+
}
42+
```
43+
44+
就是这样!
45+
46+
如果你想要创建 HTML 覆盖率报告,或者上传覆盖率数据到 Coveralls,你应该跳过下面的那些章节。
47+
48+
## ES2015 覆盖率
49+
50+
使用 Babel 来转换生产代码有点复杂,这里我们把它分成几个步骤。
51+
52+
### 配置 Babel
53+
54+
首先,我们需要一个 Babel 配置,下面是一个例子,你可以修改它以适应你的需要。
55+
56+
`package.json`:
57+
```json
58+
{
59+
"babel": {
60+
"presets": ["es2015"],
61+
"plugins": ["transform-runtime"],
62+
"ignore": "test.js",
63+
"env": {
64+
"development": {
65+
"sourceMaps": "inline"
66+
}
67+
}
68+
}
69+
}
70+
```
71+
72+
例子中有 2 点比较重要:
73+
74+
1. 我们忽略测试文件,因为 AVA 已经为你做了转换处理了。
75+
76+
2. 我们为开发环境指定`inline`(内联)原生映射,为了正确的生成覆盖率这个很重要,使用 Babel 配置中的`env`属性可以让我们在生产构建中取消原生映射。
77+
78+
79+
### 创建一个构建脚本
80+
81+
因为你可能不希望在生产代码中`inline`原生映射,你需要在构建脚本中指定一个可代替的环境变量:
82+
83+
`package.json`
84+
85+
```json
86+
{
87+
"scripts": {
88+
"build": "BABEL_ENV=production babel --out-dir=dist index.js"
89+
}
90+
}
91+
```
92+
93+
> 警告:`BABEL_ENV=production`在 Windows 中不可用,你必须使用`set`关键字(`set BABEL_ENV=production`),如果是跨平台构建,请检查 [`cross-env`]
94+
95+
注意,构建脚本中 AVA 的部分真的很少,它只是一个如何使用 Babel 的`env`配置来操作你的配置以兼容 AVA 的示例。
96+
97+
### 使用 Babel require 钩子
98+
99+
要使用 Babel require 钩子,请在`package.json`中的 AVA 配置里将`require`属性设置为`babel-core/register`
100+
101+
```json
102+
{
103+
"ava": {
104+
"require": ["babel-core/register"]
105+
}
106+
}
107+
```
108+
109+
*注意*:你也可以在命令行里设置 require 钩子:`ava --require=babel-core/register`。尽管如此,配置在`package.json`里面可以让你不用重复地写标志。
110+
111+
### 把所有东西放在一起
112+
113+
结合上面的步骤,你的`package.json`最后可能是这个样子:
114+
115+
```json
116+
{
117+
"scripts": {
118+
"test": "nyc ava",
119+
"build": "BABEL_ENV=production babel --out-dir=dist index.js"
120+
},
121+
"babel": {
122+
"presets": ["es2015"],
123+
"plugins": ["transform-runtime"],
124+
"ignore": "test.js",
125+
"env": {
126+
"development": {
127+
"sourceMaps": "inline"
128+
}
129+
}
130+
},
131+
"ava": {
132+
"require": ["babel-core/register"]
133+
}
134+
}
135+
```
136+
137+
138+
## HTML 报告
139+
140+
NYC 在`.nyc_ouput`文件夹中为每个进程创建一个`json`的覆盖率文件。
141+
142+
把这些文件组合成一个可阅读的 HTML 报告,可以通过下面的方法来做:
143+
144+
```
145+
$ ./node_modules/.bin/nyc report --reporter=html
146+
```
147+
148+
或者,使用 npm 脚本来代替打印命令行:
149+
150+
```json
151+
{
152+
"scripts": {
153+
"report": "nyc report --reporter=html"
154+
}
155+
}
156+
```
157+
158+
这样会在`coverage`文件夹中输出一个 HTML 文件。
159+
160+
161+
## 托管覆盖率报告
162+
163+
### Travis CI & Coveralls
164+
165+
首先,你需要登录 [coveralls.io] 并激活你的项目库。
166+
167+
一旦完成,添加 [`coveralls`] 到开发依赖库:
168+
169+
```
170+
$ npm install coveralls --save-dev
171+
```
172+
173+
然后添加下面的代码到你的`.travis.yml`
174+
175+
```yaml
176+
after_success:
177+
- './node_modules/.bin/nyc report --reporter=text-lcov | ./node_modules/.bin/coveralls'
178+
```
179+
180+
你的覆盖率报告将在你的 Travis 完成后很快地出现在 coveralls 上面。
181+
182+
[`babel`]: https://github.com/babel/babel
183+
[coveralls.io]: https://coveralls.io
184+
[`coveralls`]: https://github.com/nickmerwin/node-coveralls
185+
[`cross-env`]: https://github.com/kentcdodds/cross-env
186+
[process-isolation]: https://github.com/sindresorhus/ava-docs/blob/master/zh_CN/readme.md#隔离进程
187+
[`istanbul`]: https://github.com/gotwarlost/istanbul
188+
[`nyc`]: https://github.com/bcoe/nyc

0 commit comments

Comments
 (0)