mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
5.4 KiB
132 lines
5.4 KiB
<!doctype html>
|
|
<html>
|
|
<title>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="../doc/registry.html">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="../doc/config.html">config(1)</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="../doc/json.html">json(1)</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.</p>
|
|
|
|
<h2 id="I-published-something-elsewhere-and-want-to-tell-the-npm-registry-about-it">I published something elsewhere, and want to tell the npm registry about it.</h2>
|
|
|
|
<p>That is supported, but not using the npm client. You'll have to get
|
|
your hands dirty and do some HTTP. The request looks something like
|
|
this:</p>
|
|
|
|
<pre><code>PUT /my-foreign-package
|
|
content-type:application/json
|
|
accept:application/json
|
|
authorization:Basic $base_64_encoded
|
|
|
|
{ "name":"my-foreign-package"
|
|
, "maintainers":["owner","usernames"]
|
|
, "description":"A package that is hosted elsewhere"
|
|
, "keywords":["nih","my cheese smells the best"]
|
|
, "url":"http://my-different-registry.com/blerg/my-local-package"
|
|
}</code></pre>
|
|
|
|
<p>(Keywords and description are optional, but recommended. Name,
|
|
maintainers, and url are required.)</p>
|
|
|
|
<p>Then, when a user tries to install "my-foreign-package", it'll redirect
|
|
to your registry. If that doesn't resolve to a valid package entry,
|
|
then it'll fail, so please make sure that you understand the spec, and
|
|
ask for help on the <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a> mailing list.</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>No, but such a thing is planned, and a tiny bit developed.</p>
|
|
|
|
<p>Stay tuned!</p>
|
|
|
|
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
|
|
|
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
|
|
</div>
|
|
<p id="footer">registry — npm@1.1.48</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>
|
|
</body></html>
|
|
|