Nub

nub contributors·Nub.Nub

The all-in-one JavaScript toolkit that augments Node.js instead of trying to replace it.

An all-in-one toolkit for Node.js. One Rust binary to run your files and scripts, install dependencies, and manage Node itself — a Bun-like modern DX on top of the node you already have. There's no new runtime to adopt and no lock-in: every augmentation rides on Node's own public extension surfaces.

winget install --id Nub.Nub --exact --source winget

Latest 0.9.3·September 19, 2026

Release Notes

The nub binary answers to nubr, so every install channel that puts nub and nubx on the path now puts the unified runner there too. nubr on every channel 0.9.2 introduced nubr as the bin of @nubjs/runner on npm. This release makes the same command a third name on the nub binary: invoked as nubr, it runs the nubr.mjs the binary already embeds, on the project's Node, provisioning one when none is installed. The npm package and the binary run the same file, so a project behaves the same under either. curl -fsSL https://nubjs.com/install.sh | bash # macOS / Linux irm https://nubjs.com/install.ps1 | iex # Windows (PowerShell) nubr app.ts # a file nubr build # a package.json script nubr vitest run # an installed node_modules/.bin entry ───────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────── Channel │What changed ───────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────── install.sh / │Create nubr beside nubx; the uninstall paths remove it install.ps1 │ ───────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────── nub upgrade │Recreates the nubr alias on Unix and refreshes nubr.exe on Windows ───────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────── Homebrew tap │The generated formula symlinks nubr and asserts nubr --version ───────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────── @nubjs/nub on npm │Ships a nubr bin next to nub and nubx ───────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────── Nix flake │Adds the symlink and an apps.nubr entry ───────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────── winget │The committed Nub.Nub fixture registers nubr as a third alias of the one nub.exe, and CI proves all three │run ───────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────── nubr --version prints the bare version, matching the npm command. (#943, adfdba73ce)

winget Nub has been published on winget as Nub.Nub since 0.1.0 and is bumped by community automation on each release; winget install Nub.Nub is now in the README. The in-repo fixture tracks that identifier at 0.9.2, and the release workflow's own submission job stays a dormant fallback. (#944, 4a0f4dc5e3)

