deps/npm/html/partial/doc/misc/npm-registry.html

Summary

Maintainability
Test Coverage
<h1><a href="../misc/npm-registry.html">npm-registry</a></h1> <p>The JavaScript Package Registry</p>
<h2 id="description">DESCRIPTION</h2>
<p>To resolve packages by name and version, npm talks to a registry website
that implements the CommonJS Package Registry specification for reading
package info.</p>
<p>Additionally, npm&#39;s package registry implementation supports several
write APIs as well, to allow for publishing packages and managing user
account information.</p>
<p>The official public npm registry is at <a href="http://registry.npmjs.org/">http://registry.npmjs.org/</a>.  It
is powered by a CouchDB database, of which there is a public mirror at
<a href="http://skimdb.npmjs.com/registry">http://skimdb.npmjs.com/registry</a>.  The code for the couchapp is
available at <a href="http://github.com/npm/npm-registry-couchapp">http://github.com/npm/npm-registry-couchapp</a>.</p>
<p>The registry URL used is determined by the scope of the package (see
<code><a href="../misc/npm-scope.html">npm-scope(7)</a></code>). If no scope is specified, the default registry is used, which is
supplied by the <code>registry</code> config parameter.  See <code><a href="../cli/npm-config.html">npm-config(1)</a></code>,
<code><a href="../files/npmrc.html">npmrc(5)</a></code>, and <code><a href="../misc/npm-config.html">npm-config(7)</a></code> for more on managing npm&#39;s configuration.</p>
<h2 id="can-i-run-my-own-private-registry-">Can I run my own private registry?</h2>
<p>Yes!</p>
<p>The easiest way is to replicate the couch database, and use the same (or
similar) design doc to implement the APIs.</p>
<p>If you set up continuous replication from the official CouchDB, and then
set your internal CouchDB as the registry config, then you&#39;ll be able
to read any published packages, in addition to your private ones, and by
default will only publish internally. </p>
<p>If you then want to publish a package for the whole world to see, you can
simply override the <code>--registry</code> option for that <code>publish</code> command.</p>
<h2 id="i-don-t-want-my-package-published-in-the-official-registry-it-s-private-">I don&#39;t want my package published in the official registry. It&#39;s private.</h2>
<p>Set <code>&quot;private&quot;: true</code> in your package.json to prevent it from being
published at all, or
<code>&quot;publishConfig&quot;:{&quot;registry&quot;:&quot;http://my-internal-registry.local&quot;}</code>
to force it to be published only to your internal registry.</p>
<p>See <code><a href="../files/package.json.html">package.json(5)</a></code> for more info on what goes in the package.json file.</p>
<h2 id="will-you-replicate-from-my-registry-into-the-public-one-">Will you replicate from my registry into the public one?</h2>
<p>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.</p>
<h2 id="do-i-have-to-use-couchdb-to-build-a-registry-that-npm-can-talk-to-">Do I have to use couchdb to build a registry that npm can talk to?</h2>
<p>No, but it&#39;s way easier.  Basically, yes, you do, or you have to
effectively implement the entire CouchDB API anyway.</p>
<h2 id="is-there-a-website-or-something-to-see-package-docs-and-such-">Is there a website or something to see package docs and such?</h2>
<p>Yes, head over to <a href="https://npmjs.com/">https://npmjs.com/</a></p>
<h2 id="see-also">SEE ALSO</h2>
<ul>
<li><a href="../cli/npm-config.html">npm-config(1)</a></li>
<li><a href="../misc/npm-config.html">npm-config(7)</a></li>
<li><a href="../files/npmrc.html">npmrc(5)</a></li>
<li><a href="../misc/npm-developers.html">npm-developers(7)</a></li>
<li><a href="../misc/npm-disputes.html">npm-disputes(7)</a></li>
</ul>