Nub 是一个用 Rust 写成的开源命令行工具,把 Node.js 生态里「跑文件、跑脚本、装依赖、临时跑包、管版本」这些常用操作合并成同一条命令,底层仍使用官方 Node.js,不发明新运行时(运行时是程序运行所依赖的执行环境,这里指 Node.js 本身)。项目地址 github.com/nubjs/nub,MIT 协议,最新版本 v0.9.0(2026 年 9 月 7 日发布),目前 4.3k star。

它解决什么问题?用 Node.js 写代码的人通常要同时维护好几样工具:跑 TypeScript 文件要用 tsx,跑项目脚本要用 npm run,临时执行某个包要用 npx,装依赖用 npm 或 pnpm,切换 Node 版本还得装 nvm。这些工具大多用 JavaScript 写成,每次敲命令都要先等工具自身启动、再开始干活,一次几百毫秒,攒起来很影响效率。Nub 用 Rust 重写了这些场景,一条命令覆盖全部,省掉中间的等待。

适合谁用?Node.js 和前端开发者都适用,尤其是这几类人:想直接运行 TypeScript 文件、不想为「跑个脚本」配一堆构建步骤的;嫌 npm、pnpm 装包慢的;觉得 nvm、npx、nodemon 装了一堆、各记各的用法的。使用 Nub 不需要会 Rust——它只是一个装好的命令,用法和原来的工具基本一致。

为什么快:省掉 JavaScript 启动这一步

每次执行 npm 系命令,Node.js 都要先启动、加载工具自身的 JavaScript 代码,然后才处理你的请求。Nub 是编译好的 Rust 二进制程序(Rust 是一种以性能见长的系统编程语言,二进制指直接编译成机器码、无需解释器就能运行的可执行文件),自己不需要再启动一个 JavaScript 环境,命令响应的主体开销被大幅压缩。项目 README 给出了一组实测数据(macOS 环境):

  • 脚本运行:nub run 平均 14.7 毫秒,npm run 329.9 毫秒,pnpm run 442.7 毫秒——约快 22 倍和 30 倍;
  • 临时跑包:nubx esbuild --version 平均 11 毫秒,npx 226 毫秒,约快 19 倍;
  • 安装依赖:nub install 平均 171 毫秒,pnpm 3193 毫秒,npm 5316 毫秒,约快 18.7 倍和 31 倍;
  • 启动 TypeScript 文件:比 tsx 快 2.9 倍。

一个命令,覆盖日常开发的大部分操作

Nub 的用法不难记,都是 nub 开头:

  • nub index.ts:直接运行 TypeScript / JSX 文件,支持装饰器、省略扩展名的导入、自动加载 .env 文件、内置 YAML / TOML / JSONC(带注释的 JSON 配置格式)解析,还能自动启用 Node 的实验性 API(比如内置数据库 node:sqlite)。替代 tsx / node。
  • nub run dev:运行 package.json 里配置的脚本,支持 pnpm workspace 的 -r、--filter 等整套筛选语法。替代 npm run / pnpm run。
  • nubx eslint:临时执行某个包,本地装了优先用本地,没有就从包仓库下载,跑完即弃。替代 npx / pnpm dlx。
  • nub install:安装项目依赖,替代 npm install / pnpm install,速度见上面的数据。
  • nub node install 26:安装指定版本的 Node.js。它还会自动读项目里的 .nvmrc 或 package.json engines 字段判断项目需要的版本,缺了自动装。替代 nvm / fnm。
  • nub watch app.ts:监听文件变化自动重启,替代 nodemon。
  • nub pm shim:注册 npm / yarn / pnpm 的全局命令替身,替代 corepack。

装依赖时的三道安全检查

恶意依赖是 npm 生态的老问题。nub install 默认开了三道防线:拦截依赖包安装后的自动执行脚本(postinstall,装完包自动运行的代码,常被恶意包利用);对照 osv.dev 漏洞库排查已知恶意版本;拒绝降低软件来源可信度的降级操作。另外默认要求依赖包发布满 24 小时才允许安装,避开「刚发布就被发现有问题」的时间窗口。

与 Bun、Deno 的路线差异:不换运行时

Bun、Deno 的做法是自带一个新的运行时,项目要跑在它们各自的引擎上。Nub 不走这条路:它站在官方 Node.js 之上,只替换「工具层」,项目代码仍然跑在标准 Node.js 里。项目作者是 colinhacks(Zod 校验库的作者)。这样设计的好处是兼容风险低——不引入新运行时,原有项目配置、依赖、脚本都不需要改动。

换用成本:命令兼容,配置不动

Nub 声称与现有工具 flag-for-flag 兼容:npm run 的参数、pnpm 的过滤器语法、npx 的用法,在 Nub 里都有对应写法。它还带兼容模式:检测到项目原本用 pnpm 或 npm,就读取对应工具的配置文件(pnpm-lock.yaml、package-lock.json 等),按原工具的规则工作。它不修改项目文件,想换回原来的工具随时可以。

安装也不麻烦:macOS / Linux 一条 curl 命令,Windows 用 PowerShell 一行,也支持 Homebrew、Nix、mise 和 npm 全局安装;GitHub Actions 有官方 setup-nub,可直接替换 setup-node。

结论:如果你天天和 Node 打交道、觉得命令行每次都要等、工具装了一堆记不过来,Nub 值得一试——它把常见的 Node 工具链合成一个命令,换来的是几倍到几十倍的启动提速,且不用改项目、不用学新语法。要注意它目前还是 0.x 版本,大规模用在生产环境前,建议先在个人项目或小项目里跑一段时间。