Huashu Design
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…

nvm-sh’s free shell script that installs several versions of Node.js side by side and switches between them in each shell. The setup notes cover Linux, macOS, Windows through WSL, Docker, Alpine and .nvmrc files.
nvm is an open-source project on GitHub in the Developer category, listed by Mindket. It is free. This is version 2, last updated on . Install it from GitHub as its README says. Get Mindket’s setup notes on your Mindket account, as a zip.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash
nvm is a version manager for Node.js. It is a shell script that you install per user and run per shell, so each terminal can use a different Node.js version without touching a system copy. The README says it works on any POSIX-compliant shell (sh, dash, ksh, zsh and bash), on unix, macOS and Windows WSL.
Developers who work on several Node.js projects and need a different version in each. Maintainers who test a library on an old and a new Node.js get the same help, and so do people who build Docker images or CI jobs. Skip it on Windows outside WSL, Git Bash and Cygwin. For that the README points to nvm-windows, nodist and nvs, which it says the nvm team neither supports nor develops.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Web development | Developers with several Node.js projects | Install each project’s version and switch with a .nvmrc file | A developer runs nvm use inside a project folder, and the shell switches to the version its .nvmrc names. |
| Open source libraries | Maintainers who support more than one Node.js version | Run one command under different versions with nvm exec | A maintainer runs nvm exec 4.2 node --version, as the README does, then repeats it with another version. |
| DevOps and CI | Engineers who build images and CI jobs | Install nvm in a Dockerfile and pass the Node.js version as a build argument | An engineer builds the README’s CI Dockerfile with --build-arg NODE_VERSION=19 and gets an image on that version. |
| Support and QA | People who reproduce a bug on the reporter’s version | Install the exact version beside the current one and run the failing command there | A tester installs 14.7.0 with nvm install 14.7.0, runs the failing script under it, then switches back. |
nvm runs in a POSIX-compliant shell on the platforms below, and the setup notes have a page for each of them, with the commands copied from the maker’s README.
Get it saves a zip of Mindket’s setup notes in your downloads folder, with a page for each platform from the maker’s README. The install script does most of the work.
| Need | Detail |
|---|---|
| bash | The install script runs only under bash (install.sh exits otherwise). Once installed, nvm runs in sh, dash, ksh, zsh or bash |
| curl, wget or git | The README says the installer uses whichever is available, and that git must be v1.7.10 or newer |
| A shell profile file | ~/.bashrc, ~/.bash_profile, ~/.zshrc or ~/.profile. On a Mac the file may not exist yet, and the README says to create it with touch |
| A C++ compiler | Only when a version has no binary for your system and nvm builds it from source |
| An account or key | The README’s install steps ask for none |
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash
The command names v0.40.8, the release the README named when these notes were written. Use the one it shows now. The script puts nvm in ~/.nvm, with git if you have it and a download if not, and adds the source lines to the profile file it finds. If it picks the wrong file, set the PROFILE variable to the right path and run it again.
command -v nvm
Install a version, switch to it and set the default for new shells. The README says the first version you install becomes the default.
nvm install node nvm install 14.7.0 nvm use node nvm ls nvm alias default node
The first line installs the latest release and the second installs that exact one, so a current copy and an older one can sit side by side on the same machine. Running nvm use changes PATH in the shell you run it in, and nvm ls lists what you have. A new shell starts on the default alias. For a project, put the version in a .nvmrc file. Then nvm use with no version reads it, and so do nvm install and nvm which.
You have projects on Node.js 24, 22 and 20. This is the README’s first example. nvm use switches only to versions you have already installed, so 22 and 20 must be there first:
nvm install 24 node -v nvm use 22 node -v nvm use 20 node -v
Each node -v prints the version you just switched to. The README’s sample output also shows a Now using node line, with the node and npm versions, after each install and use.
If you are new. A project can need a different Node.js than the one on your machine. nvm keeps each version in its own folder under ~/.nvm and changes which one your shell finds first. The nvm command is a function your shell loads, not a program on your PATH, so, as the README says, which nvm will not work. Use command -v nvm instead. Close the terminal after installing and open a new one. Until then the command may be missing. The README says that with nvm you do not need sudo to install a module globally with npm -g.
For experts. The special aliases (node, iojs, stable, unstable, current) work with nvm install, nvm use, nvm run, nvm exec and nvm which. LTS names (--lts, lts/*, lts/argon) work with install, uninstall, use, exec, run, ls-remote and version-remote. The commands nvm install --lts and nvm use with lts/*, and a .nvmrc line of lts/*, all follow the latest LTS. Every command that selects versions takes --only= with the categories alpha, lts, non-lts and iojs, and NVM_ONLY sets the default. Adding --reinstall-packages-from=current to nvm install reinstalls your global packages on the new version.
NVM_NODEJS_ORG_MIRROR and NVM_IOJS_ORG_MIRROR point nvm at a mirror of the binaries. NVM_AUTH_HEADER sends an Authorization header to a mirror, never to any other host, except that BusyBox’s wget, the README says, sends it wherever the mirror redirects. The README recommends curl for a mirror that hands downloads to another host. A default-packages file in NVM_DIR lists the packages you want installed with every new version, one name per line. You can add anything npm would accept as a package argument on the command line. Adding -s to nvm install builds from source, and setting NVM_NO_SOURCE_FALLBACK to 1 makes a missing binary an error instead of a silent source build. A per-version lock stops two shells from installing the same version at once.
nvm is installed per user and runs in your own shell, but its install steps write to your profile file and fetch files from the network.
This kit holds setup notes only. Mindket wrote them. nvm itself, its install script and its shell files come from its maker's repository: https://github.com/nvm-sh/nvm
These notes are not made or endorsed by the nvm project. The GitHub description reads "Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions." The README says "nvm allows you to quickly install and use different versions of node via the command line."
License: MIT. The LICENSE.md file (https://github.com/nvm-sh/nvm/blob/master/LICENSE.md) reads "The MIT License (MIT)", "Copyright (c) 2010 Tim Caswell" and "Copyright (c) 2014 Jordan Harband". The README's copyright notice reads "Copyright OpenJS Foundation and nvm contributors. All rights reserved." and says the OpenJS Foundation has registered trademarks.
The README says only the latest version of nvm is supported. Its commands name a release tag (v0.40.8 when these notes were written). Use the tag the README names when you read it.
~/.nvm, or in $XDG_CONFIG_HOME/nvm when $XDG_CONFIG_HOME is set. With git it clones the repository there. Without git, install.sh downloads nvm.sh, nvm-exec and bash_completion with curl or wget. Source: https://github.com/nvm-sh/nvm/blob/master/README.md (Install & Update Script, Additional Notes)~/.bashrc, ~/.bash_profile, ~/.zshrc, ~/.zprofile or ~/.profile; install.sh checks ~/.zprofile too). The install script (https://github.com/nvm-sh/nvm/blob/v0.40.8/install.sh) also appends a line that loads bash_completion to a bash or zsh profile.~/.nvm/versions/node/. Source: README.md (Important Notes)which nvm does not work, so check it with command -v nvm.bash" under any other shell. Once installed, nvm runs in any POSIX-compliant shell. The README lists sh, dash, ksh, zsh and bash.xcode-select --install.git, curl or wget. The README says the installer uses whichever is available. Its Git install route needs git v1.7.10 or newer.build-essential and libssl-dev packages on Debian and Ubuntu.The README's install steps ask for no account or key.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash
Source: https://github.com/nvm-sh/nvm/blob/master/README.md (Install & Update Script)
.nvmrc and automatic switching in bash, zsh and fish (bash completion is in setup/commands.md)To update, the README says to run the install script again, the same command as the install. For a manual upgrade with git (git v1.7.10 or newer), it gives these lines, which change to $NVM_DIR themselves:
(
cd "$NVM_DIR"
git fetch --tags origin
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"
To remove nvm, the README gives these lines. First unload nvm and delete the installation directory:
nvm_dir="${NVM_DIR:-~/.nvm}"
nvm unload
rm -rf "$nvm_dir"
Then edit ~/.bashrc (or your other shell resource file) and remove the lines below:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion
The install script itself writes the completion line in this form (install.sh), so remove whichever form your profile holds:
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Source: https://github.com/nvm-sh/nvm/blob/master/README.md (Install & Update Script, Manual Upgrade, Uninstalling / Removal)
README.md 5 KB setup/alpine-linux.md 3 KB setup/commands.md 11 KB setup/docker-and-ci.md 3 KB setup/linux.md 5 KB setup/macos.md 6 KB setup/mirrors-and-other-platforms.md 4 KB setup/nvmrc-and-shells.md 8 KB setup/windows.md 3 KB
Updated by Mindket to the current version of this kit.
Posts and comments that name this project on Hacker News, Bluesky, X, Reddit, Facebook and YouTube, found by a weekly search and on Trendshift. Mindket doesn’t write or check them. Open one to read it where it was posted.
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
op7418 · Skill
Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…
alirezarezvani · Skill
Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…
block · Kit
Self-hostable workspace where people and AI agents share the same rooms, built on a Nostr relay that logs every action as a signed event. For teams that want t…
backnotprop · Kit
Opens your AI coding agent's plans, specs and code changes in a browser so you can annotate or comment on them and send the feedback straight back to the agent.
alibaba · Kit
Reviews Git changes with an AI agent that reads files and searches the codebase, then writes comments tied to exact lines. It suits developers who want automat…