nodejs/node

GitHub: nodejs/node

Node.js 是一个开源且跨平台的 JavaScript 运行时环境,允许开发者在浏览器之外构建可扩展的服务器端和网络应用。

Stars: 116700 | Forks: 35334

# Node.js Node.js 是一个开源、跨平台的 JavaScript 运行时环境。 有关使用 Node.js 的信息,请参阅 [Node.js 网站][]。 Node.js 项目采用 [开放治理模式](./GOVERNANCE.md)。[OpenJS Foundation][] 为该项目提供支持。 贡献者应以协作方式行事,以推动项目向前发展。我们鼓励进行建设性的意见交换和妥协。[TSC](./GOVERNANCE.md#technical-steering-committee) 保留限制或阻止那些反复以劝阻、耗竭或以其他方式负面影响其他参与者的方式行事的贡献者的权利。 **本项目有一份[行为准则][Code of Conduct]。** ## 目录 * [支持](#support) * [发布类型](#release-types) * [下载](#download) * [Current 和 LTS 版本](#current-and-lts-releases) * [Nightly 版本](#nightly-releases) * [API 文档](#api-documentation) * [验证二进制文件](#verifying-binaries) * [构建 Node.js](#building-nodejs) * [安全](#security) * [为 Node.js 做贡献](#contributing-to-nodejs) * [现任项目团队成员](#current-project-team-members) * [TSC (技术指导委员会)](#tsc-technical-steering-committee) * [协作者](#collaborators) * [分类员](#triagers) * [发布密钥](#release-keys) * [许可证](#license) ## 支持 需要帮助?请查看[获取支持的说明](.github/SUPPORT.md)。 ## 发布类型 * **Current**:处于积极开发阶段。Current 版本的代码位于其主要版本号的分支中(例如,[v22.x](https://github.com/nodejs/node/tree/v22.x))。Node.js 每 6 个月发布一个新的主要版本,允许进行破坏性更改。这发生在每年的 4 月和 10 月。每年 10 月发布的版本支持周期为 8 个月。每年 4 月发布的版本会在随后的 10 月转为 LTS(见下文)。 * **LTS**:获得长期支持的版本,侧重于稳定性和安全性。每个偶数主版本将成为一个 LTS 版本。LTS 版本获得 12 个月的 _Active LTS_ 支持和额外的 18 个月 _Maintenance_(维护)。LTS 版本线具有按字母顺序排列的代码名称,从 v4 Argon 开始。除某些特殊情况外,不会有破坏性更改或功能增加。 * **Nightly**:Current 分支中有更改时每 24 小时构建一次的代码。请谨慎使用。 Current 和 LTS 版本遵循[语义化版本控制](https://semver.org)。发布团队的成员会[签署](#release-keys) 每个 Current 和 LTS 版本。 欲了解更多信息,请参阅 [Release README](https://github.com/nodejs/Release#readme)。 ### 下载 二进制文件、安装程序和源代码压缩包可在 https://nodejs.org/en/download/ 获取。 #### Current 和 LTS 版本 https://nodejs.org/download/release/ [latest](https://nodejs.org/download/release/latest/) 目录是最新 Current 版本的别名。latest-_codename_ 目录是某个 LTS 版本线最新版本的别名。例如,[latest-hydrogen](https://nodejs.org/download/release/latest-hydrogen/) 目录包含最新的 Hydrogen (Node.js 18) 版本。 #### Nightly 版本 https://nodejs.org/download/nightly/ 每个目录和文件名都包含版本号(例如 `v22.0.0`),后跟 UTC 日期(例如 `20240424` 代表 2024 年 4 月 24 日),以及该发布 HEAD 的简短提交 SHA(例如 `ddd0a9e494`)。 例如,一个完整的目录名可能看起来像 `v22.0.0-nightly20240424ddd0a9e494`。 #### API 文档 最新的 Current 版本文档位于 https://nodejs.org/api/。 特定版本的文档可在每个发布目录的 _docs_ 子目录中找到。特定版本的文档也位于 https://nodejs.org/download/docs/。 ### 验证二进制文件 下载目录包含一个 `SHASUMS256.txt.asc` 文件,其中包含文件的 SHA 校验和以及发布者的 PGP 签名。 您可以从 nodejs/release-keys 获取受信任的密钥环,例如使用 `curl`: ``` curl -fsLo "/path/to/nodejs-keyring.kbx" "https://github.com/nodejs/release-keys/raw/HEAD/gpg/pubring.kbx" ``` 或者,您可以将发布者的密钥导入到您的默认密钥环中,有关如何执行此操作的命令,请参阅 [发布密钥](#release-keys)。 然后,您可以验证本地下载的文件(如果您使用的是默认密钥环,请传递 `--keyring="${GNUPGHOME:-~/.gnupg}/pubring.kbx"`): ``` curl -fsO "https://nodejs.org/dist/${VERSION}/SHASUMS256.txt.asc" \ && gpgv --keyring="/path/to/nodejs-keyring.kbx" --output SHASUMS256.txt < SHASUMS256.txt.asc \ && shasum --check SHASUMS256.txt --ignore-missing ``` ## 构建 Node.js 有关如何从源代码构建 Node.js 的说明和支持的平台列表,请参阅 [BUILDING.md](BUILDING.md)。 ## 安全 有关报告 Node.js 中安全漏洞的信息,请参阅 [SECURITY.md](./SECURITY.md)。 ## 为 Node.js 做贡献 * [为项目做贡献][Contributing to Node.js] * [工作组][Working Groups] * [战略举措][Strategic initiatives] * [技术价值观和优先级排序][Technical values and prioritization] ## 现任项目团队成员 有关 Node.js 项目治理的信息,请参阅 [GOVERNANCE.md](./GOVERNANCE.md)。 * [aduh95](https://github.com/aduh95) - **Antoine du Hamel** <> (he/him) * [anonrig](https://github.com/anonrig) - **Yagiz Nizipli** <> (he/him) * [benjamingr](https://github.com/benjamingr) - **Benjamin Gruenbaum** <> * [BridgeAR](https://github.com/BridgeAR) - **Ruben Bridgewater** <> (he/him) * [gireeshpunathil](https://github.com/gireeshpunathil) - **Gireesh Punathil** <> (he/him) * [jasnell](https://github.com/jasnell) - **James M Snell** <> (he/him) * [joyeecheung](https://github.com/joyeecheung) - **Joyee Cheung** <> (she/her) * [legendecas](https://github.com/legendecas) - **Chengzhong Wu** <> (he/him) * [marco-ippolito](https://github.com/marco-ippolito) - **Marco Ippolito** <> (he/him) * [mcollina](https://github.com/mcollina) - **Matteo Collina** <> (he/him) * [panva](https://github.com/panva) - **Filip Skokan** <> (he/him) * [RafaelGSS](https://github.com/RafaelGSS) - **Rafael Gonzaga** <> (he/him) * [RaisinTen](https://github.com/RaisinTen) - **Darshan Sen** <> (he/him) * [richardlau](https://github.com/richardlau) - **Richard Lau** <> * [ronag](https://github.com/ronag) - **Robert Nagy** <> * [ruyadorno](https://github.com/ruyadorno) - **Ruy Adorno** <> (he/him) * [ShogunPanda](https://github.com/ShogunPanda) - **Paolo Insogna** <> (he/him) * [targos](https://github.com/targos) - **Michaël Zasso** <> (he/him) * [tniessen](https://github.com/tniessen) - **Tobias Nießen** <> (he/him) #### TSC 普通成员 * [BethGriggs](https://github.com/BethGriggs) - **Beth Griggs** <> (she/her) * [bnoordhuis](https://github.com/bnoordhuis) - **Ben Noordhuis** <> * [cjihrig](https://github.com/cjihrig) - **Colin Ihrig** <> (he/him) * [codebytere](https://github.com/codebytere) - **Shelley Vohr** <> (she/her) * [GeoffreyBooth](https://github.com/GeoffreyBooth) - **Geoffrey Booth** <> (he/him) * [MoLow](https://github.com/MoLow) - **Moshe Atlow** <> (he/him) * [Trott](https://github.com/Trott) - **Rich Trott** <> (he/him)
TSC 荣誉成员 #### TSC 荣誉成员 * [addaleax](https://github.com/addaleax) - **Anna Henningsen** <> (she/her) * [apapirovski](https://github.com/apapirovski) - **Anatoli Papirovski** <> (he/him) * [ChALkeR](https://github.com/ChALkeR) - **Сковорода Никита Андреевич** <> (he/him) * [chrisdickinson](https://github.com/chrisdickinson) - **Chris Dickinson** <> * [danbev](https://github.com/danbev) - **Daniel Bevenius** <> (he/him) * [danielleadams](https://github.com/danielleadams) - **Danielle Adams** <> (she/her) * [evanlucas](https://github.com/evanlucas) - **Evan Lucas** <> (he/him) * [fhinkel](https://github.com/fhinkel) - **Franziska Hinkelmann** <> (she/her) * [Fishrock123](https://github.com/Fishrock123) - **Jeremiah Senkpiel** <> (he/they) * [gabrielschulhof](https://github.com/gabrielschulhof) - **Gabriel Schulhof** <> * [gibfahn](https://github.com/gibfahn) - **Gibson Fahnestock** <> (he/him) * [indutny](https://github.com/indutny) - **Fedor Indutny** <> * [isaacs](https://github.com/isaacs) - **Isaac Z. Schlueter** <> * [joshgav](https://github.com/joshgav) - **Josh Gavant** <> * [mhdawson](https://github.com/mhdawson) - **Michael Dawson** <> (he/him) * [mmarchini](https://github.com/mmarchini) - **Mary Marchini** <> (she/her) * [mscdex](https://github.com/mscdex) - **Brian White** <> * [MylesBorins](https://github.com/MylesBorins) - **Myles Borins** <> (he/him) * [nebrius](https://github.com/nebrius) - **Bryan Hughes** <> * [ofrobots](https://github.com/ofrobots) - **Ali Ijaz Sheikh** <> (he/him) * [orangemocha](https://github.com/orangemocha) - **Alexis Campailla** <> * [piscisaureus](https://github.com/piscisaureus) - **Bert Belder** <> * [rvagg](https://github.com/rvagg) - **Rod Vagg** <> * [sam-github](https://github.com/sam-github) - **Sam Roberts** <> * [shigeki](https://github.com/shigeki) - **Shigeki Ohtsu** <> (he/him) * [thourtheye](https://github.com/thefourtheye) - **Sakthipriyan Vairamani** <> (he/him) * [TimothyGu](https://github.com/TimothyGu) - **Tiancheng "Timothy" Gu** <> (he/him) * [trevnorris](https://github.com/trevnorris) - **Trevor Norris** <>
协作者在维护 Node.js 项目时遵循 [协作者指南](./doc/contributing/collaborator-guide.md)。 ### 分类员 * [1ilsang](https://github.com/1ilsang) - **Sangchul Lee** <<1ilsang.dev@gmail.com>> (he/him) * [atlowChemi](https://github.com/atlowChemi) - **Chemi Atlow** <> (he/him) * [Ayase-252](https://github.com/Ayase-252) - **Qingyu Deng** <> * [bjohansebas](https://github.com/bjohansebas) - **Sebastian Beltran** <> * [bmuenzenmeyer](https://github.com/bmuenzenmeyer) - **Brian Muenzenmeyer** <> (he/him) * [CanadaHonk](https://github.com/CanadaHonk) - **Oliver Medhurst** <> (they/them) * [daeyeon](https://github.com/daeyeon) - **Daeyeon Jeong** <> (he/him) * [efekrskl](https://github.com/efekrskl) - **Efe Karasakal** <> (he/him) * [gireeshpunathil](https://github.com/gireeshpunathil) - **Gireesh Punathil** <> (he/him) * [gurgunday](https://github.com/gurgunday) - **Gürgün Dayıoğlu** <> * [haramj](https://github.com/haramj) - **Haram Jeong** <> * [HBSPS](https://github.com/HBSPS) - **Wiyeong Seo** <> * [iam-frankqiu](https://github.com/iam-frankqiu) - **Frank Qiu** <> (he/him) * [KevinEady](https://github.com/KevinEady) - **Kevin Eady** <> (he/him) * [marsonya](https://github.com/marsonya) - **Akhil Marsonya** <> (he/him) * [meixg](https://github.com/meixg) - **Xuguang Mei** <> (he/him) * [milesguicent](https://github.com/milesguicent) - **Miles Guicent** <> (he/him) * [preveen-stack](https://github.com/preveen-stack) - **Preveen Padmanabhan** <> (he/him) * [RaisinTen](https://github.com/RaisinTen) - **Darshan Sen** <> (he/him) * [VoltrexKeyva](https://github.com/VoltrexKeyva) - **Mohammed Keyvanzadeh** <> (he/him) 分类员在响应新 issue 时遵循 [分类指南](./doc/contributing/issues.md#triaging-a-bug-report)。 ### 发布密钥 Node.js 发布者的主要 GPG 密钥(某些发布者使用子密钥签名): * **Antoine du Hamel** <> `5BE8A3F6C8A5C01D106C0AD820B1A390B168D356` * **Juan José Arboleda** <> `DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7` * **Marco Ippolito** <> `CC68F5A3106FF448322E48ED27F5E38D5B0A215F` * **Michaël Zasso** <> `8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` * **Rafael Gonzaga** <> `890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4` * **Richard Lau** <> `C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C` * **Ruy Adorno** <> `108F52B48DB57BB0CC439B2997B01419BD92F80A` * **Ulises Gascón** <> `A363A499291CBBC940DD62E41F10027AF002F8B0` 您可以使用项目维护的密钥环,地址为 https://github.com/nodejs/release-keys/raw/refs/heads/main/gpg-only-active-keys/pubring.kbx。 或者,您可以从公共密钥服务器导入它们。请注意,项目无法保证服务器的可用性以及该服务器上的密钥。 ``` gpg --keyserver hkps://keys.openpgp.org --recv-keys 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 # Antoine du Hamel gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 # Juan José Arboleda gpg --keyserver hkps://keys.openpgp.org --recv-keys CC68F5A3106FF448322E48ED27F5E38D5B0A215F # Marco Ippolito gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 # Michaël Zasso gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 # Rafael Gonzaga gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C # Richard Lau gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A # Ruy Adorno gpg --keyserver hkps://keys.openpgp.org --recv-keys A363A499291CBBC940DD62E41F10027AF002F8B0 # Ulises Gascón ``` 有关如何使用这些密钥验证下载的文件,请参阅 [验证二进制文件](#verifying-binaries)。
用于签署某些先前版本的其他密钥 * **Antoine du Hamel** <> `C0D6248439F1D5604AAFFB4021D900FFDB233756` * **Beth Griggs** <> `4ED778F539E3634C779C87C6D7062848A1AB005C` * **Bryan English** <> `141F07595B7B3FFE74309A937405533BE57C7D57` * **Chris Dickinson** <> `9554F04D7259F04124DE6B476D5A82AC7E37093B` * **Colin Ihrig** <> `94AE36675C464D64BAFA68DD7434390BDBE9B9C5` * **Danielle Adams** <> `1C050899334244A8AF75E53792EF661D867B9DFA` `74F12602B6F1C4E913FAA37AD3A89613643B6201` * **Evan Lucas** <> `B9AE9905FFD7803F25714661B63B535A4C206CA9` * **Gibson Fahnestock** <> `77984A986EBC2AA786BC0F66B01FBB92821C587A` * **Isaac Z. Schlueter** <> `93C7E9E91B49E432C2F75674B0A78B0A6C481CF6` * **Italo A. Casas** <> `56730D5401028683275BD23C23EFEFE93C4CFFFE` * **James M Snell** <> `71DCFD284A79C3B38668286BC97EC7A07EDE3FC1` * **Jeremiah Senkpiel** <> `FD3A5288F042B6850C66B31F09FE44734EB7990E` * **Juan José Arboleda** <> `61FC681DFB92A079F1685E77973F295594EC4689` * **Julien Gilli** <> `114F43EE0176B71C7BC219DD50A3051F888C628D` * **Myles Borins** <> `C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` * **Rod Vagg** <> `DD8F2338BAE7501E3DD5AC78C273792F7D83545D` * **Ruben Bridgewater** <> `A48C2BEE680E841632CD4E44F07496B3EB3C1762` * **Shelley Vohr** <> `B9E2F5981AA6E0CD28160D9FF13993A75599653C` * **Timothy J Fontaine** <> `7937DFD2AB06298B2293C3187D33FF9D0246406D` 项目维护一个能够验证 Node.js 所有过去版本的密钥环,地址为 https://github.com/nodejs/release-keys/raw/refs/heads/main/gpg/pubring.kbx。
### 安全发布管理员 在可能的情况下,参与安全发布管理员轮值的承诺由公司做出,以确保作为安全管理员的个人能够获得其雇主的支持和认可,从而能够优先处理安全发布。安全发布管理员按照 [安全发布流程](> (he/him) * [HeroDevs](https://www.herodevs.com/) * [juanarbol](https://github.com/juanarbol) - OpenJS Slack handle: `juanarbol` **Juan José Arboleda** <> (he/him) * [marco-ippolito](https://github.com/marco-ippolito) - OpenJS Slack handle: `Marco Ippolito` **Marco Ippolito** <> (he/him) * [NodeSource](https://nodesource.com/) * [RafaelGSS](https://github.com/RafaelGSS) - OpenJS Slack handle: `RafaelGSS` **Rafael Gonzaga** <> (he/him) * [Platformatic](https://platformatic.dev/) * [mcollina](https://github.com/mcollina) - OpenJS Slack handle: `mcollina` **Matteo Collina** <> (he/him) * [Red Hat](https://redhat.com) / [IBM](https://ibm.com) * [BethGriggs](https://github.com/BethGriggs) - **Beth Griggs** <> (she/her) * [sxa](https://github.com/sxa) - **Stewart X Addison** <> (he/him) ## 许可证 Node.js 根据 [MIT 许可证](https://opensource.org/licenses/MIT) 获得许可。 本项目还依赖可能使用不同开源许可证的外部库。有关包含的许可证的完整列表,请参阅 [LICENSE](https://github.com/nodejs/node/blob/main/LICENSE) 文件。 如果您正在贡献文档或源代码更改,请确保您的添加内容符合项目的许可证准则。
标签:API文档, CMS安全, DNS解析, GNU通用公共许可证, JavaScript, LTS, Node.js, OpenJS基金会, SOC Prime, V8引擎, 事件驱动, 二进制验证, 代码规范, 后端开发, 安全, 开发工具, 开源项目, 技术指导委员会, 数据可视化, 构建Node.js, 版本管理, 社区治理, 编程语言, 贡献指南, 超时处理, 运行时, 长期支持, 非阻塞I/O