<!doctype html>
< html >
< title > faq< / 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 = "../doc/faq.html" > faq< / a > < / h1 > < p > Frequently Asked Questions< / p >
< h2 id = "Where-can-I-find-these-docs-in-HTML" > Where can I find these docs in HTML?< / h2 >
< p > < a href = "https://npmjs.org/doc/" > https://npmjs.org/doc/< / a > , or run:< / p >
< pre > < code > npm config set viewer browser< / code > < / pre >
< p > to open these documents in your default web browser rather than < code > man< / code > .< / p >
< h2 id = "It-didn-t-work" > It didn' t work.< / h2 >
< p > That' s not really a question.< / p >
< h2 id = "Why-didn-t-it-work" > Why didn' t it work?< / h2 >
< p > I don' t know yet.< / p >
< p > Read the error output, and if you can' t figure out what it means,
do what it says and post a bug with all the information it asks for.< / p >
< h2 id = "Where-does-npm-put-stuff" > Where does npm put stuff?< / h2 >
< p > See < code > < a href = "../doc/folders.html" > folders(1)< / a > < / code > < / p >
< p > tl;dr:< / p >
< ul > < li > Use the < code > npm root< / code > command to see where modules go, and the < code > npm bin< / code >
command to see where executables go< / li > < li > Global installs are different from local installs. If you install
something with the < code > -g< / code > flag, then its executables go in < code > npm bin -g< / code >
and its modules go in < code > npm root -g< / code > .< / li > < / ul >
< h2 id = "How-do-I-install-something-on-my-computer-in-a-central-location" > How do I install something on my computer in a central location?< / h2 >
< p > Install it globally by tacking < code > -g< / code > or < code > --global< / code > to the command. (This
is especially important for command line utilities that need to add
their bins to the global system < code > PATH< / code > .)< / p >
< h2 id = "I-installed-something-globally-but-I-can-t-require-it" > I installed something globally, but I can' t < code > require()< / code > it< / h2 >
< p > Install it locally.< / p >
< p > The global install location is a place for command-line utilities
to put their bins in the system < code > PATH< / code > . It' s not for use with < code > require()< / code > .< / p >
< p > If you < code > require()< / code > a module in your code, then that means it' s a
dependency, and a part of your program. You need to install it locally
in your program.< / p >
< h2 id = "Why-can-t-npm-just-put-everything-in-one-place-like-other-package-managers" > Why can' t npm just put everything in one place, like other package managers?< / h2 >
< p > Not every change is an improvement, but every improvement is a change.
This would be like asking git to do network IO for every commit. It' s
not going to happen, because it' s a terrible idea that causes more
problems than it solves.< / p >
< p > It is much harder to avoid dependency conflicts without nesting
dependencies. This is fundamental to the way that npm works, and has
proven to be an extremely successful approach. See < code > < a href = "../doc/folders.html" > folders(1)< / a > < / code > for
more details.< / p >
< p > If you want a package to be installed in one place, and have all your
programs reference the same copy of it, then use the < code > npm link< / code > command.
That' s what it' s for. Install it globally, then link it into each
program that uses it.< / p >
< h2 id = "Whatever-I-really-want-the-old-style-everything-global-style" > Whatever, I really want the old style ' everything global' style.< / h2 >
< p > Write your own package manager, then. It' s not that hard.< / p >
< p > npm will not help you do something that is known to be a bad idea.< / p >
< h2 id = "Should-I-check-my-node_modules-folder-into-git" > Should I check my < code > node_modules< / code > folder into git?< / h2 >
< p > Mikeal Rogers answered this question very well:< / p >
< p > < a href = "http://www.mikealrogers.com/posts/nodemodules-in-git.html" > http://www.mikealrogers.com/posts/nodemodules-in-git.html< / a > < / p >
< p > tl;dr< / p >
< ul > < li > Check < code > node_modules< / code > into git for things you < strong > deploy< / strong > , such as
websites and apps.< / li > < li > Do not check < code > node_modules< / code > into git for libraries and modules
intended to be reused.< / li > < li > Use npm to manage dependencies in your dev environment, but not in
your deployment scripts.< / li > < / ul >
< h2 id = "Is-it-npm-or-NPM-or-Npm" > Is it ' npm' or ' NPM' or ' Npm' ?< / h2 >
< p > npm should never be capitalized unless it is being displayed in a
location that is customarily all-caps (such as the title of man pages.)< / p >
< h2 id = "If-npm-is-an-acronym-why-is-it-never-capitalized" > If ' npm' is an acronym, why is it never capitalized?< / h2 >
< p > Contrary to the belief of many, " npm" is not in fact an abbreviation for
" Node Package Manager" . It is a recursive bacronymic abbreviation for
" npm is not an acronym" . (If it was " ninaa" , then it would be an
acronym, and thus incorrectly named.)< / p >
< p > " NPM" , however, < em > is< / em > an acronym (more precisely, a capitonym) for the
National Association of Pastoral Musicians. You can learn more
about them at < a href = "http://npm.org/" > http://npm.org/< / a > .< / p >
< p > In software, " NPM" is a Non-Parametric Mapping utility written by
Chris Rorden. You can analyze pictures of brains with it. Learn more
about the (capitalized) NPM program at < a href = "http://www.cabiatl.com/mricro/npm/" > http://www.cabiatl.com/mricro/npm/< / a > .< / p >
< p > The first seed that eventually grew into this flower was a bash utility
named " pm" , which was a shortened descendent of " pkgmakeinst" , a
bash function that was used to install various different things on different
platforms, most often using Yahoo' s < code > yinst< / code > . If < code > npm< / code > was ever an
acronym for anything, it was < code > node pm< / code > or maybe < code > new pm< / code > .< / p >
< p > So, in all seriousness, the " npm" project is named after its command-line
utility, which was organically selected to be easily typed by a right-handed
programmer using a US QWERTY keyboard layout, ending with the
right-ring-finger in a postition to type the < code > -< / code > key for flags and
other command-line arguments. That command-line utility is always
lower-case, though it starts most sentences it is a part of.< / p >
< h2 id = "How-do-I-list-installed-packages" > How do I list installed packages?< / h2 >
< p > < code > npm ls< / code > < / p >
< h2 id = "How-do-I-search-for-packages" > How do I search for packages?< / h2 >
< p > < code > npm search< / code > < / p >
< p > Arguments are greps. < code > npm search jsdom< / code > shows jsdom packages.< / p >
< h2 id = "How-do-I-update-npm" > How do I update npm?< / h2 >
< pre > < code > npm update npm -g< / code > < / pre >
< p > You can also update all outdated local packages by doing < code > npm update< / code > without
any arguments, or global packages by doing < code > npm update -g< / code > .< / p >
< p > Occasionally, the version of npm will progress such that the current
version cannot be properly installed with the version that you have
installed already. (Consider, if there is ever a bug in the < code > update< / code >
command.)< / p >
< p > In those cases, you can do this:< / p >
< pre > < code > curl https://npmjs.org/install.sh | sh< / code > < / pre >
< h2 id = "What-is-a-package" > What is a < code > package< / code > ?< / h2 >
< p > A package is:< / p >
< ul > < li > a) a folder containing a program described by a package.json file< / li > < li > b) a gzipped tarball containing (a)< / li > < li > c) a url that resolves to (b)< / li > < li > d) a < code > < name> @< version> < / code > that is published on the registry with (c)< / li > < li > e) a < code > < name> @< tag> < / code > that points to (d)< / li > < li > f) a < code > < name> < / code > that has a " latest" tag satisfying (e)< / li > < li > g) a < code > git< / code > url that, when cloned, results in (a).< / li > < / ul >
< p > Even if you never publish your package, you can still get a lot of
benefits of using npm if you just want to write a node program (a), and
perhaps if you also want to be able to easily install it elsewhere
after packing it up into a tarball (b).< / p >
< p > Git urls can be of the form:< / p >
< pre > < code > git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish< / code > < / pre >
< p > The < code > commit-ish< / code > can be any tag, sha, or branch which can be supplied as
an argument to < code > git checkout< / code > . The default is < code > master< / code > .< / p >
< h2 id = "How-do-I-install-node-with-npm" > How do I install node with npm?< / h2 >
< p > You don' t. Try one of these:< / p >
< ul > < li > < a href = "https://github.com/isaacs/nave" > https://github.com/isaacs/nave< / a > < / li > < li > < a href = "https://github.com/visionmedia/n" > https://github.com/visionmedia/n< / a > < / li > < li > < a href = "https://github.com/creationix/nvm" > https://github.com/creationix/nvm< / a > < / li > < / ul >
< h2 id = "How-can-I-use-npm-for-development" > How can I use npm for development?< / h2 >
< p > See < code > < a href = "../doc/developers.html" > developers(1)< / a > < / code > and < code > < a href = "../doc/json.html" > json(1)< / a > < / code > .< / p >
< p > You' ll most likely want to < code > npm link< / code > your development folder. That' s
awesomely handy.< / p >
< p > To set up your own private registry, check out < code > < a href = "../doc/registry.html" > registry(1)< / a > < / code > .< / p >
< h2 id = "Can-I-list-a-url-as-a-dependency" > Can I list a url as a dependency?< / h2 >
< p > Yes. It should be a url to a gzipped tarball containing a single folder
that has a package.json in its root, or a git url.
(See " what is a package?" above.)< / p >
< h2 id = "How-do-I-symlink-to-a-dev-folder-so-I-don-t-have-to-keep-re-installing" > How do I symlink to a dev folder so I don' t have to keep re-installing?< / h2 >
< p > See < code > < a href = "../doc/link.html" > link(1)< / a > < / code > < / p >
< h2 id = "The-package-registry-website-What-is-that-exactly" > The package registry website. What is that exactly?< / h2 >
< p > See < code > < a href = "../doc/registry.html" > registry(1)< / a > < / code > .< / p >
< h2 id = "What-s-up-with-the-insecure-channel-warnings" > What' s up with the insecure channel warnings?< / h2 >
< p > Until node 0.4.10, there were problems sending big files over HTTPS. That
means that publishes go over HTTP by default in those versions of node.< / p >
< h2 id = "I-forgot-my-password-and-can-t-publish-How-do-I-reset-it" > I forgot my password, and can' t publish. How do I reset it?< / h2 >
< p > Go to < a href = "https://npmjs.org/forgot" > https://npmjs.org/forgot< / a > .< / p >
< h2 id = "I-get-ECONNREFUSED-a-lot-What-s-up" > I get ECONNREFUSED a lot. What' s up?< / h2 >
< p > Either the registry is down, or node' s DNS isn' t able to reach out.< / p >
< p > To check if the registry is down, open up < a href = "http://registry.npmjs.org/" > http://registry.npmjs.org/< / a >
in a web browser. This will also tell you if you are just unable to
access the internet for some reason.< / p >
< p > If the registry IS down, let me know by emailing or posting an issue.
We' ll have someone kick it or something.< / p >
< h2 id = "Why-no-namespaces" > Why no namespaces?< / h2 >
< p > Please see this discussion: < a href = "https://github.com/isaacs/npm/issues/798" > https://github.com/isaacs/npm/issues/798< / a > < / p >
< p > tl;dr - It doesn' t actually make things better, and can make them worse.< / p >
< p > If you want to namespace your own packages, you may: simply use the
< code > -< / code > character to separate the names. npm is a mostly anarchic system.
There is not sufficient need to impose namespace rules on everyone.< / p >
< h2 id = "Who-does-npm" > Who does npm?< / h2 >
< p > < code > npm view npm author< / code > < / p >
< p > < code > npm view npm contributors< / code > < / p >
< h2 id = "I-have-a-question-or-request-not-addressed-here-Where-should-I-put-it" > I have a question or request not addressed here. Where should I put it?< / h2 >
< p > Discuss it on the mailing list, or post an issue.< / p >
< ul > < li > < a href = "mailto:npm-@googlegroups.com" > npm-@googlegroups.com< / a > < / li > < li > < a href = "https://github.com/isaacs/npm/issues" > https://github.com/isaacs/npm/issues< / a > < / li > < / ul >
< h2 id = "Why-does-npm-hate-me" > Why does npm hate me?< / h2 >
< p > npm is not capable of hatred. It loves everyone, especially you.< / p >
< h2 id = "SEE-ALSO" > SEE ALSO< / h2 >
< ul > < li > < a href = "../doc/npm.html" > npm(1)< / a > < / li > < li > < a href = "../doc/developers.html" > developers(1)< / a > < / li > < li > < a href = "../doc/json.html" > json(1)< / a > < / li > < li > < a href = "../doc/config.html" > config(1)< / a > < / li > < li > < a href = "../doc/folders.html" > folders(1)< / a > < / li > < / ul >
< / div >
< p id = "footer" > faq — npm@1.2.2< / 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 >
< / body > < / html >