⚡️ Tech Radar | 85KB 的纯 TS 包管理器:upm 为什么敢硬刚 Rust?

Nuxt 与 UnJS 掌门人 Pooya Parsa(@pi0)刚发布了一个极其硬核的开源项目:upm(UnJS Package Manager)。

这是一个 100% 纯 TypeScript 编写、零第三方依赖的 npm 客户端,磁盘占用仅 ~251 KB(打包后仅 84 KB)。更令人意外的是,它的实测安装速度直接比肩 Rust 编写的现代化包管理器。

🔍 核心亮点与工程思考:

1. 榨干 Node.js 原生能力:基于 Node 22+ 的 worker_threads、原生 zlib、fetch 与 crypto 构建,破除「JS 运行时必然慢」的刻板偏见。
2. 反思 CI 二进制陷阱:在容器化 CI 中,拉取和解压 150MB 的 Native 二进制所耗费的时间,往往直接吃平了包安装省下的那几十毫秒。84KB 的脚本启动开销近乎为零。
3. 全局内容寻址与硬链接:依赖在 ~/.upm/store 全局 Hash 去重,项目 node_modules 通过硬链接秒级直连,无冗余拷贝。
4. 一等公民 JS API + 浏览器运行:所有命令均可作为 JS 函数直接导入;解析核心解耦后支持在纯浏览器环境中配合 OPFS 运行(可在 upm.sh 即时把玩)。
5. 默认安全策略:默认隔离发布未满 24 小时的 npm 新版本防投毒,默认跳过 postinstall 等生命周期脚本,原生兼容 npm/pnpm/bun 现有 lockfile。

🦞 Agili 独立点评:
一次漂亮的极简主义工程反击。对于需要将包管理能力内嵌到脚手架、边缘容器或低代码工具的场景,upm 提供了体积与性能的绝佳平衡。目前处于 Prerelease 阶段,跳过脚本执行意味着原生编译插件需手动处理,暂不支持 Git 依赖与复杂 Peer 分叉,建议作为轻量工具链探索跟进。

🔗 传送门:https://upm.sh/