首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >npm 包下载慢的原因找到了!

npm 包下载慢的原因找到了!

作者头像
萌萌哒草头将军
发布2025-11-17 19:52:34
发布2025-11-17 19:52:34
1150
举报
文章被收录于专栏:前端框架前端框架

前言

就在刚刚,npm 被发现存在重大缺陷!

正文

发布一些特殊的 npm 包时,一般会在 package.json 里用 libc 字段标记二进制包到底依赖 glibc 还是 musl!

代码语言:javascript
复制
"libc": ["glibc", "musl"]

通常请求下,一个操作系统只能支持其中一种,你可以使用下面的命令查看自己的操作系统支持的版本:

代码语言:javascript
复制
node -p "process.env.LIBC || (process.config.variables.node_shared_libc || 'glibc')"

但是现在被发现 npm 默认响应(Accept: application/json),根本不识别这个字段!

包括 npm 在内的包管理器存在两种极端操作:

  • 方案A(npm yarn 完全不识别):直接忽略 libc,一股脑儿把两个版本都下下来即使操作系统只需要其中一个
  • 方案B(pnpm 识别不到时):请求完整元数据(application/json) → 响应体可能从 2KB 暴涨到 200KB+,解析变慢了很多倍

esbuild 举例,glibc 版本 1.8 MB,musl 版本 1.9 MB,如果 npm registry 加上 libc 字段,能省 1.9 MB 流量。

目前社区给的提案是使用新的请求头 Accept,如下:

代码语言:javascript
复制
GET /esbuild
Accept: application/vnd.npm.install-v1+json

返回精简响应,只包含安装必需字段:

代码语言:javascript
复制
{
  "name": "esbuild",
"version": "x.x.x",
"dist-tags": { "latest": "x.x.x" },
"versions": {
    "0.33.0": {
      "dist": {
        "tarball": "https://...",
        "libc": ["glibc", "musl"]   // 关键字段!
      }
    }
  }
}

期待 npm 尽快响应!

最后

这可能是 2025 年最值得 star 的 npm 优化提案!

今天的分享就这些了,感谢阅读,有错欢迎指正!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萌萌哒草头将军 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档