Develop fnpm and this site
Build the CLI from source and run the independent documentation site.
Build fnpm
Use Node.js 20.19+ and Rust 1.90+. From a source checkout:
npm ci --ignore-scriptsnpm run build -w fuck-npmnpm run build:native -w @fuck-npm/bindingnode packages/fuck-npm/dist/fnpm.js --helpnode packages/fuck-npm/dist/fnpm-lock.js --helpThese commands build the Node CLI and native addon. The release launcher is a separate Rust executable. The benchmark evidence identifies the exact launcher revision it measured. Source directory names retain historical internal package names; the public distribution is fnpm.
Follow the architecture, parity checklist and roadmap when changing behavior. A passing crate test does not close a CLI conformance gap by itself.
Run the documentation site
The documentation build requires Node.js 22.23.4+ (Node 24.22.1 is also supported). fnpm itself still supports Node 20.19+.
The site has its own package manifest and npm lockfile under website/. Install from that directory so the repository’s workspace lock remains separate.
cd websitenpm cinpm run devOpen the local URL printed by Astro. Build and serve the production output with:
npm run buildnpm run previewThe build produces static files in website/dist/ and a Pagefind search index. It needs no hosted documentation service. The adapted Bun website/docs.json supplies the navigation; pages live in website/src/content/docs. The page shell adapts Bun’s site layout and styles. Astro renders MDX, Expressive Code renders code blocks, and Pagefind provides search. The homepage and documentation welcome page use the same header and search.
No hosted deployment is configured. The default build serves from / without a canonical host or sitemap. For a future GitHub Pages project deployment, set the host and base explicitly:
DOCS_SITE=https://snowingfox.github.io DOCS_BASE=/fuck-npm/ npm run buildDOCS_SITE supplies the canonical host and enables the sitemap. DOCS_BASE prefixes routes, assets and search. Authored internal links use relative paths so they also work under /fuck-npm/. Both root and project-subpath builds are checked during this site change. These settings do not deploy or enable GitHub Pages.