<!doctype html>
<html>
  <title>npm-commands</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="../api/npm-commands.html">npm-commands</a></h1> <p>npm commands</p>

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

<pre><code>npm.commands[&lt;command&gt;](args, callback)</code></pre>

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

<p>npm comes with a full set of commands, and each of the commands takes a
similar set of arguments.</p>

<p>In general, all commands on the command object take an <strong>array</strong> of positional
argument <strong>strings</strong>. The last argument to any function is a callback. Some
commands are special and take other optional arguments.</p>

<p>All commands have their own man page. See <code>man npm-&lt;command&gt;</code> for command-line
usage, or <code>man 3 npm-&lt;command&gt;</code> for programmatic usage.</p>

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

<ul><li><a href="../misc/npm-index.html">npm-index(7)</a></li></ul>
</div>
<p id="footer">npm-commands &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>
