命令列工具
nubjs/nub avatar
nubjs/nub

nub:把 Node.js 运行时、脚本分发与 watch 组合进一个 Rust 工具

此專案圍繞「The fast all-in-one Node.js toolkit. Script runner, nub run A drop-in for npm run and pnpm run.」建置,聚焦實際場景的開源實作,提供可重用的工具鏈與整合方式。

4,296 個 Star60 個 ForkRustMIT

秒懂

它是什麼?
一个面向 Node.js 项目的工具链,提供基于 Node 原生能力的运行命令、依赖图 watch、脚本 runner、过滤器和包管理辅助入口。
適合誰用?
适合愿意采用较新 Node.js 能力、希望减少脚本启动开销并把 watch 范围交给依赖图解析的 JavaScript 团队;不适合需要成熟 LTS 兼容矩阵、完全依赖 npm 行为细节或不能接受 canary 版本风险的项目。先用一个真实 monorepo 对比 nub、pnpm 和 npm 的脚本参数、退出码、环境变量、watch 重启范围及 CI 结果,再决定是否替换现有命令。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Rust(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

项目定位 · nubjs-nub-deep-analysis

nubjs/nub 的 README 将项目描述为"The fast all-in-one Node.js toolkit"。本文只整理仓库能直接核验的内容,不把星标、Fork 或宣传语当成质量证明。README 在"README"下的说明是:A fast all-in-one toolkit that augments Node.js instead of replacing it。这给出的首先是项目边界,而不是已经完成的生产验证。

适用场景 · nubjs-nub-deep-analysis

从 README 的"File runner , nub"和相关条目看,读者可以先判断它是否解决自己的具体问题: TypeScript-friendly resolution: extensionless imports, tsconfig.json#paths。如果你的目标与这段说明不一致,就不应仅凭项目热度采用它。这里保留原项目名、命令和组件名,方便回到一手来源核对。 README 还列出了另一条可核对的信息: Full TypeScript support, including enum, namespace。这类原文条目可以帮助读者设计试运行步骤,但不能代替自己的环境测试。

工作方式 · nubjs-nub-deep-analysis

README 把工作方式分散写在"README"等段落中。可确认的线索包括:One tool to run your files and scripts, install dependencies, and manage Node itself. No new runtime, no vendor-specific API surface, no lock-in.。这篇整理没有把未写出的架构、性能或安全边界补成结论;真正的运行链仍应结合仓库目录、配置文件和版本标签检查。

安装与第一次运行 · nubjs-nub-deep-analysis

第一次安装应从 README 给出的入口开始。当前可复核的命令是:

nub index.ts # TypeScript-first Node.js runtime nub run dev # 24× faster pnpm run nubx prisma generate # 19× faster npx nub install # 18× faster pnpm install nub watch src/server.ts # native watch mode nub pm shim # built-in Corepack-style shims nub node install 26 # Node version manager nub upgrade # self update

如果仓库没有提供命令,本文不会替它编造安装步骤,而是建议先打开 README 的"File runner , nub"部分,确认系统依赖、默认端口和首次初始化动作。

配置与日常使用 · nubjs-nub-deep-analysis

日常使用的细节取决于项目实际文档。README 的"README"段落提到:| Nub | Instead of | |---|---| | nub | node, tsx, ts-node, dotenv-cli | | nub run | npm run, pnpm run | | nubx | npx, pnpm dlx / exec | | nub install | npm, pnpm | | nub watch | nodemon, node --watch, tsx watch | | nub node | nvm, fnm, n,。对于配置文件、环境变量、权限和数据目录,当前稿只记录来源明确的部分;未写明的默认值必须在测试环境中验证,并保留可回滚的配置副本。 同一部分还提到:🆕 Modern syntax like using (downleveled in transpiler when needed)。

README 能确认的限制 · nubjs-nub-deep-analysis

README 能确认的限制比宣传页面更重要。当前来源没有证明nubjs/nub具备固定的兼容矩阵、服务等级、性能基准或长期支持承诺。README 只明确写到"For GitHub Actions, use nubjs/setup-nub in place of actions/setup-node. It's one-to-one compatible."。这类未知项应在选型记录里列为待验证事项,而不是被改写成肯定句。

安全、隐私与许可证 · nubjs-nub-deep-analysis

README 與倉庫標示 MIT,實際授權條款仍應對照 LICENSE:当前 SPDX 标识为 MIT。它说明代码分发和修改需要按许可证处理,但不等于项目已经完成你的安全审查。README 没有明确说明的凭证管理、网络暴露、日志保留和第三方依赖,仍应由部署者逐项检查。

维护与升级观察点 · nubjs-nub-deep-analysis

维护判断只能引用可追溯信号:默认分支为 main,快照记录 3768 个 star、54 个 fork、34 个开放 issue。README 的"File runner , nub"内容为:Run a file. Supports .js, .ts, .mjs, .cjs, .mts, .cts, .jsx, and .tsx. Flag-for-flag and var-for-var drop-in compatible with node (mostly via passthrough).。这些信息可帮助安排升级复核,但不能替代发布记录和变更测试。 维护时还应对照 README 的"File runner , nub"段落:It augments stock Node with some of Bun/Deno's best features:。

nubjs-nub-deep-analysis 的 README 也提供了具體的使用脈絡。應把命令中的參數、依賴版本、設定鍵與輸出格式逐項對照,尤其要留意文件明確標出的限制、平台差異和仍在變動的部分。若測試結果與 README 描述不同,應以實際版本的錯誤訊息和產出內容記錄差異,不能把推測寫成專案承諾。

升級 nubjs/nub 時,先用 nub node install 26 確認 Node 管理流程,再以 nub index.ts、nub watch src/server.ts 與 nub run build 分別檢查 TypeScript 解析、檔案監看和腳本派送。若專案使用 tsconfig.json#paths 或 .env*,應觀察依賴圖變更後是否仍能觸發重啟;這些檔名與命令正是 README 描述的邊界。\n\nnubjs/nub 的定位是補強既有 Node,而不是另造執行時;這使它適合已有 package.json、tsconfig.json 和 Node 腳本的團隊,但也表示相容性不能只看命令名稱。README 提到 --import 用於預轉譯,並以 Node 的擴充介面處理 TypeScript;因此測試時要分別放入 .ts、.mts、.cts 和 .tsx 檔案,觀察 extensionless import、enum、namespace 及 tsconfig.json#paths 是否維持原有解析結果。工作流若依賴 npm run、pnpm install 或 npx,應逐一以 nub run、nub install、nubx 執行,記錄退出碼、標準輸出和 lockfile 變化。README 對 GitHub Actions 指向 nubjs/setup-nub,CI 還需檢查該 action 與 actions/setup-node 的參數對應。\n\nnubjs/nub 的定位是補強既有 Node,而不是另造執行時;這使它適合已有 package.json、tsconfig.json 和 Node 腳本的團隊,但也表示相容性不能只看命令名稱。README 提到 --import 用於預轉譯,並以 Node 的擴充介面處理 TypeScript;因此測試時要分別放入 .ts、.mts、.cts 和 .tsx 檔案,觀察 extensionless import、enum、namespace 及 tsconfig.json#paths 是否維持原有解析結果。工作流若依賴 npm run、pnpm install 或 npx,應逐一以 nub run、nub install、nubx 執行,記錄退出碼、標準輸出和 lockfile 變化。README 對 GitHub Actions 指向 nubjs/setup-nub,CI 還需檢查該 action 與 actions/setup-node 的參數對應。執行 nub watch src/server.ts 時,也要改動被解析的依賴與 .env*,確認 Node 原生 watch 是否如文件所述重新啟動;這比單次執行更能揭示專案對既有開發流程的影響。\n\nnubjs/nub 的定位是補強既有 Node,而不是另造執行時;這使它適合已有 package.json、tsconfig.json 和 Node 腳本的團隊,但也表示相容性不能只看命令名稱。README 提到 --import 用於預轉譯,並以 Node 的擴充介面處理 TypeScript;因此測試時要分別放入 .ts、.mts、.cts 和 .tsx 檔案,觀察 extensionless import、enum、namespace 及 tsconfig.json#paths 是否維持原有解析結果。工作流若依賴 npm run、pnpm install 或 npx,應逐一以 nub run、nub install、nubx 執行,記錄退出碼、標準輸出和 lockfile 變化。README 對 GitHub Actions 指向 nubjs/setup-nub,CI 還需檢查該 action 與 actions/setup-node 的參數對應。執行 nub watch src/server.ts 時,也要改動被解析的依賴與 .env*,確認 Node 原生 watch 是否如文件所述重新啟動;這比單次執行更能揭示專案對既有開發流程的影響。對套件安裝則可用 nub install 建立或更新依賴,再比較 package-lock.json 或 pnpm-lock.yaml 的差異。README 宣稱 nubx prisma generate 比 npx 快,這是專案自報的比較,不能視為本環境的固定數字;測試時應讓相同 Prisma 專案各跑一次,記錄命令、版本和輸出。nub run -r --filter "@org/*" test 也涉及 workspace 篩選,需確認實際套件名稱是否符合範例。\n\nnubjs/nub 的定位是補強既有 Node,而不是另造執行時;這使它適合已有 package.json、tsconfig.json 和 Node 腳本的團隊,但也表示相容性不能只看命令名稱。README 提到 --import 用於預轉譯,並以 Node 的擴充介面處理 TypeScript;因此測試時要分別放入 .ts、.mts、.cts 和 .tsx 檔案,觀察 extensionless import、enum、namespace 及 tsconfig.json#paths 是否維持原有解析結果。工作流若依賴 npm run、pnpm install 或 npx,應逐一以 nub run、nub install、nubx 執行,記錄退出碼、標準輸出和 lockfile 變化。README 對 GitHub Actions 指向 nubjs/setup-nub,CI 還需檢查該 action 與 actions/setup-node 的參數對應。執行 nub watch src/server.ts 時,也要改動被解析的依賴與 .env*,確認 Node 原生 watch 是否如文件所述重新啟動;這比單次執行更能揭示專案對既有開發流程的影響。對套件安裝則可用 nub install 建立或更新依賴,再比較 package-lock.json 或 pnpm-lock.yaml 的差異。README 宣稱 nubx prisma generate 比 npx 快,這是專案自報的比較,不能視為本環境的固定數字;測試時應讓相同 Prisma 專案各跑一次,記錄命令、版本和輸出。nub run -r --filter "@org/*" test 也涉及 workspace 篩選,需確認實際套件名稱是否符合範例。 另外,nub pm shim 涉及 Corepack 風格的 shim,部署到 CI 前應確認 PATH 解析到預期的 nub 可執行檔。nub upgrade 會改變工具本身版本,升級前應保存目前的 nub --version、Node 版本與 lockfile,並以同一組腳本重跑結果。README 沒有提供完整平台相容矩陣,因此 Windows、macOS 與 Linux 的差異不能由命令範例直接推導。

編輯結論

适合愿意采用较新 Node.js 能力、希望减少脚本启动开销并把 watch 范围交给依赖图解析的 JavaScript 团队;不适合需要成熟 LTS 兼容矩阵、完全依赖 npm 行为细节或不能接受 canary 版本风险的项目。先用一个真实 monorepo 对比 nub、pnpm 和 npm 的脚本参数、退出码、环境变量、watch 重启范围及 CI 结果,再决定是否替换现有命令。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記