向Node.js核心捐赠代码的六个步骤
本文的目的是帮助您完成向Node.js核心文件贡献代码的第一个提交!
向Node.js贡献代码的方式有很多种。可以参与某个工作组(网站或者联机诊断工作组等)的工作,可以在Nodeschools开设课程提供Node.js的教学, 让那些有着同样困惑的人可以向你学习。
当然你也可以开始直接向Node.js的核心贡献,比如回答使用者的问题,甚至向项目提交代码。
构建Node.js核心的6个必要步骤
接下来,我们介绍提交代码以获取乐趣和成就感的必要步骤。
# 1 Fork 项目
请访问位于https://github.com/nodejs/node的Node.js官方仓库,并将该项目fork到您的Github帐户。
#2 设置Git仓库
拥有了自己的仓库,就可以直接进入终端使用如下命令克隆项目。
`$ git clone [[email protected]](https://blog.risingstack.com/cdn-cgi/l/email-protection):YOUR_USER_NAME/node.git`
然后用 cd node
命令进入目录。
注意,你修改Node.js的同时,其他人也会同步修改! 因此一定要不定期接受新提交,否则你的仓库会遗漏代码。
为了保持你的fork是最新的, 你必须设置另外一个源去拉取其他人提交的代码。 为此,在终端中运行以下命令,该命令将设置一个名为upstream
的远程连接。
`$ git remote add upstream https://github.com/nodejs/node.git`
建立upstream
之后,你可以运行下面的命令,一次获得所有来自官方Node.js仓库的最新提交:
$ git pull upstream --rebase
# it will produce an output similar to this one
remote: Counting objects: 9150, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 9150 (delta 5908), reused 5917 (delta 5908), pack-reused 3231
Receiving objects: 100% (9150/9150), 6.71 MiB | 2.06 MiB/s, done.
Resolving deltas: 100% (7343/7343), completed with 3204 local objects.
#3 构建Node.js编译文件
你已经克隆了项目,是时候本地构建编译Node.js文件了!
首先要确认你已经安装了GCC和Clang(如果你是Windows系统可以装Visual Studio)环境 , 然后正确安装Python 2.6 或 2.7 和 GNU Make。
运行下面的命令,开始构建编译Node.js:
$ ./configure
$ make -j4
运行 make
带 -j4
参数将使编译同时运行4个编译作业,这样可以显著减少构建时间。
构建完成后,可以运行如下命令使用你本地构建的Node.js了:
$ ./node --version
v9.0.0-pre
更多关于平台支持和项目构建的信息可以在这里找到:https://github.com/nodejs/node/blob/master/BUILDING.md
#4 编写测试用例,运行测试
- 测试文件名的第一部分应该是以
test
开始。 - 第二部分是你要测试的模块信息。
- 第三部分通常是你要测试的方法或者事件的名字。
因此,如果您要为HTTP请求编写一个测试用例,可以把它命名为:test-http-posting-form-data.js
。
这是从Node.js项目中拿到的示例,看看测试文件长啥样:
/*
In the first line of the test file you should
enable strict mode, unless you test something
that needs it disabled
*/
'use strict';
/*
the common package gives you some commonly
used testing methods, like mustCall
*/
const common = require('../common');
/*
a small description on what you are testing
*/
// This test ensures that the http-parser can handle UTF-8 characters
// in the http header.
const assert = require('assert');
const http = require('http');
/*
the body of the actual test - tests should exit with code 0 on success
*/
const server = http.createServer(common.mustCall((req, res) => {
res.end('ok');
}));
server.listen(0, () => {
http.get({
port: server.address().port,
headers: { 'Test': 'Düsseldorf' }
}, common.mustCall((res) => {
assert.strictEqual(res.statusCode, 200);
server.close();
}));
});
使用下面的命令来运行测试:
$ make test
测试内部模块的小窍门
要测试内部模块,必须在测试用例中依赖要测试的模块。问题是,默认情况下Node.js不让你那样做。解决的方式就是运行Node.js时带上--expose-internals
参数。
编写测试用例的更多信息可以在这里找到:https://github.com/nodejs/node/blob/master/doc/guides/writing-tests.md
#5 找一些有意义的事做
截至本文撰写之时,Node.js项目中有 563个待解决的问题 。所以刚开始的时候,这些问题就是你要找的可以做的事情,作为新人你可以选择一个问题来解决。
幸运的是,问题跟踪器中有几个标签可以帮助找到自己中意的第一个贡献。
第一个叫做 good first contribution,第二个是 help wanted. 首先我建议从 good first contribution
开始挑选一个, 一旦你感觉对项目的工作比较熟悉之后,就可以开始从help wanted
标签中选择。
#6 提交解决方案
开发了新功能或扩展了测试覆盖度之后,只需将更改推送到你的代码仓库,然后同步到Github上。推送,绿色合并按钮将会出现在顶部。此时只需要新建一个 pull request,并等待其他贡献者批准/请求你的pull request中的更改。
此时,你就成为一个Node.js的贡献者了。 恭喜,请继续提交! ??
本文文字及图片出自 www.zcfy.cc
你也许感兴趣的:
- 如何靠卖开源软件为生?
- 国内 Top 开源项目深度解读
- 译 | 2018 年开源技术 10 大发展趋势
- Code is Law
- 微软 VS Code 或将取代 Visual Studio!
- 这些大名鼎鼎开源软件的名字是怎么来的?
- Kubernetes, OpenStack 等被闭源?我礼貌性地慌一下
- 开源软件并不是无国界的,也会被禁用,Docker 就是先例
- 开源作者遭受小白的9种伤害
- Apache is Open
你对本文的反应是: