| <!doctype html> |
| <html> |
| <title>npm-registry</title> |
| <meta http-equiv="content-type" value="text/html;utf-8"> |
| <link rel="stylesheet" type="text/css" href="../../static/style.css"> |
| |
| <body> |
| <div id="wrapper"> |
| <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'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 at |
| <a href="http://isaacs.iriscouch.com/registry">http://isaacs.iriscouch.com/registry</a>. The code for the couchapp is |
| available at <a href="http://github.com/isaacs/npmjs.org">http://github.com/isaacs/npmjs.org</a>. npm user accounts |
| are CouchDB users, stored in the <a href="http://isaacs.iriscouch.com/_users">http://isaacs.iriscouch.com/_users</a> |
| database.</p> |
| |
| <p>The registry URL 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'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'll be able |
| to read any published packages, in addition to your private ones, and by |
| default will only publish internally. If you then want to publish a |
| package for the whole world to see, you can simply override the |
| <code>--registry</code> config for that command.</p> |
| |
| <h2 id="I-don-t-want-my-package-published-in-the-official-registry-It-s-private">I don't want my package published in the official registry. It's private.</h2> |
| |
| <p>Set <code>"private": true</code> in your package.json to prevent it from being |
| published at all, or |
| <code>"publishConfig":{"registry":"http://my-internal-registry.local"}</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'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.org/">https://npmjs.org/</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> |
| </div> |
| <p id="footer">npm-registry — npm@1.3.21</p> |
| <script> |
| ;(function () { |
| var wrapper = document.getElementById("wrapper") |
| var els = Array.prototype.slice.call(wrapper.getElementsByTagName("*"), 0) |
| .filter(function (el) { |
| return el.parentNode === wrapper |
| && el.tagName.match(/H[1-6]/) |
| && el.id |
| }) |
| var l = 2 |
| , toc = document.createElement("ul") |
| toc.innerHTML = els.map(function (el) { |
| var i = el.tagName.charAt(1) |
| , out = "" |
| while (i > l) { |
| out += "<ul>" |
| l ++ |
| } |
| while (i < l) { |
| out += "</ul>" |
| l -- |
| } |
| out += "<li><a href='#" + el.id + "'>" + |
| ( el.innerText || el.text || el.innerHTML) |
| + "</a>" |
| return out |
| }).join("\n") |
| toc.id = "toc" |
| document.body.appendChild(toc) |
| })() |
| </script> |