<!doctype html>
<html>
  <title>npm-owner</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="../cli/npm-owner.html">npm-owner</a></h1> <p>Manage package owners</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<pre><code>npm owner ls &lt;package name&gt;
npm owner add &lt;user&gt; &lt;package name&gt;
npm owner rm &lt;user&gt; &lt;package name&gt;</code></pre>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Manage ownership of published packages.</p>

<ul><li>ls:
List all the users who have access to modify a package and push new versions.
Handy when you need to know who to bug for help.</li><li>add:
Add a new user as a maintainer of a package.  This user is enabled to modify
metadata, publish new versions, and add other owners.</li><li>rm:
Remove a user from the package owner list.  This immediately revokes their
privileges.</li></ul>

<p>Note that there is only one level of access.  Either you can modify a package,
or you can&#39;t.  Future versions may contain more fine-grained access levels, but
that is not implemented at this time.</p>

<h2 id="SEE-ALSO">SEE ALSO</h2>

<ul><li><a href="../cli/npm-publish.html">npm-publish(1)</a></li><li><a href="../misc/npm-registry.html">npm-registry(7)</a></li><li><a href="../cli/npm-adduser.html">npm-adduser(1)</a></li><li><a href="../misc/npm-disputes.html">npm-disputes(7)</a></li></ul>
</div>
<p id="footer">npm-owner &mdash; 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>
