<!doctype html>
<html>
  <title>removing-npm</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-removal.html">npm-removal</a></h1> <p>Cleaning the Slate</p>

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

<p>So sad to see you go.</p>

<pre><code>sudo npm uninstall npm -g</code></pre>

<p>Or, if that fails, get the npm source code, and do:</p>

<pre><code>sudo make uninstall</code></pre>

<h2 id="More-Severe-Uninstalling">More Severe Uninstalling</h2>

<p>Usually, the above instructions are sufficient.  That will remove
npm, but leave behind anything you&#39;ve installed.</p>

<p>If that doesn&#39;t work, or if you require more drastic measures,
continue reading.</p>

<p>Note that this is only necessary for globally-installed packages.  Local
installs are completely contained within a project&#39;s <code>node_modules</code>
folder.  Delete that folder, and everything is gone (unless a package&#39;s
install script is particularly ill-behaved).</p>

<p>This assumes that you installed node and npm in the default place.  If
you configured node with a different <code>--prefix</code>, or installed npm with a
different prefix setting, then adjust the paths accordingly, replacing
<code>/usr/local</code> with your install prefix.</p>

<p>To remove everything npm-related manually:</p>

<pre><code>rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*</code></pre>

<p>If you installed things <em>with</em> npm, then your best bet is to uninstall
them with npm first, and then install them again once you have a
proper install.  This can help find any symlinks that are lying
around:</p>

<pre><code>ls -laF /usr/local/{lib/node{,/.npm},bin,share/man} | grep npm</code></pre>

<p>Prior to version 0.3, npm used shim files for executables and node
modules.  To track those down, you can do the following:</p>

<pre><code>find /usr/local/{lib/node,bin} -exec grep -l npm \{\} \; ;</code></pre>

<p>(This is also in the <a href="../../doc/README.html">README</a> file.)</p>

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

<ul><li><a href="../../doc/README.html">README</a></li><li><a href="../cli/npm-rm.html">npm-rm(1)</a></li><li><a href="../cli/npm-prune.html">npm-prune(1)</a></li></ul>
</div>
<p id="footer">removing-npm &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>
