Host, Publish and Manage Private npm Packages with Verdaccio
Whatever the reason might be, there are several options to choose from. Perhaps the easiest is to sign up with one of npm’s commercial offers and you’re good to go. But this comes at a price which might not suit every purse.
Fortunately, there is a free alternative called Verdaccio, which might help you out.
Verdaccio is an npm package which allows you to create a local npm registry, without any configuration. It’s a batteries included project, coming with its own database. It does so by acting as a local caching/proxy server.
This means whenever you try to install something from your custom repository that’s not present, it will ping the official npm registry and download the dependencies. Your custom repository maintains those inside a simple folder called
storage. The next subsequent install will now use this locally cached copy. On top of that, some commands from the npm client, such as
npm login/adduser/publish are replicated to support the creation of local private packages, which you can see in use a little bit later in this article.
If you’re thinking that’s nothing new, there is already Sinopia you are right. Verdaccio is simply a fork of Sinopia which maintains backward compatibility, yet tries to keep up with official npm changes. One such change, which is unavailable in Sinopia, is scoped packages, which you might have already seen when working with libraries like Angular 2 or TypeScript npm hosted types. You can easily recognize them by the leading @ sign:
# Installing an Angular2 dependency npm install @angular/core # Installing the official Node.js type definitions for TypeScript npm install @types/node
Both Sinopia and Verdaccio work on Mac/Linux and Windows.
Getting Started with Verdaccio
Since Verdaccio is an npm package, all you need to do is run the following command to install it:
npm install -g verdaccio
A subsequent call with
verdaccio will fire up the instance and get your private registry running.
By default, it will listen on the port 4873. We will talk later about how you can change those settings.
In this article we’re going through setting up the registry on your development machine. In a company environment, you’ll likely want to do that on a dedicated server so that all developers can have access to it.
Verdaccio is a Node.js application, which means you should take care about restarting it in the event of occasional crashes. I recommend using pm2. All you’d need is to run the following steps:
# Install pm2 npm install pm2 -g # start Verdaccio using pm2 pm2 start PATH-TO-GLOBAL-VERDACCIO/verdaccio # --> e.g for Windows: C:/Users/[USERNAME]/AppData/Roaming/npm/node_modules/verdaccio/bin/verdaccio
Also, if by the end of the article you come to the conclusion that Verdaccio is not the right tool for you, just stop the process and uninstall Verdaccio with:
Continue reading %Host, Publish and Manage Private npm Packages with Verdaccio%