Heidi Labs
GitHub TrendingGitHub Trending 项目约 24 分钟9,659 字

Node.js:开源跨平台 JavaScript 运行时

本文目录

Node.js#

Node.js 是一个开源、跨平台的 JavaScript 运行时环境。

有关使用 Node.js 的信息,请参见 Node.js 网站。

Node.js 项目采用开放治理模式。OpenJS Foundation 为该项目提供支持。

贡献者应当以协作的方式行事,推动项目前进。我们鼓励建设性地交流不同意见并达成妥协。TSC 保留限制或阻止那些反复以令人沮丧、疲惫或其他负面方式影响其他参与者的贡献者的权利。

本项目有行为准则(Code of Conduct)。

目录#

  • 支持
  • 发布类型
  • 下载
  • 当前版本与 LTS 版本
  • Nightly 版本
  • API 文档
  • 验证二进制文件
  • 构建 Node.js
  • 安全
  • 为 Node.js 贡献
  • 当前项目团队成员
  • TSC(技术指导委员会)
  • Collaborators
  • Triagers
  • 发布密钥
  • 许可证

支持#

需要帮助?请查看获取支持的说明。

发布类型#

Node.js 遵循语义化版本(semantic versioning)。

Alpha:处于活跃开发中,允许 semver-major 变更。 每年 10 月,一条新的发布线(例如 Node.js 27)从 main 分支分出, 并在 6 个月内接收 Alpha 发布(例如 27.0.0-alpha.0.0.0), 然后在每年 4 月晋升为 Current(见下文)。Alpha 发布会被签名、 打标签,并通过 CITGM 测试,但其 API 和 ABI 可能在发布之间变化。它们面向库作者 和 CI 流水线,不用于生产环境。

Current:处于活跃开发中,不允许 semver-major 变更。Node.js 每年 4 月发布一个新的主版本。发布版保持 Current 状态 6 个月,然后在每年 10 月转换为 LTS(见下文)。其 ABI 可能在 发布之间变化。它们面向库作者和 CI 流水线,不 用于生产环境。

LTS:长期支持(Long Term Support)下的发布,重点在于稳定性 和安全性。只有已在 Alpha 或 Current 发布中停留两周的变更 才能向后移植到典型的 LTS 发布。每个主版本都会成为 LTS 发布,并获得 30 个月的 LTS 支持,从首次 Current 发布到 生命周期结束(End-of-Life)总共 36 个月。LTS 发布线具有按字母顺序排列的 代号,从 Node.js 4 Argon 开始。

Nightly:在存在变更时,每 24 小时从 main 分支构建的代码。与 Alpha 发布不同,nightly 构建是自动化的且未经测试。 请谨慎使用。

截至并包括 Node.js 26 的发布线遵循之前的计划,即每 6 个月 发布一个新的主版本,并且只有偶数主版本 成为 LTS。详情请参见 Node.js 发布时间表公告。

更多信息请参见 Release README。

下载#

二进制文件、安装程序和源码压缩包可在 https://nodejs.org/en/download/ 获取。

当前版本与 LTS 版本#

https://nodejs.org/download/release/

latest 目录是 最新 Current 发布的别名。latest-codename 目录是 某个 LTS 系列最新发布的别名。例如, 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"

或者,你可以将发布者密钥导入默认密钥环,具体命令参见 发布密钥。

