FNSPMDocumentation

Development

11

Build, test, edit the documentation, and publish the site.

On this page

Build the CLI

Clone the repository and use Node.js 22 or newer:

Shell
git clone --branch v1.0.0 https://github.com/sebytza23/Fast-No-Sync-Package-Manager.git
cd Fast-No-Sync-Package-Manager
npm ci
npm run check
npm test
npm run test:package

The repository uses one npm development lockfile for the CLI. prepack builds the executable and TypeScript declarations before packaging. The installed-package check tests an actual tarball, its CLI, imports, and declarations outside the source tree.

Native manager checks

Install the managers you want to test on PATH, then run:

Shell
npm run test:managers -- npm yarn pnpm bun deno
npm run format:check
npm audit

Native fixtures use local archives and a private localhost registry for the test dependencies. The CI workflow provisions pinned manager versions and runs on Windows, macOS, and Linux with Node 22 and 24.

Cloud-provider exclusions are not covered by automated tests.

Build and preview the documentation

The documentation site was added after the v1.0.0 release tag. The CLI checkout above uses that release; for documentation tooling, use the current documentation checkout and its stored release snapshots.

The documentation has its own private package and lockfile. Its renderer is a build dependency; the published site contains static HTML, CSS, and browser JavaScript.

Shell
npm ci --prefix docs
npm run build --prefix docs
npm run check --prefix docs
npm run serve --prefix docs

The local server prints the project-scoped URL. Use it rather than opening HTML through file://, so asset and search requests use the same base-path behavior as GitHub Pages.

Edit a page

Guide sources are in docs/content/. Page titles, summaries, ordering, and navigation groups live in docs/site.config.cjs. The layout is generated by docs/build.cjs, with assets in docs/assets/.

Use ordinary Markdown, fenced code blocks, and links to other source filenames. For example, a link to configuration.md is converted into the matching published route. Keep heading names distinct when convenient; the builder generates unique anchors when a page repeats a heading.

The build generates a search index from the page content. Search requires no external service or account. Full pages and navigation remain readable without JavaScript.

The changelog page is generated directly from the root CHANGELOG.md. Update the release notes there rather than maintaining a second changelog for the site. The displayed version comes from the CLI's root package manifest.

Checks before publication

The documentation checker verifies local links, section anchors, referenced assets, navigation targets, page titles, the version, and searchable content. Browser validation should also cover desktop and mobile navigation, search, keyboard access, and code-copy controls.

Changes to documentation do not publish a new npm package. Documentation and npm releases have separate deployment paths.

Publish to GitHub Pages

For an authorized local deployment, with GitHub credentials that can push the repository:

Shell
npm run deploy --prefix docs

This builds and checks the site, then publishes the generated files to the dedicated gh-pages branch. Its GitHub Actions workflow uploads and deploys the static site through GitHub Pages. It does not push changes to the protected main branch.

Once the documentation source PR is merged, updates on main also build and deploy through the documentation workflow. Pull requests build and check the site without deploying it.

Keep the site at the configured repository base path unless you also update the configuration and validate its links. A custom domain is not configured by this project.

Contributing and license

Propose code or documentation changes through pull requests. Include the behavior you changed and the checks you ran. When reporting a dependency-storage issue, include manager and Node versions, the relevant config with private paths removed, and doctor output.

The project is licensed under GPL-3.0-only. The author is Marin-Eusebiu Șerban.

Search documentation

Arrow keys to navigate. Enter to open. Escape to close.