| <!doctype html> |
| <html> |
| <title>README</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.html">npm</a></h1> <p>node package manager</p> |
| |
| <h2 id="SYNOPSIS">SYNOPSIS</h2> |
| |
| <p>This is just enough info to get you up and running.</p> |
| |
| <p>Much more info available via <code>npm help</code> once it's installed.</p> |
| |
| <h2 id="IMPORTANT">IMPORTANT</h2> |
| |
| <p><strong>You need node v0.8 or higher to run this program.</strong></p> |
| |
| <p>To install an old <strong>and unsupported</strong> version of npm that works on node 0.3 |
| and prior, clone the git repo and dig through the old tags and branches.</p> |
| |
| <h2 id="Super-Easy-Install">Super Easy Install</h2> |
| |
| <p>npm comes with node now.</p> |
| |
| <h3 id="Windows-Computers">Windows Computers</h3> |
| |
| <p>Get the MSI. npm is in it.</p> |
| |
| <h3 id="Apple-Macintosh-Computers">Apple Macintosh Computers</h3> |
| |
| <p>Get the pkg. npm is in it.</p> |
| |
| <h3 id="Other-Sorts-of-Unices">Other Sorts of Unices</h3> |
| |
| <p>Run <code>make install</code>. npm will be installed with node.</p> |
| |
| <p>If you want a more fancy pants install (a different version, customized |
| paths, etc.) then read on.</p> |
| |
| <h2 id="Fancy-Install-Unix">Fancy Install (Unix)</h2> |
| |
| <p>There's a pretty robust install script at |
| <a href="https://npmjs.org/install.sh">https://npmjs.org/install.sh</a>. You can download that and run it.</p> |
| |
| <h3 id="Slightly-Fancier">Slightly Fancier</h3> |
| |
| <p>You can set any npm configuration params with that script:</p> |
| |
| <pre><code>npm_config_prefix=/some/path sh install.sh</code></pre> |
| |
| <p>Or, you can run it in uber-debuggery mode:</p> |
| |
| <pre><code>npm_debug=1 sh install.sh</code></pre> |
| |
| <h3 id="Even-Fancier">Even Fancier</h3> |
| |
| <p>Get the code with git. Use <code>make</code> to build the docs and do other stuff. |
| If you plan on hacking on npm, <code>make link</code> is your friend.</p> |
| |
| <p>If you've got the npm source code, you can also semi-permanently set |
| arbitrary config keys using the <code>./configure --key=val ...</code>, and then |
| run npm commands by doing <code>node cli.js <cmd> <args></code>. (This is helpful |
| for testing, or running stuff without actually installing npm itself.)</p> |
| |
| <h2 id="Fancy-Windows-Install">Fancy Windows Install</h2> |
| |
| <p>You can download a zip file from <a href="https://npmjs.org/dist/">https://npmjs.org/dist/</a>, and unpack it |
| in the same folder where node.exe lives.</p> |
| |
| <p>If that's not fancy enough for you, then you can fetch the code with |
| git, and mess with it directly.</p> |
| |
| <h2 id="Installing-on-Cygwin">Installing on Cygwin</h2> |
| |
| <p>No.</p> |
| |
| <h2 id="Permissions-when-Using-npm-to-Install-Other-Stuff">Permissions when Using npm to Install Other Stuff</h2> |
| |
| <p><strong>tl;dr</strong></p> |
| |
| <ul><li>Use <code>sudo</code> for greater safety. Or don't, if you prefer not to.</li><li>npm will downgrade permissions if it's root before running any build |
| scripts that package authors specified.</li></ul> |
| |
| <h3 id="More-details">More details...</h3> |
| |
| <p>As of version 0.3, it is recommended to run npm as root. |
| This allows npm to change the user identifier to the <code>nobody</code> user prior |
| to running any package build or test commands.</p> |
| |
| <p>If you are not the root user, or if you are on a platform that does not |
| support uid switching, then npm will not attempt to change the userid.</p> |
| |
| <p>If you would like to ensure that npm <strong>always</strong> runs scripts as the |
| "nobody" user, and have it fail if it cannot downgrade permissions, then |
| set the following configuration param:</p> |
| |
| <pre><code>npm config set unsafe-perm false</code></pre> |
| |
| <p>This will prevent running in unsafe mode, even as non-root users.</p> |
| |
| <h2 id="Uninstalling">Uninstalling</h2> |
| |
| <p>So sad to see you go.</p> |
| |
| <pre><code>sudo npm uninstall npm -g</code></pre> |
| |
| <p>Or, if that fails,</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've installed.</p> |
| |
| <p>If you would like to remove all the packages that you have installed, |
| then you can use the <code>npm ls</code> command to find them, and then <code>npm rm</code> to |
| remove them.</p> |
| |
| <p>To remove cruft left behind by npm 0.x, you can use the included |
| <code>clean-old.sh</code> script file. You can run it conveniently like this:</p> |
| |
| <pre><code>npm explore npm -g -- sh scripts/clean-old.sh</code></pre> |
| |
| <p>npm uses two configuration files, one for per-user configs, and another |
| for global (every-user) configs. You can view them by doing:</p> |
| |
| <pre><code>npm config get userconfig # defaults to ~/.npmrc |
| npm config get globalconfig # defaults to /usr/local/etc/npmrc</code></pre> |
| |
| <p>Uninstalling npm does not remove configuration files by default. You |
| must remove them yourself manually if you want them gone. Note that |
| this means that future npm installs will not remember the settings that |
| you have chosen.</p> |
| |
| <h2 id="Using-npm-Programmatically">Using npm Programmatically</h2> |
| |
| <p>If you would like to use npm programmatically, you can do that. |
| It's not very well documented, but it <em>is</em> rather simple.</p> |
| |
| <p>Most of the time, unless you actually want to do all the things that |
| npm does, you should try using one of npm's dependencies rather than |
| using npm itself, if possible.</p> |
| |
| <p>Eventually, npm will be just a thin cli wrapper around the modules |
| that it depends on, but for now, there are some things that you must |
| use npm itself to do.</p> |
| |
| <pre><code>var npm = require("npm") |
| npm.load(myConfigObject, function (er) { |
| if (er) return handlError(er) |
| npm.commands.install(["some", "args"], function (er, data) { |
| if (er) return commandFailed(er) |
| // command succeeded, and data might have some info |
| }) |
| npm.on("log", function (message) { .... }) |
| })</code></pre> |
| |
| <p>The <code>load</code> function takes an object hash of the command-line configs. |
| The various <code>npm.commands.<cmd></code> functions take an <strong>array</strong> of |
| positional argument <strong>strings</strong>. The last argument to any |
| <code>npm.commands.<cmd></code> function is a callback. Some commands take other |
| optional arguments. Read the source.</p> |
| |
| <p>You cannot set configs individually for any single npm function at this |
| time. Since <code>npm</code> is a singleton, any call to <code>npm.config.set</code> will |
| change the value for <em>all</em> npm commands in that process.</p> |
| |
| <p>See <code>./bin/npm-cli.js</code> for an example of pulling config values off of the |
| command line arguments using nopt. You may also want to check out <code>npm |
| help config</code> to learn about all the options you can set there.</p> |
| |
| <h2 id="More-Docs">More Docs</h2> |
| |
| <p>Check out the <a href="https://npmjs.org/doc/">docs</a>, |
| especially the <a href="https://npmjs.org/doc/faq.html">faq</a>.</p> |
| |
| <p>You can use the <code>npm help</code> command to read any of them.</p> |
| |
| <p>If you're a developer, and you want to use npm to publish your program, |
| you should <a href="https://npmjs.org/doc/developers.html">read this</a></p> |
| |
| <h2 id="Legal-Stuff">Legal Stuff</h2> |
| |
| <p>"npm" and "the npm registry" are owned by Isaac Z. Schlueter. |
| All rights reserved. See the included LICENSE file for more details.</p> |
| |
| <p>"Node.js" and "node" are trademarks owned by Joyent, Inc. npm is not |
| officially part of the Node.js project, and is neither owned by nor |
| officially affiliated with Joyent, Inc.</p> |
| |
| <p>The packages in the npm registry are not part of npm itself, and are the |
| sole property of their respective maintainers. While every effort is |
| made to ensure accountability, there is absolutely no guarantee, |
| warrantee, or assertion made as to the quality, fitness for a specific |
| purpose, or lack of malice in any given npm package. Modules |
| published on the npm registry are not affiliated with or endorsed by |
| Joyent, Inc., Isaac Z. Schlueter, Ryan Dahl, or the Node.js project.</p> |
| |
| <p>If you have a complaint about a package in the npm registry, and cannot |
| resolve it with the package owner, please express your concerns to |
| Isaac Z. Schlueter at <a href="mailto:i@izs.me">i@izs.me</a>.</p> |
| |
| <h3 id="In-plain-english">In plain english</h3> |
| |
| <p>This is mine; not my employer's, not Node's, not Joyent's, not Ryan |
| Dahl's.</p> |
| |
| <p>If you publish something, it's yours, and you are solely accountable |
| for it. Not me, not Node, not Joyent, not Ryan Dahl.</p> |
| |
| <p>If other people publish something, it's theirs. Not mine, not Node's, |
| not Joyent's, not Ryan Dahl's.</p> |
| |
| <p>Yes, you can publish something evil. It will be removed promptly if |
| reported, and we'll lose respect for you. But there is no vetting |
| process for published modules.</p> |
| |
| <p>If this concerns you, inspect the source before using packages.</p> |
| |
| <h2 id="BUGS">BUGS</h2> |
| |
| <p>When you find issues, please report them:</p> |
| |
| <ul><li>web: |
| <a href="https://github.com/isaacs/npm/issues">https://github.com/isaacs/npm/issues</a></li><li>email: |
| <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li></ul> |
| |
| <p>Be sure to include <em>all</em> of the output from the npm command that didn't work |
| as expected. The <code>npm-debug.log</code> file is also helpful to provide.</p> |
| |
| <p>You can also look for isaacs in #node.js on irc://irc.freenode.net. He |
| will no doubt tell you to put the output in a gist or email.</p> |
| |
| <h2 id="SEE-ALSO">SEE ALSO</h2> |
| |
| <ul><li><a href="cli/npm.html">npm(1)</a></li><li><a href="misc/npm-faq.html">npm-faq(7)</a></li><li><a href="cli/npm-help.html">npm-help(1)</a></li><li><a href="misc/npm-index.html">npm-index(7)</a></li></ul> |
| </div> |
| <p id="footer"><a href="../doc/README.html">README</a> — 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> |