返回

文章详情

展示 HN: Nub – 类似 Bun 的 Node.js 全能工具包

Hacker News2026年6月24日 14:14

一个快速的全能工具包,增强 Node.js 而非替代它。基于原生 Node 的类似 Bun 的开发体验,使用 Rust 编写。 nub index.ts # TypeScript 优先的 Node.js 运行时 nub run dev # 速度比 pnpm run 快 24 倍 nubx prisma generate # 速度比 npx nub 快 19 倍 nub install # 速度比 pnpm install 快 2.5 倍 nub watch src/server.ts # 原生监视模式 nub pm shim # 内置 Corepack 风格的 shims nub node install 26 # Node 版本管理工具 nub upgrade # 自我更新 一款运行文件和脚本、安装依赖和管理 Node 的工具。没有新的运行时,不存在特定于供应商的 API 接口,没有锁定。 Nub 而不是 nub <file> node , tsx , ts-node , dotenv-cli nub run <script> 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 , volta nub pm corepack 安装 # macOS / Linux curl -fsSL https://nubjs.com/install.sh | bash # Windows (PowerShell) irm https://nubjs.com/install.ps1 | iex # 或通过 npm(pnpm / yarn 全局添加也可) npm install -g --ignore-scripts=false @nubjs/nub 用于 GitHub Actions,使用 nubjs/setup-nub 代替 actions/setup-node。 这是一对一兼容的。 - - uses: actions/setup-node@v4 + - uses: nubjs/setup-nub@v0 文件运行器 — nub <file> 运行文件。支持 .js , .ts , .mjs , .cjs , .mts , .cts , .jsx 和 .tsx。逐标志逐变量与 node 完全兼容(主要通过直接传递)。 nub index.ts # TypeScript,JSX,无构建步骤 nub --watch app.ts # 相同路径,变更后重启 它增强了原生 Node 的一些 Bun/Deno 最佳功能: 🦆 全面支持 TypeScript,包括 enum , namespace 🧭 适合 TypeScript 的解析:无扩展名导入,tsconfig.json#paths ⚛️ JSX / TSX 🎂 装饰器与 emitDecoratorMetadata 🆕 现代语法,如使用(在需要时在转译器中降级处理) 🔐 自动加载 .env* — 与 Next.js/Vite 的平等 🗂️ 内置常见数据格式的加载器 — .yaml , .toml , .jsonc , .json5 , .txt 🌐 Temporal , Worker , URLPattern , WebSocket , EventSource 的 polyfills(在需要时) 🔥 取消标记实验性特性,如 node:sqlite , vm.Module , localStorage ⚡ 启动速度比 tsx 快 2.9 倍 它是如何工作的 — Nub 利用 Node 扩展接口,这些接口大多在 Deno 和 Bun 构建时并不存在: --import / --require 预加载 module.registerHooks() 用于转译和解析 N-API 本地附加:Nub 嵌入 oxc 进行预转译 Node 配置 当你用 nub 运行文件时,它推断你的项目所期望的 Node 版本,并在需要时自动安装它。它依照以下顺序进行优先考虑: NODE_EXECUTABLE(覆盖) package.json#devEngines .node-version .nvmrc package.json#engines 这个解析后的 Node 版本会被安装,并与你的文件一起执行(带有 Nub 的增强功能)。 $ echo 26 > .node-version $ nub hello.ts Using Node.js 26.3.0 (resolved from .node-version) Installed in 9.8s Hello world! 现代 API 现代 API 在 Nub 下开箱即用。Node.js 实验性 API 被取消标记,其他的被自动 polyfill(例如,Node 25 及之前版本的 Temporal),还有一些在转译器中降级处理(使用)。 API 如何在 Node 26 之前 polyfill Temporal,原生支持在其之后 如何在 Node 24 之前 polyfill URLPattern,原生支持在其之后 如何在 Node 24 之前 polyfill RegExp.escape,原生支持在其之后 如何在 Node 24 之前 polyfill Error.isError,原生支持在其之后 如何在 Node 24 之前 polyfill Promise.try,原生支持在其之后 如何在 Node 24 之前 polyfill Float16Array,原生支持在其之后 如何在 Node 24.5 之前 polyfill navigator.locks,原生支持在其之后 如何在 Node 24 之前 polyfill reportError,原生支持在其之后 如何在 Node 24.5 之前 unflagged vm.Module,原生支持在其之后 如何在 Node 24.5 之前 unflagged ShadowRealm,原生支持在其之后 如何在 Node 22.19 之前 unflagged Wasm module imports,原生支持在其之后 如何在 Node 20.10 之前 unflagged WebSocket,原生支持在 Node 22 如何从 Node 20.18 之后 unflagged EventSource,原生支持在其之后 如何从 Node 22.5 之后 unflagged node:sqlite,原生支持在 Node 22.13 中 如何从 Node 22.20 之后 unflagged addon imports,永远不原生 监视模式 基于解析的依赖图重新启动变更加上仍然无效运行的非图文件 — 无需维护 glob 列表: nub watch src/server.ts nub --watch src/server.ts # 相同路径 👀 自动跟踪解析的依赖图 🧷 同时监视非图失效者 — .env* , tsconfig.json 的扩展链,package.json ⚙️ 运行在 Node 的 --watch 引擎上,默认保留输出 查看完整的运行时文档 👉 脚本运行器 — nub run npm run 和 pnpm run 的代替品。运行器是一个不含 JavaScript 启动的 Rust 二进制文件,所以它的脚本调度速度比 pnpm run 快约 24 倍: nub run build nub run -r --filter " @org/* " test # 支持 --filter 与现有的基于 JavaScript 的脚本运行器相比,它更快。 命令 时间 相对 nub run 14.7 ms — npm run 329.9 ms 22× pnpm run 442.7 ms 30× 脚本调度 · 暖启动 · 50 次运行 · macOS — 查看基准 🚀 速度感觉瞬时 — 14ms 对应的 npm/pnpm 的 300ms+ 延迟 🔁 完整的生命周期支持 — 前置 / 后置钩子和完整的 npm_* 环境 🧰 本地 node_modules/.bin 加入 PATH,并带有参数转发。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