Cross platform nvm that doesn't suck™
nvm
and place it somewhere in your $PATH
shell
cargo install nvm-rust
It does not allow creating the symlinks this program uses without either Admin access or Developer Mode.
Either run the program as Administrator or enable Developer Mode
| | nvm-rust | nvm-windows | nvm | |-----------------------------------------------------------------------:|:---------------:|:---------------------------------------------------------:|:------------------------------------:| | Platforms | Win, Mac, Linux | Windows | POSIX | | Range matching | ✅ | ❌ | ✅ | | Version files | ✅ | ❌ | ✅ | | Default global packages | 🔧 | ❌ | ✅ | | Node <4 | ✅* | ✅ | ✅ | | Disabling nvm temporarily | ❌ | ✅ | ✅ | | Caching | ❌ | ❌ | ✅ | | Aliases | ❌ | ❌ | ✅ |
**not supported, might work?
Allowing you to not have to write out the full versions when running a command.
For example:
nvm install 12
will install the latest version matching 12
, instead of 12.0.0
.nvm install "12 <12.18"
will install the latest 12.17.x
version, instead of just giving you an error.nvm use 12
switch use the newest installed 12.x.x
version instead of 12.0.0
(and most likely giving you an error, who has that version installed?).package.json#engines
, .nvmrc
, .tool-versions
)If a version is not specified for the use
and install
commands nvm-rust will look for and parse any files containing Node version specifications amd use that!
nvm-rust handles files containing ranges, unlike nvm.
e.g.
``` // package.json { ... "engines": { "node": "^14.17" } ... }
$ nvm install ```
The program will use the following file priority:
package.json#engines
.nvmrc
.node-version
.tool-versions
from asdf
This project uses Task to execute various development commands.
e.g. to run a command via a debug build, run:
shell
task run -- install 12
To build a release artifact, run:
shell
task build:release
You can find all the commands in the Taskfile.