这篇文章的目的是帮助您第一次提交向Node.js核心文件贡献代码!有很多方法可以向Node.js贡献代码。你可以参与工作组(网站或在线诊断工作组等)的工作,也可以在Nodeschools开设课程,提供Node.js教学,让有同样困惑的人向你学习。当然,你也可以直接开始为Node.js的核心做贡献,比如回答用户的问题,甚至是向项目提交代码。接下来,我们将完成提交代码的必要步骤,以获得乐趣和成就感。#1Fork项目请访问https://github.com/nodejs/node上的官方Node.js存储库并将项目fork到您的Github帐户。ContributingtotheNode.jsCore-Fork#2设置Git存储库现在你已经有了自己的存储库,你可以直接进入终端并使用以下命令克隆项目。$gitclonegit@github.com:YOUR_USER_NAME/node.git然后使用cdnode命令进入该目录。请注意,当您对Node.js进行更改时,其他人也会进行更改!所以一定要不时地接受新的提交,否则你的存储库将丢失代码。为了保持您的叉子的独特性,您必须设置另一个源来拉取其他人提交的代码。为此,请在终端中运行以下命令,这将建立一个名为上游的远程连接。$gitremoteaddupstreamhttps://github.com/nodejs/node.git创建upstream后,可以运行以下命令一次从官方Node.js仓库获取所有***提交:$gitpullupstream--rebase#itwillproduceanoutputsimilartothisoneremote:Countingobjects:9150,done.remote:Compressingobjects:100%(11/11),done.remote:Total9150(delta5908),reused5917(delta5908),pack-reused3231接收对象:100%(9150/9150),6.71MiB|2.06MiB/s,done.Resolvingdeltas:100%(7343/7343),completedwith3204localobjects.#3构建Node.js编译文件你已经克隆了项目,是时候在本地构建和编译Node.js文件了!首先确保你已经安装了GCC和Clang(如果你是Windows系统,可以安装VisualStudio)环境,然后正确安装Python2.6或2.7和GNUMake。运行以下命令开始构建和编译Node.js:$./configure$make-j4运行带有-j4参数的make将使编译同时运行4个编译作业,这可以显着减少构建时间。构建完成后,您可以运行以下命令来使用本地构建的Node.js:$./node--versionv9.0.0-pre更多关于平台支持和项目构建的信息可以在这里找到:https://github.com/nodejs/node/blob/master/BUILDING.md#4编写测试用例并运行测试测试文件应以短行串联命名。测试文件名的***部分应以test开头。第二部分是你要测试的模块信息。第三部分通常是要测试的方法或事件的名称。所以,如果你想写一个HTTP请求的测试用例,你可以命名为:test-http-posting-form-data.js。这是一个从Node.js项目中获取的示例,用于查看测试文件的样子:*一个关于你正在测试什么的小描述*///这个测??试确保http-parser可以处理UTF-8字符//在httpheader.constassert=require('assert');consthttp=require('http');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();}));});使用以下命令来运行测试:$maketest测试内部模块的技巧要测试内部模块,你必须在测试用例中依赖于要测试的模块。问题是,默认情况下,Node.js不允许您这样做。解决方案是使用--expose-internals参数运行Node.js。有关编写测试用例的更多信息,请访问:https://github.com/nodejs/node/blob/master/doc/guides/writing-tests.md#5在撰写本文时找到一些有意义的事情,Node.js项目中有563个未解决的问题。所以一开始,这些问题就是你要找的东西。作为新手,您可以选择一个问题来解决。幸运的是,问题跟踪器中有几个标签可以帮助您找到您的第一个贡献。第一个叫goodfirstcontribution,第二个叫helpwanted。首先,我建议从好的第一个贡献中选择一个,一旦你对这个项目的工作感到更加熟悉,你就可以开始从“需要帮助”选项卡中进行选择。#6提交解决方案在开发新功能或扩展测试范围后,只需将更改推送到您的存储库,然后同步到Github。按下,顶部会出现一个绿色的合并按钮。此时只需创建一个新的拉取请求并等待其他贡献者批准/请求更改您的拉取请求。此时,您是Node.js贡献者。恭喜,请继续提交!