去年,NPM 都经历了怎样的增长?

本文概述了npm在2023年的关键数据,包括包数量爆炸性增长、活跃包超250万、每月下载量巨大、语言支持扩展、恶意软件和安全事件、以及前端框架和包的流行情况。npm的安全措施和维护者最多的包也得到了提及。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,npm 官方发布了 2023年总结 ,其中包括了很多有意思的数据。

图片

作为前端最受欢迎也是最有争议的包管理器,我们一起来看看这份总结吧:

npm 的爆炸式增长

在十年前,npm的员工还可以在一次会议上读出所有 npm 包的名称。但到 2023 年底,来自将近 90w 维护者的 npm 账户已经上传了近 400w 个包。

根据npm官方统计数据显示,到 2023 年底,活跃的包数量超过了 250w,每月的下载量更是超过了惊人的 1840亿 次。

250w 与 400w 之间的差距表明 —— 许多包被从账户中移除了。在 npm 上发布包是一件非常简单的事,没有发布审核,所以 npm 账号相比其他语言的生态更容易存储恶意包。然而,根据我们在 Python 生态中已经发现的一些恶意行为来看,这个观点可能并不完全准确。

在 2023 年,npm发布了对 Python 和 Go 的支持,并计划在 2024 年支持更多的语言,比如 Java。未来,我们将发布生态系统之间的对比,这应该能带来些有趣的洞察。

在 2023 年,npm上发布了 10,518,566 个软件包版本。以下是按月份分解的数据,其中,三月和四月更新的包最多,可能是因为在 2023 年3~4月间,npm 遭受了大规模的以John Wick(极速追杀男主)为主题的垃圾邮件和网络钓鱼攻击。

图片

每月发布的npm软件包版本数

npm 包的趋势

虽然 npm 最初是 Node.js 的软件包管理器,但在过去几年中,它的迅猛崛起也使其成为了 JavaScript 前端项目事实上的包管理器,大部分取代了 Bower ,并在 JS 项目中实现了更统一和更流畅的开发工作流程。

下图显示了按依赖数排名前 50 的软件包:

图片

依赖数排名前50的npm软件包

TypeScript 显得非常亮眼,TypeScript 最初发布于2011年10月,在2017-2018年左右获得了显著的增长,并逐渐成为编写大型应用程序的标准,同时也越来越多地用于库代码。

在前端框架和库方面,React 位居第二并不令人意外,鉴于其庞大的组件生态系统和在该领域中的主导地位。此外,列表中唯一的其他前端库是 Vue.jsAngular 以 @angular/core 在第62位)。

我们还可以从每周下载次数的角度来观察:

图片

 Sindre Sorhus 一个人负责了列表中一半包的维护,可以说是非常活跃 & 有能力的开发者了。

安全挑战和应对措施

npm团队使用 Socket AI,基于人工智能的威胁检测系统,扫描了数百万个 npm 包中的文件。在 2023 一年就扫出五千多个恶意包。

在加密货币领域23年还发生了多起备受关注的供应链攻击。例如,hardhat-gas-report 这个包在数月内都是无害的,但后来被更新为包含恶意代码以窃取以太坊私钥。

在12月14日,一名前 Ledger 员工遭受网络钓鱼攻击后,黑客获取了其 npmjs 账户的访问权限,并发布了一个恶意版本的 Ledger Connect Kit,试图将资金重定向到黑客的钱包。

除了恶意软件的增加,npm 还面临多次垃圾邮件攻击。在去年2月,攻击者在短短两天内发布了超过 15,000 个垃圾软件包到 npm 中。

彩蛋

名字最长的包

哪个软件包的名称最长?首先应该指出,在 npm 上,软件包名称的最大长度为 214 个字符。那是否有这样的包呢?是的,以下软件包都使用了所有可用的字符数:

  • ifyouwanttogetthesumoftwonumberswherethosetwonumbersarechosenbyfindingthelargestoftwooutofthreenumbersandsquaringthemwhichismultiplyingthembyitselfthenyoushouldinputthreenumbersintothisfunctionanditwilldothatforyou

  • koishi-plugin-uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

  • this-package-exports-the-number-214-and-its-name-is-also-two-hundred-and-fourteen-characters-long-which-is-the-longest-name-currently-allowed-by-the-npm-registry-to-see-how-a-name-that-long-would-look-if-you-did-ii

  • this-package-exports-the-number-214-and-its-name-is-also-two-hundred-and-fourteen-characters-long-which-is-the-longest-name-currently-allowed-by-the-npm-registry-to-see-how-a-name-that-long-would-look-if-you-did-it

  • aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

体积最大的包

 @chainsafe/eth2-spec-tests 体积高达 5.96 GB。紧随其后的是 1.1.0 版本的 kuzzle,大小约为 5.88 GBmodez 位居第三,为 4.39 GB。下面是排名前 10 的列表:

  • @chainsafe/eth2-spec-tests@0.12.3(5.96GB)

  • kuzzle@1.1.0 (5.89GB)

  • modez@1.0.4(4.39GB)

  • @mpetrunic/eth2-spec-tests@1.0.1(4.13 GB)

  • docloop@0.9.3(3.38GB)

  • @twigeducation/ts-fe-components@5.9.1 (3.22GB)

  • similar-persian-words@1.0.2 (3.05GB)

  • @sofit/view-locale@2.0.1(2.14GB)

  • quint-cli@0.13.0(2.08GB)

  • steamboat@0.1.1(1.77GB)

维护者最多的包

优胜者是 @seek/asia-translations,拥有 554 个维护者。紧随其后的是两个来自 Condé Nast 的软件包,但 BBC 在前十名中也有几个出色的软件包。以下是按维护者数量排名的前十个包版本的完整列表。

  • @seek/asia-translations@1.0.0 (554 maintainers)

  • @condenast/seawasp-bull-queue@0.1.4 (530 maintainers)

  • @condenast/cna-st-codec@0.1.4 (530 maintainers)

  • @bbc/storyplayer@0.4.16 (494 maintainers)

  • @bbc/digital-paper-edit-client@0.8.2-alpha.2 (494 maintainers)

  • @bbc/stt-align-node@1.0.0 (494 maintainers)

  • @bbc/newslabs-helper-analytics@3.1.3 (493 maintainers)

  • @bbc/local-election-2020-assets@0.0.1 (491 maintainers)

  • @bbc/digital-paper-edit-storybook@1.7.0 (491 maintainers)

  • @bbc/object-based-media-schema@0.3.3 (490 maintainers)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值