How it works...

The npm client simply sends HTTP requests to the npm registry.

For instance, an npm publish command causes a tarball of our module to be sent to the registry endpoint via an HTTP PUT request.

Sinopia supports a subset of the endpoints and verbs used by the npm registry, but it works quite differently beyond that.

The npm registry was originally built as a CouchDB application that held all metadata and tarballs in one database, but now it runs as a distributed microservice-based system made up of many pieces.

On the other hand, Sinopia is a RESTful Node application that essentially stores modules to the filesystem (in exactly the same form as we create them, as a folder with package.json and source files).

Sinopia storage
We can try grep storage ~/.config/sinopia/config.yaml to find out where Sinopia stores modules on our file system. If we're using Windows, we can use findstr storage %homedrive%%homepath%/.config/sinopia/config.yaml.