Node.js Code + Learn
COSCon 2019
Agenda
Node.js Code + Learn 简介
目标
关于本次 Node.js Code + Learn
项目结构 (2019.11)
运行时结构 (2019.11)
Node.js Core (C++)
Node.js Core (JavaScript)
V8
libuv
zlib
c-ares
llhttp
用户代码
OpenSSL
……
nghttp2
acron
node-inspect
npm
N-API
deps
src
lib
C++ 源代码:src/
JavaScript 源代码:lib/
依赖:deps/
原则上,所有改动都要合并到对应上游项目自己的 repo,才能更新回来。
用脚本负责更新和保留某些特定的补丁(float patches),不用 git submodules
依赖:deps/
测试:test/
测试:test/
性能基准测试:benchmark/
工具:tools/
文档:doc/
Build (2019.11)
Build (2019.11)
Building
MacOS
https://github.com/nodejs/node/blob/master/BUILDING.md#macos-prerequisites
推荐使用 ninja
Ubuntu
https://github.com/nodejs/node/blob/master/BUILDING.md#unix-prerequisites
推荐使用 ninja
Building
使用 ninja
Building
更多信息参考 BUILDING.md
Testing
运行全部测试(包括文档测试和 linter)
Testing
测试覆盖率
Debugging
JavaScript
C++
Node.js Core 简介
Pull Requests
Pull Requests
CI
Travis: 为不是 Collaborators 的人触发,可以提前看到简单的测试结果
Jenkins: https://ci.nodejs.org/job/node-test-pull-request/
Code Review
Code Review
LGTM % nits: S/variable_name/variableName/
Fixed, thanks!
$ sed -i -e s/variable_name/variableName/g <file>
$ git add <file>
$ git commit --fixup HEAD <file>
$ git push
我看了觉得没问题(Look Good To Me)
就是有一点小毛病(我只是在挑个刺别往心里去)
麻烦把 variable_name 改成 variableName
合并 Land
Backport
Pull Request (GitHub)
Release
master
v12.x-staging
Backport (GitHub/Release team)
v12.x
v12.1.0
v12.0.1
v12.0.0
Release
需要贡献的地方
Code + Learn 注意事项