然后,你可以验证本地下载的文件 (如果你使用默认密钥环,请传入 --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。

安全#

有关报告 Node.js 安全漏洞的信息,请参见 SECURITY.md。

为 Node.js 贡献#

  • 为项目贡献
  • 工作组
  • 战略倡议
  • 技术价值观与优先级

当前项目团队成员#

有关 Node.js 项目治理的信息,请参见 GOVERNANCE.md。

TSC(技术指导委员会)#

TSC 投票成员

  • aduh95——Antoine du Hamel <duhamelantoine1995@gmail.com>(他/他)
  • anonrig——Yagiz Nizipli <yagiz@nizipli.com>(他/他)
  • benjamingr——Benjamin Gruenbaum <benjamingr@gmail.com>
  • BridgeAR——Ruben Bridgewater <ruben@bridgewater.de>(他/他)
  • gireeshpunathil——Gireesh Punathil <gpunathi@in.ibm.com>(他/他)
  • jasnell——James M Snell <jasnell@gmail.com>(他/他)
  • joyeecheung——Joyee Cheung <joyeec9h3@gmail.com>(她/她)
  • legendecas——Chengzhong Wu <legendecas@gmail.com>(他/他)
  • marco-ippolito——Marco Ippolito <marcoippolito54@gmail.com>(他/他)
  • mcollina——Matteo Collina <matteo.collina@gmail.com>(他/他)
  • panva——Filip Skokan <panva.ip@gmail.com>(他/他)
  • RafaelGSS——Rafael Gonzaga <rafael.nunu@hotmail.com>(他/他)
  • RaisinTen——Darshan Sen <raisinten@gmail.com>(他/他)
  • richardlau——Richard Lau <richard.lau@ibm.com>
  • ronag——Robert Nagy <ronagy@icloud.com>
  • ruyadorno——Ruy Adorno <ruy@vlt.sh>(他/他)
  • ShogunPanda——Paolo Insogna <paolo@cowtech.it>(他/他)
  • tniessen——Tobias Nießen <tniessen@tnie.de>(他/他)

TSC 正式成员

  • BethGriggs——Beth Griggs <bethanyngriggs@gmail.com>(她/她)
  • bnoordhuis——Ben Noordhuis <info@bnoordhuis.nl>
  • cjihrig——Colin Ihrig <cjihrig@gmail.com>(他/他)
  • codebytere——Shelley Vohr <shelley.vohr@gmail.com>(她/她)
  • GeoffreyBooth——Geoffrey Booth <webadmin@geoffreybooth.com>(他/他)
  • MoLow——Moshe Atlow <moshe@atlow.co.il>(他/他)
  • Trott——Rich Trott <rtrott@gmail.com>(他/他)

TSC 荣誉成员

  • addaleax——Anna Henningsen <anna@addaleax.net>(她/她)
  • apapirovski——Anatoli Papirovski <apapirovski@mac.com>(他/他)
  • ChALkeR——Сковорода Никита Андреевич <chalkerx@gmail.com>(他/他)
  • chrisdickinson——Chris Dickinson <christopher.s.dickinson@gmail.com>
  • danbev——Daniel Bevenius <daniel.bevenius@gmail.com>(他/他)
  • danielleadams——Danielle Adams <adamzdanielle@gmail.com>(她/她)
  • evanlucas——Evan Lucas <evanlucas@me.com>(他/他)
  • fhinkel——Franziska Hinkelmann <franziska.hinkelmann@gmail.com>(她/她)
  • Fishrock123——Jeremiah Senkpiel <fishrock123@rocketmail.com>(他/他们)
  • gabrielschulhof——Gabriel Schulhof <gabrielschulhof@gmail.com>
  • gibfahn——Gibson Fahnestock <gibfahn@gmail.com>(他/他)
  • indutny——Fedor Indutny <fedor@indutny.com>
  • isaacs——Isaac Z. Schlueter <i@izs.me>
  • joshgav——Josh Gavant <josh.gavant@outlook.com>
  • mhdawson——Michael Dawson <midawson@redhat.com>(他/他)
  • mmarchini——Mary Marchini <oss@mmarchini.me>(她/她)
  • mscdex——Brian White <mscdex@mscdex.net>
  • MylesBorins——Myles Borins <myles.borins@gmail.com>(他/他)
  • nebrius——Bryan Hughes <bryan@nebri.us>
  • ofrobots——Ali Ijaz Sheikh <ofrobots@google.com>(他/他)
  • orangemocha——Alexis Campailla <orangemocha@nodejs.org>
  • piscisaureus——Bert Belder <bertbelder@gmail.com>
  • rvagg——Rod Vagg <r@va.gg>
  • sam-github——Sam Roberts <vieuxtech@gmail.com>
  • shigeki——Shigeki Ohtsu <ohtsu@ohtsu.org>(他/他)
  • targos——Michaël Zasso <targos@protonmail.com>(他/他)
  • thefourtheye——Sakthipriyan Vairamani <thechargingvolcano@gmail.com>(他/他)
  • TimothyGu——Tiancheng "Timothy" Gu <timothygu99@gmail.com>(他/他)
  • trevnorris——Trevor Norris <trev.norris@gmail.com>

Collaborators#

完整的 Collaborators 名单(GitHub 账号、姓名、邮箱和代词)见原文仓库 README;以下为维护说明。

Collaborators 在维护 Node.js 项目时遵循 Collaborator 指南。

Triagers#

  • 1ilsang——Sangchul Lee <1ilsang.dev@gmail.com>(他/他)
  • bjohansebas——Sebastian Beltran <bjohansebas@gmail.com>
  • bmuenzenmeyer——Brian Muenzenmeyer <brian.muenzenmeyer@gmail.com>(他/他)
  • efekrskl——Efe Karasakal <hi@efe.dev>(他/他)
  • gireeshpunathil——Gireesh Punathil <gpunathi@in.ibm.com>(他/他)
  • haramj——Haram Jeong <haramj.dev@gmail.com>
  • HBSPS——Wiyeong Seo <hbsps.dev@gmail.com>
  • HoonDongKang——Donghoon Kang <d159123@gmail.com>
  • iam-frankqiu——Frank Qiu <iam.frankqiu@gmail.com>(他/他)
  • inoway46——Yuya Inoue <inoueyuya416@gmail.com>(他/他)
  • milesguicent——Miles Guicent <guicent@pm.me>(他/他)
  • preveen-stack——Preveen Padmanabhan <wide4head@gmail.com>(他/他)

Triagers 在回应新 issue 时遵循 Triage 指南。

发布密钥#

Node.js 发布者的主要 GPG 密钥(部分发布者使用子密钥签名):

Antoine du Hamel <duhamelantoine1995@gmail.com>

5BE8A3F6C8A5C01D106C0AD820B1A390B168D356

Juan José Arboleda <soyjuanarbol@gmail.com>

DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7

Marco Ippolito <marcoippolito54@gmail.com>

CC68F5A3106FF448322E48ED27F5E38D5B0A215F

Rafael Gonzaga <rafael.nunu@hotmail.com>

890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4

Richard Lau <richard.lau@ibm.com>

C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C

Ruy Adorno <ruyadorno@hotmail.com>

108F52B48DB57BB0CC439B2997B01419BD92F80A

Stewart X Addison <sxa@ibm.com>

655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD

Ulises Gascón <ulisesgascongonzalez@gmail.com>

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 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 655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD # Stewart X Addison
gpg --keyserver hkps://keys.openpgp.org --recv-keys A363A499291CBBC940DD62E41F10027AF002F8B0 # Ulises Gascón

关于如何使用这些密钥验证下载文件,请参见验证二进制文件。

用于签署部分先前发布版本的其他密钥#

Antoine du Hamel <duhamelantoine1995@gmail.com>

C0D6248439F1D5604AAFFB4021D900FFDB233756

Beth Griggs <bethanyngriggs@gmail.com>

4ED778F539E3634C779C87C6D7062848A1AB005C

Bryan English <bryan@bryanenglish.com>

141F07595B7B3FFE74309A937405533BE57C7D57

Chris Dickinson <christopher.s.dickinson@gmail.com>

9554F04D7259F04124DE6B476D5A82AC7E37093B

Colin Ihrig <cjihrig@gmail.com>

94AE36675C464D64BAFA68DD7434390BDBE9B9C5

Danielle Adams <adamzdanielle@gmail.com>

1C050899334244A8AF75E53792EF661D867B9DFA
74F12602B6F1C4E913FAA37AD3A89613643B6201

Evan Lucas <evanlucas@me.com>

B9AE9905FFD7803F25714661B63B535A4C206CA9

Gibson Fahnestock <gibfahn@gmail.com>

77984A986EBC2AA786BC0F66B01FBB92821C587A

Isaac Z. Schlueter <i@izs.me>

93C7E9E91B49E432C2F75674B0A78B0A6C481CF6

Italo A. Casas <me@italoacasas.com>

56730D5401028683275BD23C23EFEFE93C4CFFFE

James M Snell <jasnell@keybase.io>

71DCFD284A79C3B38668286BC97EC7A07EDE3FC1

Jeremiah Senkpiel <fishrock@keybase.io>

FD3A5288F042B6850C66B31F09FE44734EB7990E

Juan José Arboleda <soyjuanarbol@gmail.com>

61FC681DFB92A079F1685E77973F295594EC4689

Julien Gilli <jgilli@fastmail.fm>

114F43EE0176B71C7BC219DD50A3051F888C628D

Michaël Zasso <targos@protonmail.com>

8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600

Myles Borins <myles.borins@gmail.com>

C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8

Rod Vagg <rod@vagg.org>

DD8F2338BAE7501E3DD5AC78C273792F7D83545D

Ruben Bridgewater <ruben@bridgewater.de>

A48C2BEE680E841632CD4E44F07496B3EB3C1762

Shelley Vohr <shelley.vohr@gmail.com>

B9E2F5981AA6E0CD28160D9FF13993A75599653C

Timothy J Fontaine <tjfontaine@gmail.com>

7937DFD2AB06298B2293C3187D33FF9D0246406D

项目维护的密钥环可以验证 Node.js 的所有历史发布: https://github.com/nodejs/release-keys/raw/refs/heads/main/gpg/pubring.kbx。

安全发布管理员#

在可能的情况下,公司会承诺担任安全发布管理员轮值中的岗位, 以确保担任安全管理员的人员获得雇主的支持和认可, 从而能够优先处理安全发布。安全发布管理员按照 安全发布流程中的规定轮值管理安全发布。

Datadog

  • bengl——Bryan English <bryan@bryanenglish.com>(他/他)

HeroDevs

  • juanarbol——OpenJS Slack 账号:juanarbol;Juan José Arboleda <soyjuanarbol@gmail.com>(他/他)
  • marco-ippolito——OpenJS Slack 账号:Marco Ippolito;Marco Ippolito <marcoippolito54@gmail.com>(他/他)

NodeSource

  • RafaelGSS——OpenJS Slack 账号:RafaelGSS;Rafael Gonzaga <rafael.nunu@hotmail.com>(他/他)

Platformatic

  • mcollina——OpenJS Slack 账号:mcollina;Matteo Collina <matteo.collina@gmail.com>(他/他)

Red Hat / IBM

  • BethGriggs——Beth Griggs <bethanyngriggs@gmail.com>(她/她)
  • sxa——Stewart X Addison <sxa@redhat.com>(他/他)

许可证#

Node.js 采用 MIT 许可证。

本项目还依赖可能使用不同开源许可证的外部库。完整许可证列表请参见 LICENSE 文件。

如果你贡献文档或源码变更,请确保你的补充内容符合项目的许可证指南。