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

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

<pre><code>npm prune [&lt;name&gt; [&lt;name ...]]
npm prune [&lt;name&gt; [&lt;name ...]] [--production]</code></pre>

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

<p>This command removes &quot;extraneous&quot; packages.  If a package name is
provided, then only packages matching one of the supplied names are
removed.</p>

<p>Extraneous packages are packages that are not listed on the parent
package&#39;s dependencies list.</p>

<p>If the <code>--production</code> flag is specified, this command will remove the
packages specified in your <code>devDependencies</code>.</p>

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

<ul><li><a href="../cli/npm-rm.html">npm-rm(1)</a></li><li><a href="../files/npm-folders.html">npm-folders(5)</a></li><li><a href="../cli/npm-ls.html">npm-ls(1)</a></li></ul>
</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>
