# schniz/fnm

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/schniz-fnm).**

24,020 stars · 610 forks · Rust · gpl-3.0

## Links

- GitHub: https://github.com/Schniz/fnm
- Homepage: https://fnm.vercel.app
- awesome-repositories: https://awesome-repositories.com/repository/schniz-fnm.md

## Topics

`hacktoberfest` `javascript` `nodejs` `nvm` `reasonml` `version`

## Description

This utility is a command-line tool designed for managing multiple Node.js runtime versions on local development machines. It functions as a cross-platform manager that enables users to install, switch, and synchronize runtime versions across Windows, macOS, and Linux environments.

The tool automates environment configuration by detecting project-specific version requirements through directory-traversal resolution. It maintains consistency by dynamically updating shell paths and environment variables, allowing for automatic version switching as users navigate between different project directories.

The software provides a comprehensive suite of tools for shell workflow optimization, including native command-line auto-completion and binary proxy execution. It is implemented as a compiled utility that handles the lifecycle of remote runtime archives, including secure fetching and local extraction.

## Tags

### Programming Languages & Runtimes

- [Node.js Version Managers](https://awesome-repositories.com/f/programming-languages-runtimes/node-js-version-managers.md) — Provides a command-line interface for installing, switching, and managing multiple Node.js runtime versions.
- [Runtime Management & Utilities](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/runtime-environments/runtime-management-utilities.md) — Installs, manages, and switches between multiple runtime versions to maintain consistent project environments. ([source](https://cdn.jsdelivr.net/gh/Schniz/fnm@master/README.md))
- [Symlink-Based Version Switching](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/runtime-environments/runtime-management-utilities/symlink-based-version-switching.md) — Automatically detects and applies the required runtime version by reading project configuration files during directory navigation. ([source](https://cdn.jsdelivr.net/gh/Schniz/fnm@master/README.md))
- [Remote Runtime Fetchers](https://awesome-repositories.com/f/programming-languages-runtimes/remote-runtime-fetchers.md) — Handles secure fetching, verification, and extraction of runtime binaries from remote distribution servers.

### Development Tools & Productivity

- [Cross-Platform Development Tools](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-development-tools.md) — Maintains consistent project environments by dynamically updating shell paths and environment variables across operating systems.
- [Shell Environment Configurations](https://awesome-repositories.com/f/development-tools-productivity/development-environment-management/environment-provisioning-configuration/developer-environment-tooling/shell-environment-configurations.md) — Automatically detects project-specific version requirements and updates the shell environment when navigating between directories.
- [Shell Environment Managers](https://awesome-repositories.com/f/development-tools-productivity/shell-environment-managers.md) — Modifies active shell sessions by injecting environment variables and path pointers through evaluated scripts.
- [Configuration Discovery](https://awesome-repositories.com/f/development-tools-productivity/working-directory-configuration/pane-directory-querying/configuration-discovery.md) — Scans parent directories for configuration manifests to determine the required runtime version for the current context.

### Part of an Awesome List

- [Environment Management](https://awesome-repositories.com/f/awesome-lists/devtools/environment-management.md) — Cross-platform Node.js version manager written in Rust.
- [Node.js Version Management](https://awesome-repositories.com/f/awesome-lists/devtools/node-js-version-management.md) — Fast Node.js version manager.
