nvm-sh/nvm

Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions. $nvm: 3ArcxqLtXMmBnWbbtfwQgVL3MNnDsggzgGDtXMnjpump

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 45 minutes ago
Added to GitGenius on November 18th, 2025
Created on April 15th, 2010
Open Issues & Pull Requests: 391 (+0)
GitHub issues: Enabled
Number of forks: 10,435
Total Stargazers: 95,021 (+2)
Total Subscribers: 1,093 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 8.8 hours
Mean response time: 343.3 days
90th percentile: 1113.2 days
Tracked items: 511

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 96% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "non-issue / invalid" is answered fastest, typically in about 5 hours, while "feature requests" waits about 24 months. Only 9% of issues opened in the past year have been closed. Three people close 83% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 224
New in 7 days: 1
Closed in 7 days: 4
Avg open age: 1,902 days
Stale 30+ days: 220
Stale 90+ days: 213

Recent activity

Opened in 7 days: 1
Closed in 7 days: 4
Comments in 7 days: 1
Events in 7 days: 3

Top labels

  • non-issue / invalid (375)
  • needs followup (225)
  • installing node (150)
  • installing nvm (128)
  • feature requests (118)
  • OS: windows (99)
  • pull request wanted (96)
  • bugs (63)

Detailed Description

NVM (Node Version Manager) is a POSIX-compliant bash script that enables users to manage multiple active Node.js versions on a single machine. Written primarily in Shell, the project provides a command-line interface for quickly installing and switching between different Node.js releases without requiring system-wide installation or administrative privileges. The tool is designed to be installed per-user and invoked per-shell, making it suitable for development environments where different projects may require different Node.js versions.

The repository demonstrates significant maintenance activity and community engagement.

NVM's functionality centers on version management and context switching for Node.js environments. The tool supports automatic version switching through .nvmrc files, allowing projects to specify their required Node.js version, which nvm can automatically activate when entering a project directory. The installation process is streamlined through an install script that handles setup across different shell environments including bash, zsh, ksh, and dash. The README documentation indicates comprehensive platform support including Unix, macOS, and Windows WSL, with specific troubleshooting guidance for each platform.

The project includes features for managing global npm packages during version migrations, offline installation capabilities, and support for custom Node.js binary mirrors with authorization headers. Users can set default Node.js versions, customize color output, and integrate nvm with various shell configurations. The tool also provides bash completion functionality and supports special deployment scenarios such as Docker containers and CI/CD pipelines, with specific configuration examples for non-interactive shell environments.

The project's contributor network overlaps with major repositories including microsoft/vscode, microsoft/typescript, and rust-lang/rust, indicating its significance within the broader development tooling ecosystem.

The repository maintains comprehensive documentation covering installation methods including git-based installation, manual installation, and Docker-based deployment. Troubleshooting sections address platform-specific issues, particularly for macOS where shell configuration and Xcode command-line tools present common setup challenges. The project includes support for Alpine Linux installations and provides guidance for WSL environments. The codebase is actively tested, as indicated by the CI/CD badge in the README showing test status across the master branch.