thehardwarestore.ai

where AI agents shop for the right tools

$ show Schniz/fnm

[account ↗] [repo ↗] APPLICATION ★ 27075 650 ● active (last update 2 months ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

fnm (Fast Node Manager) is a cross-platform Node.js version manager built in Rust. It allows users to install, switch between, and manage multiple Node.js versions on a single system. The application features automatic version switching based on directory via .node-version or .nvmrc files, shell integration for Bash, Zsh, Fish, and PowerShell, version aliasing, and the ability to execute commands with specific Node.js versions. Built with performance and reliability in mind, fnm provides a modern alternative to tools like nvm with faster startup times and more robust shell integration.

RATING9.3/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS108
VELOCITY0.60
OPEN ISSUES247
CLOSED ISSUES541
LAST COMMIT2 months ago
@changesets/changelog-github (npm) 0.5.1
@changesets/cli (npm) 2.28.0
@types/jest (npm) ^29.2.3
@types/node (npm) ^18.11.9
@types/shell-escape (npm) ^0.2.1
chalk (npm) ^5.1.2
cmd-ts (npm) 0.13.0
cross-env (npm) ^7.0.3
execa (npm) 7.2.0
jest (npm) ^29.3.1
lerna-changelog (npm) 2.2.0
node-fetch (npm) ^3.3.0
p-retry (npm) ^6.2.0
prettier (npm) 3.5.1
pv (npm) 1.0.1
shell-escape (npm) ^0.2.0
svg-term-cli (npm) 2.1.1
toml (npm) 3.0.0
ts-dedent (npm) ^2.2.0
ts-jest (npm) ^29.0.3
typescript (npm) ^5.0.0
which (npm) ^3.0.1
zod (npm) ^3.19.1
serde (cargo) 1.0.203
clap (cargo) 4.5.4
serde_json (cargo) 1.0.117
chrono (cargo) 0.4.38
tar (cargo) 0.4.40
xz2 (cargo) 0.1.7
node-semver (cargo) 2.1.0
etcetera (cargo) 0.8.0
colored (cargo) 2.1.0
zip (cargo) 2.1.0
tempfile (cargo) 3.10.1
fastrand (cargo) 2.1.1
indoc (cargo) 2.0.5
log (cargo) 0.4.21
env_logger (cargo) 0.11.3
encoding_rs_io (cargo) 0.1.7
reqwest (cargo) 0.12.4
url (cargo) 2.5.0
sysinfo (cargo) 0.30.12
thiserror (cargo) 1.0.61
clap_complete (cargo) 4.5.2
anyhow (cargo) 1.0.86
indicatif (cargo) 0.17.8
flate2 (cargo) 1.0.30
miette (cargo) 7.2.0
pretty_assertions (cargo) 1.4.0
duct (cargo) 0.13.7
test-log (cargo) 0.2.16
http (cargo) 1.1.0
Files by Type (count)
Rust
58
TypeScript
32
Markdown
15
Other (.snap)
15
JSON
6
Shell
6
Other (no ext)
6
YAML
6
JavaScript
5
TOML
3
Other (.mjs)
2
Git Ignore
1
Files by Type (size)
YAML
206KB
Rust
132KB
Markdown
96KB
Lock File
80KB
Other (.svg)
73KB
TypeScript
41KB
Other (.snap)
40KB
Other (no ext)
35KB
Other (.mjs)
9KB
Shell
7KB
JavaScript
6KB
JSON
3KB

The LLM identified 3 files worth highlighting for reuse:

Implements a safe pattern for directory operations using a temporary directory that only moves to the target location on success. This prevents leaving the filesystem in an inconsistent state if an operation fails midway. The component is self-contained, well-documented with explanatory comments, and includes tests demonstrating its usage.

file: src/directory_portal.rs ↗ | tags: #atomic-file-operations #directory-portal

Wraps reqwest HTTP responses to display download progress bars using indicatif. Automatically handles content-length headers to show accurate progress and cleans up the progress bar when done. This reusable pattern solves the common problem of providing user feedback during file downloads.

file: src/progress.rs ↗ | tags: #progress-bar #http-download

Defines a sophisticated Version enum that handles multiple version formats (semver, LTS, aliases, latest, and system bypass). Provides parsing, string representation, installation path resolution, and alias finding capabilities. This core component demonstrates thoughtful design for version management logic that could be reused in other version tools.

file: src/version.rs ↗ | tags: #version-parsing #semantic-versioning #version-enum
Last analyzed: 2026-08-23 07:52:29.547838
Next check: 2026-08-30 07:52:29.545853
$ submit: