2019-11-05 14:55:08 -05:00
|
|
|
|
---
|
|
|
|
|
section: using-npm
|
|
|
|
|
title: registry
|
|
|
|
|
description: The JavaScript Package Registry
|
|
|
|
|
---
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
2019-11-18 21:01:39 +02:00
|
|
|
|
# registry(7)
|
2019-11-05 14:55:08 -05:00
|
|
|
|
|
|
|
|
|
## The JavaScript Package Registry
|
|
|
|
|
|
|
|
|
|
### Description
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
|
|
|
|
To resolve packages by name and version, npm talks to a registry website
|
|
|
|
|
that implements the CommonJS Package Registry specification for reading
|
|
|
|
|
package info.
|
|
|
|
|
|
2018-08-29 12:03:09 -07:00
|
|
|
|
npm is configured to use npm, Inc.'s public registry at
|
|
|
|
|
<https://registry.npmjs.org> by default. Use of the npm public registry is
|
|
|
|
|
subject to terms of use available at <https://www.npmjs.com/policies/terms>.
|
|
|
|
|
|
|
|
|
|
You can configure npm to use any compatible registry you like, and even run
|
|
|
|
|
your own registry. Use of someone else's registry may be governed by their
|
|
|
|
|
terms of use.
|
|
|
|
|
|
|
|
|
|
npm's package registry implementation supports several
|
2011-11-21 09:48:45 -08:00
|
|
|
|
write APIs as well, to allow for publishing packages and managing user
|
|
|
|
|
account information.
|
|
|
|
|
|
2018-08-29 12:03:09 -07:00
|
|
|
|
The npm public registry is powered by a CouchDB database,
|
|
|
|
|
of which there is a public mirror at
|
2016-01-28 18:11:35 -08:00
|
|
|
|
<https://skimdb.npmjs.com/registry>. The code for the couchapp is
|
|
|
|
|
available at <https://github.com/npm/npm-registry-couchapp>.
|
2014-09-24 14:41:07 -07:00
|
|
|
|
|
|
|
|
|
The registry URL used is determined by the scope of the package (see
|
2019-11-18 21:01:39 +02:00
|
|
|
|
[`scope`](/using-npm/scope). If no scope is specified, the default registry is used, which is
|
2020-07-07 13:41:27 -05:00
|
|
|
|
supplied by the `registry` config parameter. See [`npm config`](/cli-commands/npm-config),
|
2019-11-18 21:01:39 +02:00
|
|
|
|
[`npmrc`](/configuring-npm/npmrc), and [`config`](/using-npm/config) for more on managing npm's configuration.
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
|
### Does npm send any information about me back to the registry?
|
2016-12-18 20:22:09 -08:00
|
|
|
|
|
|
|
|
|
Yes.
|
|
|
|
|
|
|
|
|
|
When making requests of the registry npm adds two headers with information
|
|
|
|
|
about your environment:
|
|
|
|
|
|
|
|
|
|
* `Npm-Scope` – If your project is scoped, this header will contain its
|
|
|
|
|
scope. In the future npm hopes to build registry features that use this
|
|
|
|
|
information to allow you to customize your experience for your
|
|
|
|
|
organization.
|
|
|
|
|
* `Npm-In-CI` – Set to "true" if npm believes this install is running in a
|
2018-11-29 14:05:52 -08:00
|
|
|
|
continuous integration environment, "false" otherwise. This is detected by
|
2016-12-18 20:22:09 -08:00
|
|
|
|
looking for the following environment variables: `CI`, `TDDIUM`,
|
|
|
|
|
`JENKINS_URL`, `bamboo.buildKey`. If you'd like to learn more you may find
|
|
|
|
|
the [original PR](https://github.com/npm/npm-registry-client/pull/129)
|
|
|
|
|
interesting.
|
|
|
|
|
This is used to gather better metrics on how npm is used by humans, versus
|
|
|
|
|
build farms.
|
|
|
|
|
|
2018-07-18 13:55:52 -07:00
|
|
|
|
The npm registry does not try to correlate the information in these headers
|
|
|
|
|
with any authenticated accounts that may be used in the same requests.
|
2016-12-18 20:22:09 -08:00
|
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
|
### Can I run my own private registry?
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
|
|
|
|
Yes!
|
|
|
|
|
|
|
|
|
|
The easiest way is to replicate the couch database, and use the same (or
|
|
|
|
|
similar) design doc to implement the APIs.
|
|
|
|
|
|
|
|
|
|
If you set up continuous replication from the official CouchDB, and then
|
|
|
|
|
set your internal CouchDB as the registry config, then you'll be able
|
|
|
|
|
to read any published packages, in addition to your private ones, and by
|
2016-09-22 07:59:37 -07:00
|
|
|
|
default will only publish internally.
|
2015-05-22 03:14:39 -04:00
|
|
|
|
|
|
|
|
|
If you then want to publish a package for the whole world to see, you can
|
|
|
|
|
simply override the `--registry` option for that `publish` command.
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
|
### I don't want my package published in the official registry. It's private.
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
|
|
|
|
Set `"private": true` in your package.json to prevent it from being
|
|
|
|
|
published at all, or
|
|
|
|
|
`"publishConfig":{"registry":"http://my-internal-registry.local"}`
|
|
|
|
|
to force it to be published only to your internal registry.
|
|
|
|
|
|
2019-11-18 21:01:39 +02:00
|
|
|
|
See [`package.json`](/configuring-npm/package-json) for more info on what goes in the package.json file.
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
|
### Will you replicate from my registry into the public one?
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
|
|
|
|
No. If you want things to be public, then publish them into the public
|
|
|
|
|
registry using npm. What little security there is would be for nought
|
|
|
|
|
otherwise.
|
|
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
|
### Do I have to use couchdb to build a registry that npm can talk to?
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
2013-08-16 08:19:31 -07:00
|
|
|
|
No, but it's way easier. Basically, yes, you do, or you have to
|
|
|
|
|
effectively implement the entire CouchDB API anyway.
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
|
### Is there a website or something to see package docs and such?
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
2018-08-29 12:03:09 -07:00
|
|
|
|
Yes, head over to <https://www.npmjs.com/>
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
|
### See also
|
2011-11-21 09:48:45 -08:00
|
|
|
|
|
2020-07-07 13:41:27 -05:00
|
|
|
|
* [npm config](/cli-commands/npm-config)
|
2019-11-05 14:55:08 -05:00
|
|
|
|
* [config](/using-npm/config)
|
|
|
|
|
* [npmrc](/configuring-npm/npmrc)
|
|
|
|
|
* [npm developers](/using-npm/developers)
|
|
|
|
|
* [npm disputes](/using-npm/disputes)
|