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 文件。
如果你贡献文档或源码变更,请确保你的补充内容符合项目的许可证指南。