Back to Top

Getting Started with ProGet Private npm Registries

Starting with ProGet 3.2, you can now add npm feeds, which are each effectively a private npm registry. In this tutorial, we will walk through all of the steps needed to start using a private npm registry.


Step One: Install ProGet

If you don't already have ProGet installed, you can download it here for free. The installation process is quick & easy. For more details, visit the installation page or see the installation guide for step-by-step installation instructions.

Step Two: Set up ProGet

Navigate to ProGet using your browser. You should then see a system dashboard page. Click on the gear icon in the top-right of the page, and you will be prompted to log in. The log-in page will tell you the default credentials which were created on installation; just log in using those.

ProGet Login

Click on the Feeds tab in the navigation bar, and you will see a list of feeds in the system. A feed is simply an exposed package repository. This name comes from ProGet's origins as a NuGet package server, and in fact, for historical reasons, there is still a NuGet feed called Default created upon installation.

If you are not planning to use NuGet or want to create your own feed for it later, feel free to delete the Default feed.

Manage Feeds

Click on the Create New Feed button and select npm.

Create Feed

Supply a value for the Feed name field. This will be the name of your private npm registry, and should contain characters that can be easily typed in a URL. For this tutorial, we'll use private-npm.

Feed Properties

Click on the Create New npm Feed button, and you should be automatically directed to the newly-created registry.

Browse Feed

If your ProGet server has access to the Internet, you should see a listing of packages from npmjs.org. These are called connector packages, and are not hosted on your ProGet instance, but are transparently proxied from another server. After you create the npm feed, you can add a connector for npmjs.org directly within your feed or by clicking on the Connectors tab at the top of the page. This way you can have access to that rich library of packages in addition to your private ones. Connectors also allow filtering, if you would like to include only a subset of external packages; however, no filtering is performed by default. For more information about connectors, see the documentation.

Using the ProGet web UI, you can browse, download, upload, and otherwise manage your packages. Explore the UI if you like; when you're ready, fire up a shell on your workstation and we'll get npm set up for ProGet.

Step Three: Set up npm

First, you will need to tell npm where to look for its registry; by default it will be configured for npmjs.org. Use the following command, substituting proget for the name name/port of your ProGet server, and private-npm for the name of the npm feed you created in the last step.

[~]$ npm config set registry http://proget/npm/private-npm

Step Four: Publish a Package

You can also publish packages to ProGet using npm. First, use the adduser command to log in as ProGet's default Admin account, and when prompted for a password, use the same one that you used to log in to ProGet (default is Admin).

[~]$ npm adduser
[~]$ npm publish package.tgz

Caching, Privileges, and More

You now have a working local npm registry and an npm client configured to use it by default. With connectors, you don't need to switch your client to a different registry; ProGet will aggregate all of them for you. You may want to explore some additional features not covered in this tutorial, such as:

  • Caching - Feeds are created with caching enabled by default; that is, whenever a connector package is first downloaded, ProGet will save a copy that will be used later instead. For large packages, this can save time if you have a slow connection to the Internet.
  • Privileges - ProGet has granular task-based privileges that can be scoped to a particular feed. If your organization utilizes Active Directory/LDAP, you may be interested in ProGet Enterprise, which lets you use those credentials with ProGet. For more information about privileges, see the documentation.