<!doctype html>
<html>
  <title>npm-prune</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-prune.html">npm-prune</a></h1> <p>Remove extraneous packages</p>

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

<pre><code>npm.commands.prune([packages,] callback)</code></pre>

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

<p>This command removes &quot;extraneous&quot; packages.</p>

<p>The first parameter is optional, and it specifies packages to be removed.</p>

<p>No packages are specified, then all packages will be checked.</p>

<p>Extraneous packages are packages that are not listed on the parent
package&#39;s dependencies list.</p>
</div>
<p id="footer">npm-prune &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>
