Type to search the fnpm documentation.

Architecture

Native hot paths, a TypeScript CLI and the Rust package-management pipeline.

fnpm has a native Rust launcher for install-heavy paths and a TypeScript CLI for help, prompts and the broader command surface. Both reach the Rust core. Commands and flags are defined in TypeScript; a build step emits the cli-spec consumed by the native parser.

Install path

The core coordinates configuration, workspace discovery, registry access, resolution, fetching, extraction, the v2 store, linking and scripts. Resolution, downloads and linking can overlap. Tarballs stream through decompression, extraction and hashing.

The native launcher handles hot commands without Node startup. Other commands delegate to the bundled TypeScript entry point through Node and the native addon. A no-op project-state cache can avoid redoing work when the tracked inputs and installed state remain valid. Cache validation and complex conformance cases remain part of ongoing correctness work.

Package layout

Layer Repository location
CLI, flags, output and prompts packages/fuck-npm
Native addon package packages/fuck-npm-binding
Rust launcher crates/fnpm-cli
Shared package-manager implementation crates/fnpm-core and component crates
Behavioral inventory docs/PARITY.md and docs/inventory
Measurement harnesses bench

Read the architecture document for command ownership and the decision log for store and launcher tradeoffs.