Nub 最近在 GitHub 上发布,最容易让人误会的一点是:它看起来很像 Bun,但它明确不替换 Node.js。

它用 Rust 写命令行和工具层,底下仍然调用 stock Node。增强方式也走 Node 现有机制,比如 --import--requiremodule.registerHooks() 和 N-API。

所以这事有意思的地方不在“又来了一个 JS 运行时”。更准确地说,Nub 想把 Node 项目里一堆分散工具压成一个更快的入口。

Nub 的位置:增强 Node,不抢 Node 的位置

Node.js 项目里的日常工具链,很多人都熟。

跑 JS 用 node。跑 TS 用 tsxts-node。跑脚本用 npm runpnpm run。临时执行包用 npxpnpm dlx。watch 用 nodemon。Node 版本和包管理器入口,又交给 nvm、Corepack 这类工具。

Nub 想做的,是把这些入口收拢。

场景Nub 对应能力常见替代对象我的判断
文件运行nub <file>node、tsx、ts-node、dotenv-cli降低 TS/JSX 即时运行成本
脚本执行nub runnpm run、pnpm run主打 CLI 启动速度
包执行nubxnpx、pnpm dlx本地优先,缺包再拉取
安装依赖nub installnpm、pnpm偏 pnpm 习惯,强调 compat-mode
watch / 版本管理watch、nub nodenub pmnodemon、nvm、Corepack把外围工程入口统一起来

它支持 TypeScript、JSX、dotenv、tsconfig paths、扩展名省略解析,也支持 YAML、TOML、JSONC、JSON5、TXT 等常见数据格式 loader。

README 还提到,它会对部分现代 API 做 polyfill 或解除实验 flag,比如 Temporal、URLPattern、WebSocket、EventSource、node:sqlite 等。

这套设计的关键,是“不换地基”。

对已经押在 Node.js 上的团队来说,换运行时是一件重活。测试、部署、监控、native addon、边缘依赖,都可能被牵出来。Nub 的路线更保守:承认 Node 还是地基,只在工具链外层提速。

这也是它和 Bun、Deno 最大的区别。Bun 和 Deno 都带有运行时路线选择。Nub 更像是给 Node 装一套更顺手的工具把手。

性能数字很猛,但先按官方 benchmark 读

Nub README 给的性能数字很漂亮。

nub run 调度脚本约 14.7ms,称比 pnpm run 快约 24 倍。nubx esbuild --version 约 11ms,称比 npx 快约 19 倍。nub install 在 create-t3-app、222 个依赖的 warm frozen install 场景中约 1122ms,称比 pnpm install 快约 2.5 倍。

但这些数字来自项目 README 的官方 benchmark。它们可以说明设计目标和潜在收益,不能直接当成第三方独立评测结论。

真实项目里,决定能不能用的往往不是单次快不快,而是这些变量:

  • 冷启动和 warm cache 差异有多大;
  • monorepo、workspace filter、私有 registry 能不能稳;
  • native addon、postinstall 例外、CI 缓存是否顺;
  • Windows 表现、lockfile 迁移、失败恢复是否可靠;
  • 维护活跃度、许可证、发布节奏是否适合团队引入。

这些信息需要团队自己看仓库和实际跑一遍。材料目前只说明 Nub 在 GitHub 发布及 README 主张,不能推出它已经主流化,也不能暗示被 Node 官方采纳。

包管理部分也要谨慎看。

Nub 强调 pnpm 风格兼容,会检测已有 lockfile 和 config,进入 compat-mode。它还默认阻止 postinstall、查询 osv.dev 恶意包版本、拒绝 provenance downgrade,并设置 24 小时 minimumReleaseAge。

这类安全默认值,对企业项目有吸引力。代价是,一些依赖安装里的旧习惯和边缘行为,可能会被更早暴露出来。

所以它目前不适合被写成 npm、pnpm、yarn、bun 的完全无差异替代品。README 讲的是特定 flag、config 和 compat-mode 范围。尤其 Yarn 更偏 read-only 取向。

对开发者和工程效率团队,动作不一样

对 Node.js / TypeScript 开发者,Nub 最现实的用法不是马上替换包管理器。

更稳的动作,是先把它放到低风险入口里试:本地跑 TS/JSX 文件、临时执行包、跑项目脚本、做 watch。它如果真能减少 tsxdotenv-clinodemonnpx 这类工具的切换成本,日常体感会很直接。

对前端基础设施和工程效率维护者,关注点要更硬一点。

不要只看 benchmark。应该拿一个真实仓库测安装、锁文件、workspace、私有源、CI 缓存、postinstall 例外和回滚路径。采购或团队级引入可以延后,先做旁路评估更合理。

读者可以先做什么暂时别做什么
Node.js / TypeScript 开发者用 Nub 跑单文件、脚本、临时包执行直接删除原有 npm/pnpm 流程
前端基础设施维护者在 CI 辅助任务或小仓库做兼容性测试一步替换主仓库包管理器

我更在意的,是 Nub 能不能把“快”变成“稳”。

工具链提速很容易让人兴奋,但企业项目买账的顺序通常相反:先不坏,再更快。尤其在 Node 生态里,兼容性不是锦上添花,而是入场券。

回到开头,Nub 最值得看的一点,正是它没有把自己包装成新地基。它不夺 Node 的位置,只补 Node 工具链的短板。

这条路不炫,但实用。接下来真正的考题也很清楚:真实仓库里的兼容性,能不能配得上 README 里的速度。