n: Node.js Version Management Tool
A command-line utility for installing, switching between, and managing multiple Node.js versions on Unix-like systems.
Learn more about n
n is a Node.js version manager implemented as a BASH script that provides interactive version switching and management capabilities. It downloads and caches Node.js versions locally, then creates symbolic links or copies files to switch between versions without requiring shell configuration or subshells. The tool operates by managing Node.js installations in a centralized directory structure, typically under /usr/local, and provides both interactive and command-line interfaces for version selection. It supports various version specifiers including semantic versions, LTS releases, and project-specific version files like .nvmrc and package.json engines.
No Shell Configuration
Operates without requiring profile setup, subshells, or shell-specific configuration files. Works across different shell environments while being implemented as a BASH script.
Interactive Selection
Provides a built-in interactive menu for browsing and selecting from cached Node.js versions using keyboard navigation. Supports immediate switching between installed versions.
Project Integration
Automatically reads version requirements from .nvmrc, .node-version, and package.json files. Supports semantic version ranges and project-specific version resolution.
This release adds support for setting the download architecture via environment variable.
- –environment variable N_ARCH to set architecture for download, like using --arch
This release adds new download and cleanup functionality along with improved .nvmrc file support and security enhancements.
- –--cleanup option to delete cached version after install for a one-shot install
- –download command to download Node.js version into cache
- –document using --download with run/exec/which in README
- –support trailing comments in .nvmrc file
- –mask password in download URL when displayed
Major release switching from Node.js to jq for reading package.json files and optimizing version lookups.
- –if jq is available, use jq for reading engines from package.json instead of using node
- –avoid a network lookup if auto or engine find a fully specified numeric version
Top in Developer Tools
Related Repositories
Discover similar tools and frameworks used by developers
UniTask
Zero-allocation async/await using structs and custom method builders.
Husky
Manage Git hooks via Node.js package.
Doom Emacs
Modular framework with lazy loading and vim keybindings.
PyMuPDF
Python bindings for MuPDF document processing library.
Nano ID
Compact 21-character cryptographic IDs with URL-safe encoding.