Configuration Note The string form of prefix refuses a backslash. The string is split like a POSIX shell, so "C:\tools\wrap.exe --" reached the launch as C:toolswrap.exe. The error names the array form, which takes each argument as written. The published schema carries the same rule. (#941, 66af607145)

Documentation ──────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─────────────── Area │What changed │Commit ──────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────── Unified runner│New "From the nub installer" section, a nubr section in the README, and the install page lists all three │adfdba73ce │commands │ ──────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────── Resolution │The nub export-condition example points at JavaScript, since files under node_modules are never transpiled │921f4def52 ──────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────── Extensions │The @nubjs/extensions page is removed and its URL redirects to the package's own repository │483eaa84ff ──────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────── @nubjs/types │The import.meta.hot comment no longer names a --hot flag that does not exist │af955b380f ──────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────── 0.9.2 post │Introduces nubr on @nubjs/runner without naming the retired loader package │979196a4d0 ──────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴───────────────

Testing & internals

  • The docs link checker validates same-page #anchor links (41d27d8c24).
  • Fenced code lines on the site are linted against the rendered column width rather than a character count (aa08e86ca8).
  • The busybox lifecycle probe runs on windows-11-arm as well, so the arm64 sidecar is executed in CI (fcdb08cbc3).

What's Changed

  • config: refuse a backslash in the prefix string form by @colinhacks in #941
  • nubr: a third name on the nub binary, the unified runner on every channel by @colinhacks in #943
  • winget: the package is Nub.Nub, community-maintained; the fixture proves a third alias for nubr by @colinhacks in #944

Installer type: zip

x64—D847FC01B59D0AC70A3AA8912022212C0D54E25BC129E3C598D1ABF3B6C3C3C2
arm64—C17CDB84A196BBE9C36A3DFD4BAC4713454A6CC3605230BD7F134EA59A2F7897

Details

Homepage
https://nubjs.com/
License
MIT
Publisher
nub contributors
Support
https://github.com/nubjs/nub/issues
Copyright
Copyright (c) 2026 nub contributors
Moniker
nub

Tags

javascript-runtimenode-version-managernodejspackage-managerscript-runner

Older versions (20)

0.9.2
x64—85602D803FFE0F92A66664172870916BF8945C2889A6118DC01794BD530873CE
arm64—936AB99F6B167EF7C30623381D79E02041FE854BC3E23EA163B5120A9100E4A9
0.9.1
x64—0A792DC5F7CFCC184E06D516298C2CC9A685F469D3730F4C6BD786C12C23D795
arm64—32773B9B5C8C1B6A9D90337A700C773962D6E9D118026DC15ABC8E596DD5AFB4
0.9.0
x64—F32F7FEE19585A3E0858CEC7854B19E6E8178A510EE0B198EA5FB2E76E563D62
arm64—3BE7134C28EE33BA5AFB13F7105BEA2FEECE4164C44313FA146681F29E65B874
0.8.3
x64—61196D3D5C8B75F351656069D36A29F3751CEAFAA20320394514246D72D578E9
arm64—5E4180AB643968B7A7246B75176F9DD63149650956F651B69BABF41CE09B70CE
0.7.5
x64—061956457776121EC8A4DE43DA47A85EEBB9E3C26111FF39FC5C55865836DE43
arm64—E46B42266AB42C6A57B43B2472D970DE4DD337ED633305F857905C7E1B1E69A3
0.7.4
x64—70002FA46598417E57F532D50C650F2FC42C0C9EB31C2EBF0592CEBF52D6E3F9
arm64—B5057366E920ABA6226C368026578855D19439F5D1493BEA577247709E46A3A0
0.7.3
x64—543943543827924CE57405B9CCF29C7160BBE0ABB1B237AF053586B2EC4298B6
arm64—7158978211B165B8AC1A9635D206C8D8505747F35101B18ACC58770AFD4A72C4
0.7.2
x64—95419BC5D78329F1F2E73A102762222C45537C7FBF8E38D0C85AE7D4EE2CDABE
arm64—B591425A7D27C9DFCF83ED4F864A2D593086A6294EDB517BDF8789A1AB0EEC79
0.7.1
x64—8E8617D6381A1E37BBA989D7B576488C39F22E3E5266BEEE6C9BCCE4088F8DE6
arm64—570E67293AE65231AFC4F34B4DD3D910B0F346E81B5405B217E37A0C301AD050
0.7.0
x64—27499B1FEF8C98398172D86DFC423F64259CA82E3345F4D95A65098086A0F8B3
arm64—2607910E467DADBD93836EF6EAC11AA3D7D31DC4A652CF09A5C0157EA8660BDA
0.6.0
x64—A4472D680FA3FBCD31703A8F9963CF783CAF9A435A19E538D74D16316437EA8F
arm64—B0253B6C9263D279DAD13273C35A46BB17A6158F5B24608F5EB9810526C638AD
0.5.0
x64—A8A2FE530DD93C6402ECFFB12A4CE33E3B39D761CD5115FE3252ABA1342912B0
arm64—20A94B3CEF4FDB5AA671541B0E748E6A6F77F4E51D3B5B8FBE5587DAB78DB1A6
0.4.13
x64—7E76E907465E1DF344C558406537F4A8E34700A6D9AE87B2457CD85CC03EF3AF
arm64—B3B404E1418FFD03F3D4F5E62B76C3463907438E3088DF02AA246BBDFE89E2EA
0.4.12
x64—020290D403A004466CD8DE3A7EC569D74694B05C33E2EF7A2892B5269E4C3FFA
arm64—DD2BA9512E62A6A1CE6885278B6E07AF3985838A949123D3A3C8CDA2F69F2382
0.4.11
x64—0628BC26B44A0A58D0019BF0C35F63AEEFEF0C6A610B450166777762AE9C7670
arm64—08E6028FD236C75608F75BD14C67BAB99AB10C3E21BDB1180AF047784C86E70E
0.4.10
x64—C55156CF48B65DC83725DC42A0B3FE14C3067407BD587F0A01C7F2176C093548
arm64—F58F24EF3333E290BE4B04CD51F711CD442012F839E8160259671CC208BBC13C
0.4.9
x64—3BB30D5C22FB793D6C9C3B3000724282F5465B1A6D0D6592E4AA4818C3597C0C
arm64—5F5A9B74B6C98039007FDA00D426B90CB5FC91AFF61672B9E00CE3B3AC6DA219
0.4.8
x64—3F3F0883CFC18EEE393879E3DD8AFB1C3CD6BD62BAB6A659352AE1BC80286F27
arm64—FDC1C785FF40A5B98BEBA74D783E7648F6BEFCF1D282EE77C8A8E2D7F78F42FA
0.4.7
x64—6C62750028261B63929406C5A8FF179DD02E0FA5FD0EAA59AF2C23C1E0101024
arm64—EE447999E39FCB38C0A1777113C32A3669EEF47439A0D9D1916B4FC35E0555D4
0.1.0
x64—D0F93810A545E09906739FD7A08F92826933732D06554B081E66A82867CFB149
arm64—9F481B5912CCB244CC06204C33E9A673AD9E32528B34AE5504E1EA84989A834A