Sometimes it can be useful to be able to npm publish
libraries or projects you’re working on to a local npm registry for use in other development projects.
This post is a quick how-to showing how you can get up and running with a private, local npm registry using Verdaccio and docker compose.
Verdaccio claims it is a zero config required NPM registry, and that is pretty much correct. You can have it up and running in under 5 minutes. Here’s how:
Local NPM Registry Quick Start
Clone verdaccio docker-examples and then change directory into the docker-examples/docker-local-storage-volume directory.
git clone https://github.com/verdaccio/docker-examples.git cd docker-examples/docker-local-storage-volume
This particular sample docker-compose configuration gives you a locally run verdaccio instance along with persistence via local volume mount.
From here you can be up and running by simply issuing the following docker-compose command:
docker-compose up -d
However if you do want to make a few tweaks to the configuration, simply load up the conf/config.yaml file in your editor.
I wanted to change the max_body_size to a higher value to allow for larger npm packages to be published locally, so I added:
max_body_size: 500mb
If you haven’t yet started the local docker container, start it up with docker-compose up
.
Usage
Now all you need to do is configure your local npm settings to use verdaccio on http://localhost:4873. This is default host and port that verdaccio is configured to listen on when running in docker locally).
Then add an npm user for local development:
npm adduser --registry http://localhost:4873
To use your new registry at a project level, you can create a .npmrc file in your local projects with the following content:
@shogan:registry=http://localhost:4873
Of course replace the scope of @shogan with the package scope of your choosing.
To publish a module / package locally:
npm publish --registry http://localhost:4873
Other Examples
There are lots more verdaccio samples and configurations that you can use in the docker-examples repository. Take a look to find these, including Kubernetes resources to deploy if you prefer running there for a local development setup.
Also refer to the verdaccio configuration page for more examples and documentation on the possible config options.