Nvm
This project is a command-line tool designed for managing multiple runtime versions on a local machine. It functions as a shell-based environment manager that enables users to install, switch between, and maintain different versions of a runtime to support project-specific requirements or diverse shell sessions. By dynamically updating system paths and environment variables, it provides a consistent interface for runtime version control across various Unix-like operating systems.
The tool distinguishes itself through its portable, POSIX-compliant shell implementation, which ensures reliable execution across a wide range of shell environments. It utilizes lazy-loading function aliasing to defer the execution of management logic until a command is actually invoked, minimizing overhead during shell startup. Furthermore, it employs directory-symlink-based switching and persistent environment variable configuration to maintain a stable and predictable execution context for developers.
Beyond core version switching, the project supports a broad range of environment configuration capabilities. It facilitates the installation of pre-release and nightly builds, provides command-line tab completion for improved usability, and includes automated mechanisms for updating the manager itself. The system is designed to enforce environment consistency across development teams, allowing for standardized runtime configurations and simplified cross-version development workflows.
Installation is performed via shell scripts, which integrate the manager into the user's shell profile to ensure persistent access to versioning commands across terminal sessions.
Features
- Path-Based Version Switchers - Swaps active runtime versions by dynamically updating the system PATH variable to point to specific version-controlled binary directories.
- Shell-Based Version Managers - A command-line tool that enables the installation, switching, and management of multiple runtime versions within a POSIX-compliant shell environment.
- Runtime Version Managers - Download the version manager and configure environment variables and directory structures to enable runtime version control on a local machine.
- Version Managers - Download binaries and update user shell profiles to enable persistent access to version management tools across the system.
- Lazy-Loading Mechanisms - Defines shell functions that defer the loading of heavy management logic until the first time a version-specific command is invoked.
- Shell Environment Initializers - Configure shell environments to support version switching by sourcing management scripts and initializing necessary path variables for persistent access.
- Shell Initialization Managers - Injects management logic into the user's shell startup files to intercept command execution and dynamically modify environment variables.
- Shell Completions - Activate command-line tab completion for shell sessions to simplify the discovery and execution of version management commands.
- Shell Environment Configurations - Initializing and managing shell-level paths and variables to ensure that development tools and runtimes are correctly accessible within terminal sessions.
- Installation Scripts - Deploy the version manager using shell scripts, supporting manual, git-based, or containerized installation methods for consistent environment setup.
- Version Manager Updaters - Apply the latest features and security patches to the local version manager installation by executing an automated update process.
- Symlink-Based Version Switching - Manages multiple runtime installations by updating symbolic links to point to the currently active version directory within a central store.
- Cross-Shell Managers - A portable script-based solution that provides consistent runtime version control across diverse shell sessions and operating system configurations.
- Runtime Execution Wrappers - Run commands using a specific runtime version by wrapping the execution environment with the appropriate version path and configuration settings.
- Versioned Command Execution - Run commands using the currently active runtime version to ensure the correct environment is selected before execution begins.
- Pre-release Runtime Installers - Configure environment variables to discover and install pre-release, release candidate, or nightly builds of a runtime environment for testing and development.
- POSIX-Compliant Shell Scripts - Implements core logic using strictly portable shell syntax to ensure consistent execution across diverse Unix-like operating systems and shells.
- Environment Consistency Tools - Standardizing development environments across team members by ensuring everyone uses the same runtime versions and configuration settings for their projects.
- Cross-Version Testing - Testing and running applications against multiple runtime versions to ensure compatibility and verify behavior across different release cycles.
- Environment Variable Configurations - Controls runtime behavior and version selection by reading and writing persistent shell variables that define the active execution context.
- Environment Variable Managers - Customize shell behavior and tool performance by setting environment variables to define paths, mirrors, and default settings for runtime management.
- Containerized Version Managers - Define a containerized environment for managing multiple software versions by installing the necessary runtime and configuring the shell profile within a Docker image.
- Package Manager Configurations - Define registry URLs, authentication tokens, and environment-specific variables in a project-level configuration file to manage package installation and dependency resolution.
- Test Version Managers - Execute automated test suites to verify the integrity and functional correctness of version management logic across different shell environments and operating systems.