npm@1.1.0-beta-10
authorisaacs <i@izs.me>
Wed, 4 Jan 2012 23:09:13 +0000 (15:09 -0800)
committerisaacs <i@izs.me>
Thu, 5 Jan 2012 19:22:49 +0000 (11:22 -0800)
204 files changed:
deps/npm/Makefile
deps/npm/doc/cli/disputes.md [new file with mode: 0644]
deps/npm/doc/cli/faq.md
deps/npm/doc/cli/index.md
deps/npm/doc/cli/owner.md
deps/npm/doc/cli/registry.md
deps/npm/html/api/bin.html
deps/npm/html/api/bugs.html
deps/npm/html/api/commands.html
deps/npm/html/api/config.html
deps/npm/html/api/deprecate.html
deps/npm/html/api/docs.html
deps/npm/html/api/edit.html
deps/npm/html/api/explore.html
deps/npm/html/api/help-search.html
deps/npm/html/api/init.html
deps/npm/html/api/install.html
deps/npm/html/api/link.html
deps/npm/html/api/load.html
deps/npm/html/api/ls.html
deps/npm/html/api/npm.html
deps/npm/html/api/outdated.html
deps/npm/html/api/owner.html
deps/npm/html/api/pack.html
deps/npm/html/api/prefix.html
deps/npm/html/api/prune.html
deps/npm/html/api/publish.html
deps/npm/html/api/rebuild.html
deps/npm/html/api/restart.html
deps/npm/html/api/root.html
deps/npm/html/api/run-script.html
deps/npm/html/api/search.html
deps/npm/html/api/start.html
deps/npm/html/api/stop.html
deps/npm/html/api/submodule.html
deps/npm/html/api/tag.html
deps/npm/html/api/test.html
deps/npm/html/api/uninstall.html
deps/npm/html/api/unpublish.html
deps/npm/html/api/update.html
deps/npm/html/api/version.html
deps/npm/html/api/view.html
deps/npm/html/api/whoami.html
deps/npm/html/doc/README.html
deps/npm/html/doc/adduser.html
deps/npm/html/doc/bin.html
deps/npm/html/doc/bugs.html
deps/npm/html/doc/build.html
deps/npm/html/doc/bundle.html
deps/npm/html/doc/cache.html
deps/npm/html/doc/changelog.html
deps/npm/html/doc/coding-style.html
deps/npm/html/doc/completion.html
deps/npm/html/doc/config.html
deps/npm/html/doc/deprecate.html
deps/npm/html/doc/developers.html
deps/npm/html/doc/disputes.html [new file with mode: 0644]
deps/npm/html/doc/docs.html
deps/npm/html/doc/edit.html
deps/npm/html/doc/explore.html
deps/npm/html/doc/faq.html
deps/npm/html/doc/folders.html
deps/npm/html/doc/help-search.html
deps/npm/html/doc/help.html
deps/npm/html/doc/index.html
deps/npm/html/doc/init.html
deps/npm/html/doc/install.html
deps/npm/html/doc/json.html
deps/npm/html/doc/link.html
deps/npm/html/doc/list.html
deps/npm/html/doc/npm.html
deps/npm/html/doc/outdated.html
deps/npm/html/doc/owner.html
deps/npm/html/doc/pack.html
deps/npm/html/doc/prefix.html
deps/npm/html/doc/prune.html
deps/npm/html/doc/publish.html
deps/npm/html/doc/rebuild.html
deps/npm/html/doc/registry.html
deps/npm/html/doc/removing-npm.html
deps/npm/html/doc/restart.html
deps/npm/html/doc/root.html
deps/npm/html/doc/run-script.html
deps/npm/html/doc/scripts.html
deps/npm/html/doc/search.html
deps/npm/html/doc/semver.html
deps/npm/html/doc/star.html
deps/npm/html/doc/start.html
deps/npm/html/doc/stop.html
deps/npm/html/doc/submodule.html
deps/npm/html/doc/tag.html
deps/npm/html/doc/test.html
deps/npm/html/doc/uninstall.html
deps/npm/html/doc/unpublish.html
deps/npm/html/doc/update.html
deps/npm/html/doc/version.html
deps/npm/html/doc/view.html
deps/npm/html/doc/whoami.html
deps/npm/lib/npm.js
deps/npm/lib/utils/cmd-shim.js
deps/npm/lib/utils/fetch.js
deps/npm/lib/utils/ini.js
deps/npm/lib/utils/npm-registry-client/get.js
deps/npm/lib/utils/read-json.js
deps/npm/man/man1/README.1
deps/npm/man/man1/adduser.1
deps/npm/man/man1/bin.1
deps/npm/man/man1/bugs.1
deps/npm/man/man1/build.1
deps/npm/man/man1/bundle.1
deps/npm/man/man1/cache.1
deps/npm/man/man1/changelog.1
deps/npm/man/man1/coding-style.1
deps/npm/man/man1/completion.1
deps/npm/man/man1/config.1
deps/npm/man/man1/deprecate.1
deps/npm/man/man1/developers.1
deps/npm/man/man1/disputes.1 [new file with mode: 0644]
deps/npm/man/man1/docs.1
deps/npm/man/man1/edit.1
deps/npm/man/man1/explore.1
deps/npm/man/man1/faq.1
deps/npm/man/man1/folders.1
deps/npm/man/man1/help-search.1
deps/npm/man/man1/help.1
deps/npm/man/man1/index.1
deps/npm/man/man1/init.1
deps/npm/man/man1/install.1
deps/npm/man/man1/json.1
deps/npm/man/man1/link.1
deps/npm/man/man1/list.1
deps/npm/man/man1/npm.1
deps/npm/man/man1/outdated.1
deps/npm/man/man1/owner.1
deps/npm/man/man1/pack.1
deps/npm/man/man1/prefix.1
deps/npm/man/man1/prune.1
deps/npm/man/man1/publish.1
deps/npm/man/man1/rebuild.1
deps/npm/man/man1/registry.1
deps/npm/man/man1/removing-npm.1
deps/npm/man/man1/restart.1
deps/npm/man/man1/root.1
deps/npm/man/man1/run-script.1
deps/npm/man/man1/scripts.1
deps/npm/man/man1/search.1
deps/npm/man/man1/semver.1
deps/npm/man/man1/star.1
deps/npm/man/man1/start.1
deps/npm/man/man1/stop.1
deps/npm/man/man1/submodule.1
deps/npm/man/man1/tag.1
deps/npm/man/man1/test.1
deps/npm/man/man1/uninstall.1
deps/npm/man/man1/unpublish.1
deps/npm/man/man1/update.1
deps/npm/man/man1/version.1
deps/npm/man/man1/view.1
deps/npm/man/man1/whoami.1
deps/npm/man/man3/bin.3
deps/npm/man/man3/bugs.3
deps/npm/man/man3/commands.3
deps/npm/man/man3/config.3
deps/npm/man/man3/deprecate.3
deps/npm/man/man3/docs.3
deps/npm/man/man3/edit.3
deps/npm/man/man3/explore.3
deps/npm/man/man3/help-search.3
deps/npm/man/man3/init.3
deps/npm/man/man3/install.3
deps/npm/man/man3/link.3
deps/npm/man/man3/load.3
deps/npm/man/man3/ls.3
deps/npm/man/man3/npm.3
deps/npm/man/man3/outdated.3
deps/npm/man/man3/owner.3
deps/npm/man/man3/pack.3
deps/npm/man/man3/prefix.3
deps/npm/man/man3/prune.3
deps/npm/man/man3/publish.3
deps/npm/man/man3/rebuild.3
deps/npm/man/man3/restart.3
deps/npm/man/man3/root.3
deps/npm/man/man3/run-script.3
deps/npm/man/man3/search.3
deps/npm/man/man3/start.3
deps/npm/man/man3/stop.3
deps/npm/man/man3/submodule.3
deps/npm/man/man3/tag.3
deps/npm/man/man3/test.3
deps/npm/man/man3/uninstall.3
deps/npm/man/man3/unpublish.3
deps/npm/man/man3/update.3
deps/npm/man/man3/version.3
deps/npm/man/man3/view.3
deps/npm/man/man3/whoami.3
deps/npm/node_modules/fstream/lib/link-writer.js
deps/npm/node_modules/fstream/package.json
deps/npm/node_modules/tar/lib/pack.js
deps/npm/node_modules/tar/package.json
deps/npm/package.json
deps/npm/scripts/install.sh
deps/npm/scripts/release.sh [new file with mode: 0644]
deps/npm/test/run.js

index 20686da..7d3e106 100644 (file)
@@ -108,18 +108,29 @@ version: link
        git add package.json &&\
        git ci -m v$(shell npm -v)
 
-publish: link
+publish: link doc
+       git tag -d v$(shell npm -v) || true
+       git push origin :v$(shell npm -v) || true
+       npm unpublish npm@$(shell npm -v) || true
        git tag -s -m v$(shell npm -v) v$(shell npm -v) &&\
        git push origin --tags &&\
        npm publish &&\
-       make doc-publish
+       npm tag npm@$(shell npm -v) $(shell npm -v | awk -F. '{print $$1 "." $$2}') &&\
+       make doc-publish &&\
+       make zip-publish
 
 docpublish: doc-publish
 doc-publish: doc
        rsync -vazu --stats --no-implied-dirs --delete html/doc/ npmjs.org:/var/www/npmjs.org/public/doc
        rsync -vazu --stats --no-implied-dirs --delete html/api/ npmjs.org:/var/www/npmjs.org/public/api
 
+zip-publish: release
+       scp release/*.zip npmjs.org:/var/www/npmjs.org/public/dist/
+
+release:
+       @bash scripts/release.sh
+
 sandwich:
        @[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || echo "make it yourself"
 
-.PHONY: all latest install dev link doc clean uninstall test man doc-publish doc-clean docclean docpublish
+.PHONY: all latest install dev link doc clean uninstall test man doc-publish doc-clean docclean docpublish release zip-publish
diff --git a/deps/npm/doc/cli/disputes.md b/deps/npm/doc/cli/disputes.md
new file mode 100644 (file)
index 0000000..96ad9ef
--- /dev/null
@@ -0,0 +1,84 @@
+npm-disputes(1) -- Handling Module Name Disputes
+================================================
+
+## SYNOPSIS
+
+1. Get the author email with `npm owner ls <pkgname>`
+1. Email the author, CC <i@izs.me>.
+2. After a few weeks, if there's no resolution, we'll sort it out.
+
+## DESCRIPTION
+
+There sometimes arise cases where a user publishes a module, and then
+later, some other user wants to use that name.  Here are some common
+ways that happens (each of these is based on actual events.)
+
+1. Bob writes a JavaScript module `foo`, which is not node-specific.
+   Bob doesn't use node at all.  Joe wants to use `foo` in node, so he
+   wraps it in an npm module.  Some time later, Bob starts using node,
+   and wants to take over management of his program.
+2. Bob writes an npm module `foo`, and publishes it.  Perhaps much
+   later, Joe finds a bug in `foo`, and fixes it.  He sends a pull
+   request to Bob, but Bob doesn't have the time to deal with it,
+   because he has a new job and a new baby and is focused on his new
+   erlang project, and kind of not involved with node any more.  Joe
+   would like to publish a new `foo`, but can't, because the name is
+   taken.
+3. Bob writes a 10-line flow-control library, and calls it `foo`, and
+   publishes it to the npm registry.  Being a simple little thing, it
+   never really has to be updated.  Joe works for Foo Inc, the makers
+   of the critically acclaimed and widely-marketed `foo` JavaScript
+   toolkit framework.  They publish it to npm as `foojs`, but people are
+   routinely confused when `npm install foo` is some different thing.
+4. Bob writes a parser for the widely-known `foo` file format, because
+   he needs it for work.  Then, he gets a new job, and never updates the
+   prototype.  Later on, Joe writes a much more complete `foo` parser,
+   but can't publish, because Bob's `foo` is in the way.
+
+The validity of Joe's claim in each situation can be debated.  However,
+Joe's appropriate course of action in each case is the same.
+
+1. `npm owner ls foo`.  This will tell Joe the email address of the
+   owner (Bob).
+2. Joe emails Bob, explaining the situation **as respecfully as possible**,
+   and what he would like to do with the module name.  He adds
+   isaacs <i@izs.me> to the CC list of the email.  Mention in the email
+   that Bob can run `npm owner add joe foo` to add Joe as an owner of
+   the `foo` package.
+3. After a reasonable amount of time, if Bob has not responded, or if
+   Bob and Joe can't come to any sort of resolution, email isaacs
+   <i@izs.me> and we'll sort it out.
+
+## REASONING
+
+In almost every case so far, the parties involved have been able to reach
+an amicable resolution without any major intervention.  Most people
+really do want to be reasonable, and are probably not even aware that
+they're in your way.
+
+Module ecosystems are most vibrant and powerful when they are as
+self-directed as possible.  If an admin one day deletes something you
+had worked on, then that is going to make most people quite upset,
+regardless of the justification.  When humans solve their problems by
+talking to other humans with respect, everyone has the chance to end up
+feeling good about the interaction.
+
+## EXCEPTIONS
+
+Some things are not allowed, and will be removed without discussion if
+they are brought to the attention of the npm registry admins, including
+but not limited to:
+
+1. Malware (that is, a module designed to exploit or harm the machine on
+   which it is installed)
+2. Violations of copyright or licenses (for example, cloning an
+   MIT-licensed program, and then removing or changing the copyright and
+   license statement)
+3. Illegal content.
+
+If you see bad behavior like this, please report it right away.
+
+## SEE ALSO
+
+* npm-registry(1)
+* npm-owner(1)
index 15bb0c6..938338c 100644 (file)
@@ -32,35 +32,65 @@ tl;dr:
   something with the `-g` flag, then its executables go in `npm bin -g`
   and its modules go in `npm root -g`.
 
-## How do I install something everywhere?
+## How do I install something on my computer in a central location?
 
-Install it globally by tacking `-g` or `--global` to the command.
+Install it globally by tacking `-g` or `--global` to the command.  (This
+is especially important for command line utilities that need to add
+their bins to the global system `PATH`.)
 
 ## I installed something globally, but I can't `require()` it
 
 Install it locally.
 
-## I don't wanna.
+The global install location is a place for command-line utilities
+to put their bins in the system `PATH`.  It's not for use with `require()`.
 
-Check out `npm link`.  You might like it.
+If you `require()` 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.
 
-## No, I really want 0.x style 'everything global' style.
+## Why can't npm just put everything in one place, like other package managers?
 
-Ok, fine.  Do this:
+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.
 
-    echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bashrc
-    . ~/.bashrc
-    npm config set global true
+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 `npm-folders(1)` for
+more details.
 
-This is not recommended.
+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 `npm link` command.
+That's what it's for.  Install it globally, then link it into each
+program that uses it.
 
-Many things **will not work** if you do this.  Make sure you read and
-understand `npm-config(1)` and `npm-global(1)` before you complain
-about things being broken.
+## Whatever, I really want the old style 'everything global' style.
 
-When you realize what a mistake it was, do this to switch back:
+Write your own package manager, then.  It's not that hard.
 
-    npm config delete global --local
+npm will not help you do something that is known to be a bad idea.
+
+## Should I check my `node_modules` folder into git?
+
+Mikeal Rogers answered this question very well:
+
+<http://www.mikealrogers.com/posts/nodemodules-in-git.html>
+
+tl;dr
+
+* Check `node_modules` into git for things you **deploy**, such as
+  websites and apps.
+* Do not check `node_modules` into git for libraries and modules
+  intended to be reused.
+* Use npm to manage dependencies in your dev environment, but not in
+  your deployment scripts.
+
+## Is it 'npm' or 'NPM' or 'Npm'?
+
+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.)
 
 ## If 'npm' is an acronym, why is it never capitalized?
 
@@ -73,7 +103,7 @@ acronym, and thus incorrectly named.)
 National Association of Pastoral Musicians.  You can learn more
 about them at <http://npm.org/>.
 
-In software, "NPM" is a non-parametric mapping utility written by
+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 <http://www.cabiatl.com/mricro/npm/>.
 
@@ -186,11 +216,9 @@ Go to <http://admin.npmjs.org/reset>.
 ## I get ECONNREFUSED a lot.  What's up?
 
 Either the registry is down, or node's DNS isn't able to reach out.
-This happens a lot if you don't follow *all* the steps in the Cygwin
-setup doc.
 
 To check if the registry is down, open up
-<http://registry.npmjs.org/-/short>
+<http://registry.npmjs.org/>
 in a web browser.  This will also tell you if you are just unable to
 access the internet for some reason.
 
index b355042..5a9b99b 100644 (file)
@@ -54,6 +54,10 @@ npm-index(1) -- Index of all npm documentation
 
  Developer Guide
 
+## npm-disputes(1)
+
+ Handling Module Name Disputes
+
 ## npm-docs(1)
 
  Docs for a package in a web browser maybe
index 8365da3..902e083 100644 (file)
@@ -30,3 +30,4 @@ that is not implemented at this time.
 * npm-publish(1)
 * npm-registry(1)
 * npm-adduser(1)
+* npm-disputes(1)
index 13c8724..44ddd94 100644 (file)
@@ -90,3 +90,4 @@ Stay tuned!
 
 * npm-config(1)
 * npm-developers(1)
+* npm-disputes(1)
index b54352f..a5bd332 100644 (file)
@@ -19,7 +19,7 @@
 <p>This function should not be used programmatically.  Instead, just refer
 to the <code>npm.bin</code> member.</p>
 </div>
-<p id="footer">bin &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">bin &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 0cc8c25..3e21d5f 100644 (file)
@@ -25,7 +25,7 @@ optional version number.</p>
 <p>This command will launch a browser, so this command may not be the most
 friendly for programmatic use.</p>
 </div>
-<p id="footer">bugs &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">bugs &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d8558b5..a8c0889 100644 (file)
@@ -28,7 +28,7 @@ usage, or <code>man 3 npm-&lt;command&gt;</code> for programmatic usage.</p>
 
 <ul><li><a href="../doc/index.html">index(1)</a></li></ul>
 </div>
-<p id="footer">commands &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">commands &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index f55a6b2..95ad4c3 100644 (file)
@@ -33,7 +33,7 @@ functions instead.</p>
 
 <ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
 </div>
-<p id="footer">config &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">config &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index bf2f3ef..f16520e 100644 (file)
@@ -30,7 +30,7 @@ install the package.</p></li></ul>
 
 <ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../api/unpublish.html">unpublish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
 </div>
-<p id="footer">deprecate &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">deprecate &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ca263c1..88f06a7 100644 (file)
@@ -25,7 +25,7 @@ optional version number.</p>
 <p>This command will launch a browser, so this command may not be the most
 friendly for programmatic use.</p>
 </div>
-<p id="footer">docs &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">docs &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index c9aec71..92c5f58 100644 (file)
@@ -30,7 +30,7 @@ to open. The package can optionally have a version number attached.</p>
 <p>Since this command opens an editor in a new process, be careful about where
 and how this is used.</p>
 </div>
-<p id="footer">edit &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">edit &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 03ca82b..c54d5c4 100644 (file)
@@ -24,7 +24,7 @@ sure to use <code>npm rebuild &lt;pkg&gt;</code> if you make any changes.</p>
 
 <p>The first element in the 'args' parameter must be a package name.  After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p>
 </div>
-<p id="footer">explore &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">explore &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 01b3307..9bc8e1b 100644 (file)
@@ -32,7 +32,7 @@ Name of the file that matched</li></ul>
 
 <p>The silent parameter is not neccessary not used, but it may in the future.</p>
 </div>
-<p id="footer">help-search &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">help-search &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 4e5a716..9aedc22 100644 (file)
@@ -35,7 +35,7 @@ then go ahead and use this programmatically.</p>
 
 <p><a href="../doc/json.html">json(1)</a></p>
 </div>
-<p id="footer">init &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">init &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 692f609..a2d26c9 100644 (file)
@@ -25,7 +25,7 @@ the name of a package to be installed.</p>
 <p>Finally, 'callback' is a function that will be called when all packages have been
 installed or when an error has been encountered.</p>
 </div>
-<p id="footer">install &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">install &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 87a3a03..256069b 100644 (file)
@@ -39,7 +39,7 @@ npm.commands.link('redis', cb)  # link-install the package</code></pre>
 <p>Now, any changes to the redis package will be reflected in
 the package in the current working directory</p>
 </div>
-<p id="footer">link &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">link &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 9ad5a8e..c23136a 100644 (file)
@@ -32,7 +32,7 @@ config object.</p>
 
 <p>For a list of all the available command-line configs, see <code>npm help config</code></p>
 </div>
-<p id="footer">load &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">load &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 0655ef4..ba4e59a 100644 (file)
@@ -53,7 +53,7 @@ project.</p>
 This means that if a submodule a same dependency as a parent module, then the
 dependency will only be output once.</p>
 </div>
-<p id="footer">ls &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">ls &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index df3d8ba..6824bd4 100644 (file)
@@ -24,7 +24,7 @@ npm.load(configObject, function (er, npm) {
 
 <h2 id="VERSION">VERSION</h2>
 
-<p>1.1.0-beta-7</p>
+<p>1.1.0-beta-10</p>
 
 <h2 id="DESCRIPTION">DESCRIPTION</h2>
 
@@ -91,7 +91,7 @@ method names.  Use the <code>npm.deref</code> method to find the real name.</p>
 
 <pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre>
 </div>
-<p id="footer">npm &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">npm &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a7db489..31fa66e 100644 (file)
@@ -19,7 +19,7 @@ currently outdated.</p>
 
 <p>If the 'packages' parameter is left out, npm will check all packages.</p>
 </div>
-<p id="footer">outdated &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">outdated &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 89fe025..8e9f9f9 100644 (file)
@@ -34,7 +34,7 @@ that is not implemented at this time.</p>
 
 <ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
 </div>
-<p id="footer">owner &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">owner &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index cb2ffe6..0eb4a12 100644 (file)
@@ -25,7 +25,7 @@ overwritten the second time.</p>
 
 <p>If no arguments are supplied, then npm packs the current package folder.</p>
 </div>
-<p id="footer">pack &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">pack &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 130bca5..15be64d 100644 (file)
@@ -21,7 +21,7 @@
 
 <p>This function is not useful programmatically</p>
 </div>
-<p id="footer">prefix &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">prefix &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d425838..2700cf0 100644 (file)
@@ -23,7 +23,7 @@
 <p>Extraneous packages are packages that are not listed on the parent
 package's dependencies list.</p>
 </div>
-<p id="footer">prune &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">prune &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d93a229..99d2cb8 100644 (file)
@@ -32,7 +32,7 @@ the registry.  Overwrites when the "force" environment variable is set.</p>
 
 <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../api/owner.html">owner(3)</a></li></ul>
 </div>
-<p id="footer">publish &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">publish &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 9ca14c9..6699131 100644 (file)
@@ -22,7 +22,7 @@ the new binary. If no 'packages' parameter is specify, every package will be reb
 
 <p>See <code>npm help build</code></p>
 </div>
-<p id="footer">rebuild &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">rebuild &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 20b3654..03c9b81 100644 (file)
@@ -27,7 +27,7 @@ in the <code>packages</code> parameter.</p>
 
 <ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
 </div>
-<p id="footer">restart &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">restart &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 16073a4..26ab525 100644 (file)
@@ -21,7 +21,7 @@
 
 <p>This function is not useful programmatically.</p>
 </div>
-<p id="footer">root &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">root &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 43a4f80..f945341 100644 (file)
@@ -29,7 +29,7 @@ assumed to be the command to run. All other elements are ignored.</p>
 
 <ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../api/test.html">test(3)</a></li><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/restart.html">restart(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
 </div>
-<p id="footer">run-script &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">run-script &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 2267733..24782a5 100644 (file)
@@ -32,7 +32,7 @@ excluded term (the "searchexclude" config). The search is case insensitive
 and doesn't try to read your mind (it doesn't do any verb tense matching or the
 like).</p>
 </div>
-<p id="footer">search &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">search &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 6fa6e0b..d415c95 100644 (file)
@@ -19,7 +19,7 @@
 <p>npm can run tests on multiple packages. Just specify multiple packages
 in the <code>packages</code> parameter.</p>
 </div>
-<p id="footer">start &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">start &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e23cff6..ef9b22d 100644 (file)
@@ -19,7 +19,7 @@
 <p>npm can run stop on multiple packages. Just specify multiple packages
 in the <code>packages</code> parameter.</p>
 </div>
-<p id="footer">stop &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">stop &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ae8bc02..7dcb184 100644 (file)
@@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
 
 <ul><li>npm help json</li><li>git help submodule</li></ul>
 </div>
-<p id="footer">submodule &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">submodule &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index bd90e5a..5bfa51f 100644 (file)
@@ -29,7 +29,7 @@ parameter is missing or falsey (empty), the default froom the config will be
 used. For more information about how to set this config, check
 <code>man 3 npm-config</code> for programmatic usage or <code>man npm-config</code> for cli usage.</p>
 </div>
-<p id="footer">tag &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">tag &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e61fe0e..27918a9 100644 (file)
@@ -22,7 +22,7 @@ true.</p>
 <p>npm can run tests on multiple packages. Just specify multiple packages
 in the <code>packages</code> parameter.</p>
 </div>
-<p id="footer">test &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">test &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 60de7a1..6b11b26 100644 (file)
@@ -22,7 +22,7 @@ the name of a package to be uninstalled.</p>
 <p>Finally, 'callback' is a function that will be called when all packages have been
 uninstalled or when an error has been encountered.</p>
 </div>
-<p id="footer">uninstall &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">uninstall &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 33b05fb..2f302d0 100644 (file)
@@ -26,7 +26,7 @@ is what is meant.</p>
 <p>If no version is specified, or if all versions are removed then
 the root package entry is removed from the registry entirely.</p>
 </div>
-<p id="footer">unpublish &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">unpublish &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7247042..d99018b 100644 (file)
@@ -18,7 +18,7 @@
 
 <p>The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.</p>
 </div>
-<p id="footer">update &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">update &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 12ddc18..a2c4271 100644 (file)
@@ -24,7 +24,7 @@ fail if the repo is not clean.</p>
 parameter. The difference, however, is this function will fail if it does
 not have exactly one element. The only element should be a version number.</p>
 </div>
-<p id="footer">version &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">version &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 65237f3..0d3974c 100644 (file)
@@ -99,7 +99,7 @@ the field name.</p>
 
 <p>corresponding to the list of fields selected.</p>
 </div>
-<p id="footer">view &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">view &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 66fa0aa..e2f6058 100644 (file)
@@ -21,7 +21,7 @@
 
 <p>This function is not useful programmatically</p>
 </div>
-<p id="footer">whoami &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">whoami &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 424b065..8417f1c 100644 (file)
@@ -267,7 +267,7 @@ will no doubt tell you to put the output in a gist or email.</p>
 
 <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
 </div>
-<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.1.0-beta-7</p>
+<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1146ecc..cb17e96 100644 (file)
@@ -39,7 +39,7 @@ authorize on a new machine.</p>
 
 <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li></ul>
 </div>
-<p id="footer">adduser &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">adduser &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 3381fcc..a46607b 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">bin &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">bin &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5bd1f86..f7401af 100644 (file)
@@ -36,7 +36,7 @@ config param.</p>
 
 <ul><li><a href="../doc/docs.html">docs(1)</a></li><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
 </div>
-<p id="footer">bugs &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">bugs &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 6b9c647..d374962 100644 (file)
@@ -25,7 +25,7 @@ A folder containing a <code>package.json</code> file in its root.</li></ul>
 
 <ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
 </div>
-<p id="footer">build &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">build &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 07ec832..25b9991 100644 (file)
@@ -20,7 +20,7 @@ install packages into the local space.</p>
 
 <ul><li><a href="../doc/install.html">install(1)</a></li></ul>
 </div>
-<p id="footer">bundle &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">bundle &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d1d0208..a693cb0 100644 (file)
@@ -66,7 +66,7 @@ they do not make an HTTP request to the registry.</p>
 
 <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li></ul>
 </div>
-<p id="footer">cache &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">cache &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 4f378cf..9b96ce1 100644 (file)
@@ -34,7 +34,7 @@
 
 <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul>
 </div>
-<p id="footer">changelog &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">changelog &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ca483bb..5fd2f8f 100644 (file)
@@ -191,7 +191,7 @@ set to anything."</p>
 
 <ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
 </div>
-<p id="footer">coding-style &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">coding-style &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1033f72..efd7399 100644 (file)
@@ -33,7 +33,7 @@ completions based on the arguments.</p>
 
 <ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
 </div>
-<p id="footer">completion &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">completion &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a38dfbf..98d3856 100644 (file)
@@ -615,7 +615,7 @@ then answer "no" to any prompt.</p>
 
 <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
 </div>
-<p id="footer">config &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">config &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ca53a70..055ed7f 100644 (file)
@@ -29,7 +29,7 @@ something like this:</p>
 
 <ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
 </div>
-<p id="footer">deprecate &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">deprecate &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7b45bfb..b611b6e 100644 (file)
@@ -150,7 +150,7 @@ from a fresh checkout.</p>
 
 <ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
 </div>
-<p id="footer">developers &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">developers &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/disputes.html b/deps/npm/html/doc/disputes.html
new file mode 100644 (file)
index 0000000..42320d3
--- /dev/null
@@ -0,0 +1,115 @@
+<!doctype html>
+<html>
+  <title>disputes</title>
+  <meta http-equiv="content-type" value="text/html;utf-8">
+  <link rel="stylesheet" type="text/css" href="./style.css">
+
+  <body>
+    <div id="wrapper">
+<h1><a href="../doc/disputes.html">disputes</a></h1> <p>Handling Module Name Disputes</p>
+
+<h2 id="SYNOPSIS">SYNOPSIS</h2>
+
+<ol><li>Get the author email with <code>npm owner ls &lt;pkgname&gt;</code></li><li>Email the author, CC <a href="mailto:i@izs.me">i@izs.me</a>.</li><li>After a few weeks, if there's no resolution, we'll sort it out.</li></ol>
+
+<h2 id="DESCRIPTION">DESCRIPTION</h2>
+
+<p>There sometimes arise cases where a user publishes a module, and then
+later, some other user wants to use that name.  Here are some common
+ways that happens (each of these is based on actual events.)</p>
+
+<ol><li>Bob writes a JavaScript module <code>foo</code>, which is not node-specific.
+Bob doesn't use node at all.  Joe wants to use <code>foo</code> in node, so he
+wraps it in an npm module.  Some time later, Bob starts using node,
+and wants to take over management of his program.</li><li>Bob writes an npm module <code>foo</code>, and publishes it.  Perhaps much
+later, Joe finds a bug in <code>foo</code>, and fixes it.  He sends a pull
+request to Bob, but Bob doesn't have the time to deal with it,
+because he has a new job and a new baby and is focused on his new
+erlang project, and kind of not involved with node any more.  Joe
+would like to publish a new <code>foo</code>, but can't, because the name is
+taken.</li><li>Bob writes a 10-line flow-control library, and calls it <code>foo</code>, and
+publishes it to the npm registry.  Being a simple little thing, it
+never really has to be updated.  Joe works for Foo Inc, the makers
+of the critically acclaimed and widely-marketed <code>foo</code> JavaScript
+toolkit framework.  They publish it to npm as <code>foojs</code>, but people are
+routinely confused when <code>npm install foo</code> is some different thing.</li><li>Bob writes a parser for the widely-known <code>foo</code> file format, because
+he needs it for work.  Then, he gets a new job, and never updates the
+prototype.  Later on, Joe writes a much more complete <code>foo</code> parser,
+but can't publish, because Bob's <code>foo</code> is in the way.</li></ol>
+
+<p>The validity of Joe's claim in each situation can be debated.  However,
+Joe's appropriate course of action in each case is the same.</p>
+
+<ol><li><code>npm owner ls foo</code>.  This will tell Joe the email address of the
+owner (Bob).</li><li>Joe emails Bob, explaining the situation <strong>as respecfully as possible</strong>,
+and what he would like to do with the module name.  He adds
+isaacs <a href="mailto:i@izs.me">i@izs.me</a> to the CC list of the email.  Mention in the email
+that Bob can run <code>npm owner add joe foo</code> to add Joe as an owner of
+the <code>foo</code> package.</li><li>After a reasonable amount of time, if Bob has not responded, or if
+Bob and Joe can't come to any sort of resolution, email isaacs
+<a href="mailto:i@izs.me">i@izs.me</a> and we'll sort it out.</li></ol>
+
+<h2 id="REASONING">REASONING</h2>
+
+<p>In almost every case so far, the parties involved have been able to reach
+an amicable resolution without any major intervention.  Most people
+really do want to be reasonable, and are probably not even aware that
+they're in your way.</p>
+
+<p>Module ecosystems are most vibrant and powerful when they are as
+self-directed as possible.  If an admin one day deletes something you
+had worked on, then that is going to make most people quite upset,
+regardless of the justification.  When humans solve their problems by
+talking to other humans with respect, everyone has the chance to end up
+feeling good about the interaction.</p>
+
+<h2 id="EXCEPTIONS">EXCEPTIONS</h2>
+
+<p>Some things are not allowed, and will be removed without discussion if
+they are brought to the attention of the npm registry admins, including
+but not limited to:</p>
+
+<ol><li>Malware (that is, a module designed to exploit or harm the machine on
+which it is installed)</li><li>Violations of copyright or licenses (for example, cloning an
+MIT-licensed program, and then removing or changing the copyright and
+license statement)</li><li>Illegal content.</li></ol>
+
+<p>If you see bad behavior like this, please report it right away.</p>
+
+<h2 id="SEE-ALSO">SEE ALSO</h2>
+
+<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
+</div>
+<p id="footer">disputes &mdash; npm@1.1.0-beta-10</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>
index 212fabb..7c0d94d 100644 (file)
@@ -37,7 +37,7 @@ config param.</p>
 
 <ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
 </div>
-<p id="footer">docs &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">docs &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d879d53..b4e42ea 100644 (file)
@@ -37,7 +37,7 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
 
 <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/explore.html">explore(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">edit &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">edit &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 747b313..8eac9c9 100644 (file)
@@ -40,7 +40,7 @@ Windows</li><li>Type: path</li></ul>
 
 <ul><li><a href="../doc/submodule.html">submodule(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/edit.html">edit(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
 </div>
-<p id="footer">explore &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">explore &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a1f5cd4..1830473 100644 (file)
@@ -38,35 +38,63 @@ command to see where executables go</li><li>Global installs are different from l
 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-everywhere">How do I install something everywhere?</h2>
+<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.</p>
+<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 `require()` it</h2>
 
 <p>Install it locally.</p>
 
-<h2 id="I-don-t-wanna">I don't wanna.</h2>
+<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>Check out <code>npm link</code>.  You might like it.</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="No-I-really-want-0-x-style-everything-global-style">No, I really want 0.x style 'everything global' style.</h2>
+<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>Ok, fine.  Do this:</p>
+<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>
 
-<pre><code>echo 'export NODE_PATH="'$(npm root -g)'"' &gt;&gt; ~/.bashrc
-. ~/.bashrc
-npm config set global true</code></pre>
+<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>This is not recommended.</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>
 
-<p>Many things <strong>will not work</strong> if you do this.  Make sure you read and
-understand <code><a href="../doc/config.html">config(1)</a></code> and <code><a href="../doc/global.html">global(1)</a></code> before you complain
-about things being broken.</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>When you realize what a mistake it was, do this to switch back:</p>
+<p>Write your own package manager, then.  It's not that hard.</p>
 
-<pre><code>npm config delete global --local</code></pre>
+<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 `node_modules` 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>
 
@@ -79,7 +107,7 @@ acronym, and thus incorrectly named.)</p>
 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
+<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>
 
@@ -183,12 +211,10 @@ means that publishes go over HTTP by default in those versions of node.</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.
-This happens a lot if you don't follow <em>all</em> the steps in the Cygwin
-setup doc.</p>
+<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/-/short">http://registry.npmjs.org/-/short</a>
+<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>
 
@@ -215,7 +241,7 @@ We'll have someone kick it or something.</p>
 
 <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 &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">faq &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d65118c..9f17e65 100644 (file)
@@ -205,7 +205,7 @@ cannot be found elsewhere.  See <code><a href="../doc/json.html">json(1)</a></co
 
 <ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li></ul>
 </div>
-<p id="footer">folders &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">folders &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 0d4777a..976fab5 100644 (file)
@@ -38,7 +38,7 @@ where the terms were found in the documentation.</p>
 
 <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li></ul>
 </div>
-<p id="footer">help-search &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">help-search &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 35bd3c4..cb07b8f 100644 (file)
@@ -36,7 +36,7 @@ matches are equivalent to specifying a topic name.</p>
 
 <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/help-search.html">help-search(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
 </div>
-<p id="footer">help &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">help &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ee97325..22eec4b 100644 (file)
 
 <p> Developer Guide</p>
 
+<h2 id="npm-disputes-1"><a href="../doc/disputes.html">disputes(1)</a></h2>
+
+<p> Handling Module Name Disputes</p>
+
 <h2 id="npm-docs-1"><a href="../doc/docs.html">docs(1)</a></h2>
 
 <p> Docs for a package in a web browser maybe</p>
 
 <p> Display npm username</p>
 </div>
-<p id="footer">index &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">index &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 3cb27a7..58f01d1 100644 (file)
@@ -29,7 +29,7 @@ without a really good reason to do so.</p>
 
 <ul><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/version.html">version(1)</a></li></ul>
 </div>
-<p id="footer">init &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">init &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1e936cb..660224f 100644 (file)
@@ -134,7 +134,7 @@ affects a real use-case, it will be investigated.</p>
 
 <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li></ul>
 </div>
-<p id="footer">install &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">install &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index f8519af..aea5e34 100644 (file)
@@ -436,7 +436,7 @@ overridden.</p>
 
 <ul><li><a href="../doc/semver.html">semver(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/version.html">version(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li></ul>
 </div>
-<p id="footer">json &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">json &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 863f44e..6d7e253 100644 (file)
@@ -58,7 +58,7 @@ installation target into your project's <code>node_modules</code> folder.</p>
 
 <ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">link &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">link &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 6cf4b8f..60042a5 100644 (file)
@@ -52,7 +52,7 @@ project.</p>
 
 <ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/update.html">update(1)</a></li></ul>
 </div>
-<p id="footer">list &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">list &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 9866c6f..fcb2706 100644 (file)
@@ -14,7 +14,7 @@
 
 <h2 id="VERSION">VERSION</h2>
 
-<p>1.1.0-beta-7</p>
+<p>1.1.0-beta-10</p>
 
 <h2 id="DESCRIPTION">DESCRIPTION</h2>
 
@@ -135,7 +135,7 @@ will no doubt tell you to put the output in a gist or email.</p>
 
 <ul><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/index.html">index(1)</a></li><li><a href="../api/npm.html">npm(3)</a></li></ul>
 </div>
-<p id="footer">npm &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">npm &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 8b965d0..d036cc2 100644 (file)
@@ -21,7 +21,7 @@ packages are currently outdated.</p>
 
 <ul><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul>
 </div>
-<p id="footer">outdated &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">outdated &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 07e9118..845846d 100644 (file)
@@ -32,9 +32,9 @@ that is not implemented at this time.</p>
 
 <h2 id="SEE-ALSO">SEE ALSO</h2>
 
-<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
+<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
 </div>
-<p id="footer">owner &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">owner &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5ec6ce4..b997bf8 100644 (file)
@@ -29,7 +29,7 @@ overwritten the second time.</p>
 
 <ul><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">pack &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">pack &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index b377413..893e3f3 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">prefix &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">prefix &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ad4c1ea..20f371f 100644 (file)
@@ -25,7 +25,7 @@ package's dependencies list.</p>
 
 <ul><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
 </div>
-<p id="footer">prune &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">prune &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index acc39a9..65466db 100644 (file)
@@ -29,7 +29,7 @@ the registry.  Overwrites when the "--force" flag is set.</p>
 
 <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li></ul>
 </div>
-<p id="footer">publish &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">publish &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 94153d0..e419982 100644 (file)
@@ -25,7 +25,7 @@ the new binary.</p>
 
 <ul><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
 </div>
-<p id="footer">rebuild &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">rebuild &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index facc37c..203b798 100644 (file)
@@ -95,9 +95,9 @@ ask for help on the <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com
 
 <h2 id="SEE-ALSO">SEE ALSO</h2>
 
-<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li></ul>
+<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
 </div>
-<p id="footer">registry &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">registry &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 506100e..989f624 100644 (file)
@@ -58,7 +58,7 @@ modules.  To track those down, you can do the following:</p>
 
 <ul><li><a href="../doc/README.html">README</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li></ul>
 </div>
-<p id="footer">removing-npm &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">removing-npm &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 6019651..a8a2ec5 100644 (file)
@@ -24,7 +24,7 @@ the "start" script.</p>
 
 <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
 </div>
-<p id="footer">restart &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">restart &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 2833797..8bd360c 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">root &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">root &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1023b05..1d9b606 100644 (file)
@@ -23,7 +23,7 @@ called directly, as well.</p>
 
 <ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
 </div>
-<p id="footer">run-script &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">run-script &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 66906fb..fb1265d 100644 (file)
@@ -164,7 +164,7 @@ will sudo the npm command in question.</li></ul>
 
 <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
 </div>
-<p id="footer">scripts &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">scripts &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 07fa267..c313509 100644 (file)
@@ -24,7 +24,7 @@ expression characters must be escaped or quoted in most shells.)</p>
 
 <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/view.html">view(1)</a></li></ul>
 </div>
-<p id="footer">search &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">search &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 863bcd1..93c51ce 100644 (file)
@@ -104,7 +104,7 @@ that satisfies the range, or null if none of them do.</li></ul>
 
 <ul><li><a href="../doc/json.html">json(1)</a></li></ul>
 </div>
-<p id="footer">semver &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">semver &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 87ee1e1..e4acef0 100644 (file)
@@ -26,7 +26,7 @@ a vaguely positive way to show that you care.</p>
 
 <ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
 </div>
-<p id="footer">star &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">star &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index f92ac02..8c1eea9 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
 </div>
-<p id="footer">start &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">start &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 24b372f..1f4248e 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li></ul>
 </div>
-<p id="footer">stop &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">stop &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 055a673..6006254 100644 (file)
@@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
 
 <ul><li><a href="../doc/json.html">json(1)</a></li><li>git help submodule</li></ul>
 </div>
-<p id="footer">submodule &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">submodule &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ec55c02..ae1081f 100644 (file)
@@ -21,7 +21,7 @@
 
 <ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">tag &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">tag &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e5191ac..4be6272 100644 (file)
@@ -23,7 +23,7 @@ true.</p>
 
 <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
 </div>
-<p id="footer">test &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">test &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index beb2203..c8e6c82 100644 (file)
@@ -22,7 +22,7 @@ on its behalf.</p>
 
 <ul><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">uninstall &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">uninstall &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ee92854..9e7603f 100644 (file)
@@ -34,7 +34,7 @@ the root package entry is removed from the registry entirely.</p>
 
 <ul><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
 </div>
-<p id="footer">unpublish &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">unpublish &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index dd93338..3175084 100644 (file)
@@ -23,7 +23,7 @@
 
 <ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
 </div>
-<p id="footer">update &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">update &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index f6703b9..b7e900f 100644 (file)
@@ -31,7 +31,7 @@ will use it as a commit message when creating a version commit.</p>
 
 <ul><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/semver.html">semver(1)</a></li></ul>
 </div>
-<p id="footer">version &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">version &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 2987446..20571e7 100644 (file)
@@ -88,7 +88,7 @@ the field name.</p>
 
 <ul><li><a href="../doc/search.html">search(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/docs.html">docs(1)</a></li></ul>
 </div>
-<p id="footer">view &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">view &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 47f6fed..edd0798 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
 </div>
-<p id="footer">whoami &mdash; npm@1.1.0-beta-7</p>
+<p id="footer">whoami &mdash; npm@1.1.0-beta-10</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 44a687f..de68393 100644 (file)
@@ -29,6 +29,8 @@ var EventEmitter = require("events").EventEmitter
   , findPrefix = require("./utils/find-prefix.js")
   , getUid = require("./utils/uid-number.js")
   , mkdir = require("./utils/mkdir-p.js")
+  , slide = require("slide")
+  , chain = slide.chain
 
 npm.commands = {}
 npm.ELIFECYCLE = {}
@@ -109,6 +111,7 @@ var commandCache = {}
               , "home" : "docs"
               , "unstar": "star" // same function
               , "apihelp" : "help"
+              , "login": "adduser"
               }
 
   , aliasNames = Object.keys(aliases)
@@ -261,7 +264,6 @@ npm.load = function (conf, cb_) {
 
 function load (npm, conf, cb) {
   which(process.argv[0], function (er, node) {
-    //console.error("back from which")
     if (!er && node.toUpperCase() !== process.execPath.toUpperCase()) {
       log.verbose("node symlink", node)
       process.execPath = node
@@ -275,23 +277,15 @@ function load (npm, conf, cb) {
       //console.error("back from config lookup", er && er.stack)
       if (er) return cb(er)
 
-      var n = 2
-        , errState
-
       var umask = parseInt(conf.umask, 8)
       npm.modes = { exec: 0777 & (~umask)
                   , file: 0666 & (~umask)
                   , umask: umask }
 
-      loadPrefix(npm, conf, next)
-      loadUid(npm, conf, next)
-
-      function next (er) {
-        //console.error("next", er && er.stack)
-        if (errState) return
-        if (er) return cb(errState = er)
-        if (-- n <= 0) return cb()
-      }
+      chain([ [ loadPrefix, npm, conf ]
+            , [ setUser, ini.configList, ini.defaultConfig ]
+            , [ loadUid, npm, conf ]
+            ], cb)
     })
   })
 }
@@ -308,14 +302,17 @@ function loadPrefix (npm, conf, cb) {
   gp = npm.config.get("prefix")
 
   findPrefix(p, function (er, p) {
-    //console.log("Back from findPrefix", er && er.stack, p)
     Object.defineProperty(npm, "localPrefix",
       { get : function () { return p }
       , set : function (r) { return p = r }
       , enumerable : true
       })
     // the prefix MUST exist, or else nothing works.
-    mkdir(p, npm.modes.exec, null, null, true, next)
+    if (!npm.config.get("global")) {
+      mkdir(p, npm.modes.exec, null, null, true, next)
+    } else {
+      next(er)
+    }
   })
 
   findPrefix(gp, function (er, gp) {
@@ -344,11 +341,33 @@ function loadUid (npm, conf, cb) {
   if (!npm.config.get("unsafe-perm")) {
     getUid(npm.config.get("user"), npm.config.get("group"), cb)
   } else {
-    //console.error("skipping loadUid")
     process.nextTick(cb)
   }
 }
 
+function setUser (cl, dc, cb) {
+  // If global, leave it as-is.
+  // If not global, then set the user to the owner of the prefix folder.
+  // Just set the default, so it can be overridden.
+  if (cl.get("global")) return cb()
+  if (process.env.SUDO_UID) {
+    dc.user = +(process.env.SUDO_UID)
+    return cb()
+  }
+
+  var prefix = path.resolve(cl.get("prefix"))
+  mkdir(prefix, function (er) {
+    if (er) {
+      log.error(prefix, "could not create prefix directory")
+      return cb(er)
+    }
+    fs.stat(prefix, function (er, st) {
+      dc.user = st && st.uid
+      return cb(er)
+    })
+  })
+}
+
 
 npm.config =
   { get : function (key) { return ini.get(key) }
index 802fdb8..476bfae 100644 (file)
@@ -20,7 +20,7 @@ var fs = require("graceful-fs")
   , path = require("path")
   , relativize = require("./relativize.js")
   , npm = require("../npm.js")
-  , shebangExpr = /^#\!(?:\/usr\/bin\/env )?([^ \t]+)(.*)$/
+  , shebangExpr = /^#\!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/
 
 function cmdShimIfExists (from, to, cb) {
   fs.stat(from, function (er) {
index fcb4139..ba1e567 100644 (file)
@@ -61,7 +61,7 @@ function makeRequest (remote, fstr, headers) {
           , strictSSL: npm.config.get("strict-ssl")
           , onResponse: onResponse }).pipe(fstr)
   function onResponse (er, res) {
-    if (er) return cb(er)
+    if (er) return fstr.emit("error", er)
     log.http(res.statusCode + " " + remote.href)
   }
 }
index 278a603..0883275 100644 (file)
@@ -36,6 +36,8 @@ var fs = require("graceful-fs")
   , nopt = require("nopt")
   , ini = require("ini")
   , ProtoList = require("proto-list")
+  , mkdir = require("mkdirp")
+  , npm = require("../npm.js")
 
   , log = require("./log.js")
   , configDefs = require("./config-defs.js")
@@ -118,45 +120,22 @@ function resolveConfigs (cli, cb_) {
         if (er) conf = {}
         cl.push(conf)
         cl.push(dc)
-        setUser(cl, dc, thenValidate(cl, cb))
+        validate(cl)
+        cb()
       })
     })
   })
 }
 
-function thenValidate (cl, cb) { return function (er) {
-  if (er) return cb(er)
-
+function validate (cl) {
   // warn about invalid configs at every level.
   cl.list.forEach(function (conf, level) {
     // clean(data, types, typeDefs)
     nopt.clean(conf, configDefs.types)
   })
-
-  cb()
-}}
-
-function setUser (cl, dc, cb) {
-  // If global, leave it as-is.
-  // If not global, then set the user to the owner of the prefix folder.
-  // Just set the default, so it can be overridden.
-  //console.error("setUser "+cl.get("global")+" "+ cb.toString())
-  if (cl.get("global")) return cb()
-  if (process.env.SUDO_UID) {
-    //console.error("uid="+process.env.SUDO_UID)
-    dc.user = +(process.env.SUDO_UID)
-    return cb()
-  }
-  //console.error("prefix="+cl.get("prefix"))
-  fs.stat(path.resolve(cl.get("prefix")), function (er, st) {
-    if (er) {
-      return log.er(cb, "prefix directory not found")(er)
-    }
-    dc.user = st.uid
-    return cb()
-  })
 }
 
+
 function parseEnv (env) {
   var conf = {}
   Object.keys(env)
index 375bb5f..ae05ac1 100644 (file)
@@ -79,7 +79,7 @@ function requestAll_ (c, data, cb) {
   var uri = "/-/all/since?stale=update_after&startkey=" + c
 
   if (c === 0) {
-    log.warn("Building the index for the first time, please be patient")
+    log.warn("Building the local index for the first time, please be patient")
     uri = "/-/all"
   }
 
@@ -121,7 +121,7 @@ function get_ (uri, timeout, cache, stat, data, nofollow, staleOk, cb) {
   GET(uri, etag, nofollow, function (er, remoteData, raw, response) {
     // if we get an error talking to the registry, but we have it
     // from the cache, then just pretend we got it.
-    if (er && cache) {
+    if (er && cache && data && !data.error) {
       er = null
       response = {statusCode: 304}
     }
index 68e5c25..ffd447d 100644 (file)
@@ -161,6 +161,7 @@ function typoWarn (json) {
               , "depdenencies": "dependencies"
               , "devEependencies": "devDependencies"
               , "depends": "dependencies"
+              , "dev-dependencies": "devDependencies"
               , "devDependences": "devDependencies"
               , "devDepenencies": "devDependencies"
               , "devdependencies": "devDependencies"
@@ -362,7 +363,7 @@ function processObject (opts, cb) { return function (er, json) {
   }
 
   ;["dependencies", "devDependencies"].forEach(function (d) {
-    json[d] = json[d] ? depObjectify(json[d]) : {}
+    json[d] = json.hasOwnProperty(d) ? depObjectify(json[d], d, json._id) : {}
   })
 
   if (opts.dev || npm.config.get("dev") || npm.config.get("npat")) {
@@ -394,7 +395,19 @@ function processObject (opts, cb) { return function (er, json) {
   return json
 }}
 
-function depObjectify (deps) {
+var depObjectifyWarn = {}
+function depObjectify (deps, d, id) {
+  if ((!deps || typeof deps !== "object" || Array.isArray(deps))
+      && !depObjectifyWarn[id+d]) {
+    log.warn( d + " field should be hash of <name>:<version-range> pairs"
+            , id )
+    depObjectifyWarn[id + d] = true
+  }
+
+  if (!deps) return {}
+  if (typeof deps === "string") {
+    deps = deps.trim().split(/[\n\r\s\t ,]+/)
+  }
   if (!Array.isArray(deps)) return deps
   var o = {}
   deps.forEach(function (d) {
index d276ebe..a6c6243 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM" "1" "December 2011" "" ""
+.TH "NPM" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm\fR \-\- node package manager
index 13d146a..301c95a 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-ADDUSER" "1" "December 2011" "" ""
+.TH "NPM\-ADDUSER" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-adduser\fR \-\- Add a registry user account
index 3922180..6c3ff4a 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BIN" "1" "December 2011" "" ""
+.TH "NPM\-BIN" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-bin\fR \-\- Display npm bin folder
index 2c30126..55aeeb7 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BUGS" "1" "December 2011" "" ""
+.TH "NPM\-BUGS" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-bugs\fR \-\- Bugs for a package in a web browser maybe
index 79b5e49..9c2d7bb 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BUILD" "1" "December 2011" "" ""
+.TH "NPM\-BUILD" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-build\fR \-\- Build a package
index 9cb517a..9a97ce9 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BUNDLE" "1" "December 2011" "" ""
+.TH "NPM\-BUNDLE" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-bundle\fR \-\- REMOVED
index 04a1c95..f4df1fa 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-CACHE" "1" "December 2011" "" ""
+.TH "NPM\-CACHE" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-cache\fR \-\- Manipulates packages cache
index 33872b9..a2112c8 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-CHANGELOG" "1" "December 2011" "" ""
+.TH "NPM\-CHANGELOG" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-changelog\fR \-\- Changes
index cc49177..2f63d8c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-CODING\-STYLE" "1" "December 2011" "" ""
+.TH "NPM\-CODING\-STYLE" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-coding-style\fR \-\- npm\'s "funny" coding style
index 0373faf..db42341 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-COMPLETION" "1" "December 2011" "" ""
+.TH "NPM\-COMPLETION" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-completion\fR \-\- Tab Completion for npm
index f63e155..7374f59 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-CONFIG" "1" "December 2011" "" ""
+.TH "NPM\-CONFIG" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-config\fR \-\- Manage the npm configuration file
index d99d817..f0ba00b 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DEPRECATE" "1" "December 2011" "" ""
+.TH "NPM\-DEPRECATE" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-deprecate\fR \-\- Deprecate a version of a package
index a2678d6..61e16ed 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DEVELOPERS" "1" "December 2011" "" ""
+.TH "NPM\-DEVELOPERS" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-developers\fR \-\- Developer Guide
diff --git a/deps/npm/man/man1/disputes.1 b/deps/npm/man/man1/disputes.1
new file mode 100644 (file)
index 0000000..df52c52
--- /dev/null
@@ -0,0 +1,124 @@
+.\" Generated with Ronnjs/v0.1
+.\" http://github.com/kapouer/ronnjs/
+.
+.TH "NPM\-DISPUTES" "1" "January 2012" "" ""
+.
+.SH "NAME"
+\fBnpm-disputes\fR \-\- Handling Module Name Disputes
+.
+.SH "SYNOPSIS"
+.
+.IP "1" 4
+Get the author email with \fBnpm owner ls <pkgname>\fR
+.
+.IP "2" 4
+Email the author, CC \fIi@izs\.me\fR\|\.
+.
+.IP "3" 4
+After a few weeks, if there\'s no resolution, we\'ll sort it out\.
+.
+.IP "" 0
+.
+.SH "DESCRIPTION"
+There sometimes arise cases where a user publishes a module, and then
+later, some other user wants to use that name\.  Here are some common
+ways that happens (each of these is based on actual events\.)
+.
+.IP "1" 4
+Bob writes a JavaScript module \fBfoo\fR, which is not node\-specific\.
+Bob doesn\'t use node at all\.  Joe wants to use \fBfoo\fR in node, so he
+wraps it in an npm module\.  Some time later, Bob starts using node,
+and wants to take over management of his program\.
+.
+.IP "2" 4
+Bob writes an npm module \fBfoo\fR, and publishes it\.  Perhaps much
+later, Joe finds a bug in \fBfoo\fR, and fixes it\.  He sends a pull
+request to Bob, but Bob doesn\'t have the time to deal with it,
+because he has a new job and a new baby and is focused on his new
+erlang project, and kind of not involved with node any more\.  Joe
+would like to publish a new \fBfoo\fR, but can\'t, because the name is
+taken\.
+.
+.IP "3" 4
+Bob writes a 10\-line flow\-control library, and calls it \fBfoo\fR, and
+publishes it to the npm registry\.  Being a simple little thing, it
+never really has to be updated\.  Joe works for Foo Inc, the makers
+of the critically acclaimed and widely\-marketed \fBfoo\fR JavaScript
+toolkit framework\.  They publish it to npm as \fBfoojs\fR, but people are
+routinely confused when \fBnpm install foo\fR is some different thing\.
+.
+.IP "4" 4
+Bob writes a parser for the widely\-known \fBfoo\fR file format, because
+he needs it for work\.  Then, he gets a new job, and never updates the
+prototype\.  Later on, Joe writes a much more complete \fBfoo\fR parser,
+but can\'t publish, because Bob\'s \fBfoo\fR is in the way\.
+.
+.IP "" 0
+.
+.P
+The validity of Joe\'s claim in each situation can be debated\.  However,
+Joe\'s appropriate course of action in each case is the same\.
+.
+.IP "1" 4
+\fBnpm owner ls foo\fR\|\.  This will tell Joe the email address of the
+owner (Bob)\.
+.
+.IP "2" 4
+Joe emails Bob, explaining the situation \fBas respecfully as possible\fR,
+and what he would like to do with the module name\.  He adds
+isaacs \fIi@izs\.me\fR to the CC list of the email\.  Mention in the email
+that Bob can run \fBnpm owner add joe foo\fR to add Joe as an owner of
+the \fBfoo\fR package\.
+.
+.IP "3" 4
+After a reasonable amount of time, if Bob has not responded, or if
+Bob and Joe can\'t come to any sort of resolution, email isaacs \fIi@izs\.me\fR and we\'ll sort it out\.
+.
+.IP "" 0
+.
+.SH "REASONING"
+In almost every case so far, the parties involved have been able to reach
+an amicable resolution without any major intervention\.  Most people
+really do want to be reasonable, and are probably not even aware that
+they\'re in your way\.
+.
+.P
+Module ecosystems are most vibrant and powerful when they are as
+self\-directed as possible\.  If an admin one day deletes something you
+had worked on, then that is going to make most people quite upset,
+regardless of the justification\.  When humans solve their problems by
+talking to other humans with respect, everyone has the chance to end up
+feeling good about the interaction\.
+.
+.SH "EXCEPTIONS"
+Some things are not allowed, and will be removed without discussion if
+they are brought to the attention of the npm registry admins, including
+but not limited to:
+.
+.IP "1" 4
+Malware (that is, a module designed to exploit or harm the machine on
+which it is installed)
+.
+.IP "2" 4
+Violations of copyright or licenses (for example, cloning an
+MIT\-licensed program, and then removing or changing the copyright and
+license statement)
+.
+.IP "3" 4
+Illegal content\.
+.
+.IP "" 0
+.
+.P
+If you see bad behavior like this, please report it right away\.
+.
+.SH "SEE ALSO"
+.
+.IP "\(bu" 4
+npm help registry
+.
+.IP "\(bu" 4
+npm help owner
+.
+.IP "" 0
+
index 87071a1..7432cad 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DOCS" "1" "December 2011" "" ""
+.TH "NPM\-DOCS" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-docs\fR \-\- Docs for a package in a web browser maybe
index 9278f45..56cffbb 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-EDIT" "1" "December 2011" "" ""
+.TH "NPM\-EDIT" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-edit\fR \-\- Edit an installed package
index e0f65e4..06be08b 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-EXPLORE" "1" "December 2011" "" ""
+.TH "NPM\-EXPLORE" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-explore\fR \-\- Browse an installed package
index b78fe35..0f8857a 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-FAQ" "1" "December 2011" "" ""
+.TH "NPM\-FAQ" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-faq\fR \-\- Frequently Asked Questions
@@ -48,49 +48,74 @@ and its modules go in \fBnpm root \-g\fR\|\.
 .
 .IP "" 0
 .
-.SH "How do I install something everywhere?"
-Install it globally by tacking \fB\-g\fR or \fB\-\-global\fR to the command\.
+.SH "How do I install something on my computer in a central location?"
+Install it globally by tacking \fB\-g\fR or \fB\-\-global\fR to the command\.  (This
+is especially important for command line utilities that need to add
+their bins to the global system \fBPATH\fR\|\.)
 .
 .SH "I installed something globally, but I can\'t `require()` it"
 Install it locally\.
 .
-.SH "I don\'t wanna\."
-Check out \fBnpm link\fR\|\.  You might like it\.
+.P
+The global install location is a place for command\-line utilities
+to put their bins in the system \fBPATH\fR\|\.  It\'s not for use with \fBrequire()\fR\|\.
 .
-.SH "No, I really want 0\.x style \'everything global\' style\."
-Ok, fine\.  Do this:
+.P
+If you \fBrequire()\fR 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\.
 .
-.IP "" 4
+.SH "Why can\'t npm just put everything in one place, like other package managers?"
+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\.
 .
-.nf
-echo \'export NODE_PATH="\'$(npm root \-g)\'"\' >> ~/\.bashrc
-\|\. ~/\.bashrc
-npm config set global true
+.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 \fBnpm help folders\fR for
+more details\.
 .
-.fi
+.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 \fBnpm link\fR command\.
+That\'s what it\'s for\.  Install it globally, then link it into each
+program that uses it\.
 .
-.IP "" 0
+.SH "Whatever, I really want the old style \'everything global\' style\."
+Write your own package manager, then\.  It\'s not that hard\.
 .
 .P
-This is not recommended\.
+npm will not help you do something that is known to be a bad idea\.
+.
+.SH "Should I check my `node_modules` folder into git?"
+Mikeal Rogers answered this question very well:
 .
 .P
-Many things \fBwill not work\fR if you do this\.  Make sure you read and
-understand \fBnpm help config\fR and \fBnpm help global\fR before you complain
-about things being broken\.
+\fIhttp://www\.mikealrogers\.com/posts/nodemodules\-in\-git\.html\fR
 .
 .P
-When you realize what a mistake it was, do this to switch back:
+tl;dr
 .
-.IP "" 4
+.IP "\(bu" 4
+Check \fBnode_modules\fR into git for things you \fBdeploy\fR, such as
+websites and apps\.
 .
-.nf
-npm config delete global \-\-local
+.IP "\(bu" 4
+Do not check \fBnode_modules\fR into git for libraries and modules
+intended to be reused\.
 .
-.fi
+.IP "\(bu" 4
+Use npm to manage dependencies in your dev environment, but not in
+your deployment scripts\.
 .
 .IP "" 0
 .
+.SH "Is it \'npm\' or \'NPM\' or \'Npm\'?"
+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\.)
+.
 .SH "If \'npm\' is an acronym, why is it never capitalized?"
 Contrary to the belief of many, "npm" is not in fact an abbreviation for
 "Node Package Manager"\.  It is a recursive bacronymic abbreviation for
@@ -103,7 +128,7 @@ National Association of Pastoral Musicians\.  You can learn more
 about them at \fIhttp://npm\.org/\fR\|\.
 .
 .P
-In software, "NPM" is a non\-parametric mapping utility written by
+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 \fIhttp://www\.cabiatl\.com/mricro/npm/\fR\|\.
 .
@@ -255,11 +280,9 @@ Go to \fIhttp://admin\.npmjs\.org/reset\fR\|\.
 .
 .SH "I get ECONNREFUSED a lot\.  What\'s up?"
 Either the registry is down, or node\'s DNS isn\'t able to reach out\.
-This happens a lot if you don\'t follow \fIall\fR the steps in the Cygwin
-setup doc\.
 .
 .P
-To check if the registry is down, open up \fIhttp://registry\.npmjs\.org/\-/short\fR
+To check if the registry is down, open up \fIhttp://registry\.npmjs\.org/\fR
 in a web browser\.  This will also tell you if you are just unable to
 access the internet for some reason\.
 .
index db46c2a..394f72d 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-FOLDERS" "1" "December 2011" "" ""
+.TH "NPM\-FOLDERS" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-folders\fR \-\- Folder Structures Used by npm
index e079ac9..b2959ab 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-HELP\-SEARCH" "1" "December 2011" "" ""
+.TH "NPM\-HELP\-SEARCH" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-help-search\fR \-\- Search npm help documentation
index 5637baa..5032a59 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-HELP" "1" "December 2011" "" ""
+.TH "NPM\-HELP" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-help\fR \-\- Get help on npm
index d2707f3..4326576 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-INDEX" "1" "December 2011" "" ""
+.TH "NPM\-INDEX" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-index\fR \-\- Index of all npm documentation
@@ -45,6 +45,9 @@
 .SH "npm help developers"
  Developer Guide
 .
+.SH "npm help disputes"
+ Handling Module Name Disputes
+.
 .SH "npm help docs"
  Docs for a package in a web browser maybe
 .
index 19790f0..1ab75cb 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-INIT" "1" "December 2011" "" ""
+.TH "NPM\-INIT" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-init\fR \-\- Interactively create a package\.json file
index 65a00f8..651ee17 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-INSTALL" "1" "December 2011" "" ""
+.TH "NPM\-INSTALL" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-install\fR \-\- Install a package
index 1990285..73087c0 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-JSON" "1" "December 2011" "" ""
+.TH "NPM\-JSON" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-json\fR \-\- Specifics of npm\'s package\.json handling
index 6c4e90e..83d73a5 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-LINK" "1" "December 2011" "" ""
+.TH "NPM\-LINK" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-link\fR \-\- Symlink a package folder
index dcfbea0..95c6362 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-LS" "1" "December 2011" "" ""
+.TH "NPM\-LS" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-ls\fR \-\- List installed packages
index f625b73..4a657b4 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM" "1" "December 2011" "" ""
+.TH "NPM" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm\fR \-\- node package manager
@@ -14,7 +14,7 @@ npm <command> [args]
 .fi
 .
 .SH "VERSION"
-1.1.0-beta-7
+1.1.0-beta-10
 .
 .SH "DESCRIPTION"
 npm is the package manager for the Node JavaScript platform\.  It puts
index 214d1bf..658d311 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-OUTDATED" "1" "December 2011" "" ""
+.TH "NPM\-OUTDATED" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-outdated\fR \-\- Check for outdated packages
index 67d9125..719fd66 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-OWNER" "1" "December 2011" "" ""
+.TH "NPM\-OWNER" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-owner\fR \-\- Manage package owners
@@ -51,5 +51,8 @@ npm help registry
 .IP "\(bu" 4
 npm help adduser
 .
+.IP "\(bu" 4
+npm help disputes
+.
 .IP "" 0
 
index f2665cd..578659d 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PACK" "1" "December 2011" "" ""
+.TH "NPM\-PACK" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-pack\fR \-\- Create a tarball from a package
index 3e0d158..235daa5 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PREFIX" "1" "December 2011" "" ""
+.TH "NPM\-PREFIX" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-prefix\fR \-\- Display prefix
index c15a338..25c1abf 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PRUNE" "1" "December 2011" "" ""
+.TH "NPM\-PRUNE" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-prune\fR \-\- Remove extraneous packages
index 9e2bcd1..51bc949 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PUBLISH" "1" "December 2011" "" ""
+.TH "NPM\-PUBLISH" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-publish\fR \-\- Publish a package
index f16e9dc..8836b1b 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-REBUILD" "1" "December 2011" "" ""
+.TH "NPM\-REBUILD" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-rebuild\fR \-\- Rebuild a package
index c2f8ebd..e5b552e 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-REGISTRY" "1" "December 2011" "" ""
+.TH "NPM\-REGISTRY" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-registry\fR \-\- The JavaScript Package Registry
@@ -103,5 +103,8 @@ npm help config
 .IP "\(bu" 4
 npm help developers
 .
+.IP "\(bu" 4
+npm help disputes
+.
 .IP "" 0
 
index 9196d05..b8e7242 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-REMOVAL" "1" "December 2011" "" ""
+.TH "NPM\-REMOVAL" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-removal\fR \-\- Cleaning the Slate
index 7565334..a5fc786 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RESTART" "1" "December 2011" "" ""
+.TH "NPM\-RESTART" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-restart\fR \-\- Start a package
index 81eb21a..6f0f8c0 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-ROOT" "1" "December 2011" "" ""
+.TH "NPM\-ROOT" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-root\fR \-\- Display npm root
index 59415b3..1561bb9 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RUN\-SCRIPT" "1" "December 2011" "" ""
+.TH "NPM\-RUN\-SCRIPT" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-run-script\fR \-\- Run arbitrary package scripts
index 71b1b79..ff949ba 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SCRIPTS" "1" "December 2011" "" ""
+.TH "NPM\-SCRIPTS" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-scripts\fR \-\- How npm handles the "scripts" field
index 39985a7..52a7784 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SEARCH" "1" "December 2011" "" ""
+.TH "NPM\-SEARCH" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-search\fR \-\- Search for packages
index 63bec22..892b033 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SEMVER" "1" "December 2011" "" ""
+.TH "NPM\-SEMVER" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-semver\fR \-\- The semantic versioner for npm
index 6c82876..3a43c8c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-STAR" "1" "December 2011" "" ""
+.TH "NPM\-STAR" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-star\fR \-\- Mark your favorite packages
index f6150ba..acc0fc4 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-START" "1" "December 2011" "" ""
+.TH "NPM\-START" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-start\fR \-\- Start a package
index 600af20..96d71ef 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-STOP" "1" "December 2011" "" ""
+.TH "NPM\-STOP" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-stop\fR \-\- Stop a package
index 72cc8f6..831a11f 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SUBMODULE" "1" "December 2011" "" ""
+.TH "NPM\-SUBMODULE" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-submodule\fR \-\- Add a package as a git submodule
index c57b346..b057321 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-TAG" "1" "December 2011" "" ""
+.TH "NPM\-TAG" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-tag\fR \-\- Tag a published version
index c9fc1da..1fc73a4 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-TEST" "1" "December 2011" "" ""
+.TH "NPM\-TEST" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-test\fR \-\- Test a package
index 723fe71..dd96d17 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RM" "1" "December 2011" "" ""
+.TH "NPM\-RM" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-rm\fR \-\- Remove a package
index 738e415..22b93d1 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-UNPUBLISH" "1" "December 2011" "" ""
+.TH "NPM\-UNPUBLISH" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-unpublish\fR \-\- Remove a package from the registry
index 2939cf7..73cccbe 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-UPDATE" "1" "December 2011" "" ""
+.TH "NPM\-UPDATE" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-update\fR \-\- Update a package
index 7ce8fe1..bc62751 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-VERSION" "1" "December 2011" "" ""
+.TH "NPM\-VERSION" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-version\fR \-\- Bump a package version
index 23e41a4..774fdba 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-VIEW" "1" "December 2011" "" ""
+.TH "NPM\-VIEW" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-view\fR \-\- View registry info
index c25c5cf..1d7f502 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-WHOAMI" "1" "December 2011" "" ""
+.TH "NPM\-WHOAMI" "1" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-whoami\fR \-\- Display npm username
index 930d9a4..a318723 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BIN" "3" "December 2011" "" ""
+.TH "NPM\-BIN" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-bin\fR \-\- Display npm bin folder
index 719146d..61deea7 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BUGS" "3" "December 2011" "" ""
+.TH "NPM\-BUGS" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-bugs\fR \-\- Bugs for a package in a web browser maybe
index 2081c9e..38a6e0a 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-COMMANDS" "3" "December 2011" "" ""
+.TH "NPM\-COMMANDS" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-commands\fR \-\- npm commands
index 97fc1c6..05e64b0 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-CONFIG" "3" "December 2011" "" ""
+.TH "NPM\-CONFIG" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-config\fR \-\- Manage the npm configuration files
index 0365cbd..2786d1f 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DEPRECATE" "3" "December 2011" "" ""
+.TH "NPM\-DEPRECATE" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-deprecate\fR \-\- Deprecate a version of a package
index afed3f2..200df58 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DOCS" "3" "December 2011" "" ""
+.TH "NPM\-DOCS" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-docs\fR \-\- Docs for a package in a web browser maybe
index bb933e8..5c6e5e7 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-EDIT" "3" "December 2011" "" ""
+.TH "NPM\-EDIT" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-edit\fR \-\- Edit an installed package
index a5050a1..c6443f3 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-EXPLORE" "3" "December 2011" "" ""
+.TH "NPM\-EXPLORE" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-explore\fR \-\- Browse an installed package
index 50ee8f4..61d54c1 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-HELP\-SEARCH" "3" "December 2011" "" ""
+.TH "NPM\-HELP\-SEARCH" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-help-search\fR \-\- Search the help pages
index 8152fa2..31f508d 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "INIT" "3" "December 2011" "" ""
+.TH "INIT" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBinit\fR \-\- Interactively create a package\.json file
index 23ff2de..89d0eb9 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-INSTALL" "3" "December 2011" "" ""
+.TH "NPM\-INSTALL" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-install\fR \-\- install a package programmatically
index cfee925..dfe050c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-LINK" "3" "December 2011" "" ""
+.TH "NPM\-LINK" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-link\fR \-\- Symlink a package folder
index b01b83c..fe47803 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-LOAD" "3" "December 2011" "" ""
+.TH "NPM\-LOAD" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-load\fR \-\- Load config settings
index 8a9d299..1c9e9ec 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-LS" "3" "December 2011" "" ""
+.TH "NPM\-LS" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-ls\fR \-\- List installed packages
index 5fd385c..b15d863 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM" "3" "December 2011" "" ""
+.TH "NPM" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm\fR \-\- node package manager
@@ -21,7 +21,7 @@ npm\.load(configObject, function (er, npm) {
 .fi
 .
 .SH "VERSION"
-1.1.0-beta-7
+1.1.0-beta-10
 .
 .SH "DESCRIPTION"
 This is the API documentation for npm\.
index b6c33ec..68940b3 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-OUTDATED" "3" "December 2011" "" ""
+.TH "NPM\-OUTDATED" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-outdated\fR \-\- Check for outdated packages
index 64049a8..7da0e4a 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-OWNER" "3" "December 2011" "" ""
+.TH "NPM\-OWNER" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-owner\fR \-\- Manage package owners
index ba6a38e..9b33661 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PACK" "3" "December 2011" "" ""
+.TH "NPM\-PACK" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-pack\fR \-\- Create a tarball from a package
index 36fac47..6f1db94 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PREFIX" "3" "December 2011" "" ""
+.TH "NPM\-PREFIX" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-prefix\fR \-\- Display prefix
index 27d11d6..16b4d93 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PRUNE" "3" "December 2011" "" ""
+.TH "NPM\-PRUNE" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-prune\fR \-\- Remove extraneous packages
index 6ed4bbd..4128081 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PUBLISH" "3" "December 2011" "" ""
+.TH "NPM\-PUBLISH" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-publish\fR \-\- Publish a package
index c15d974..3f284c9 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-REBUILD" "3" "December 2011" "" ""
+.TH "NPM\-REBUILD" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-rebuild\fR \-\- Rebuild a package
index dfb7509..4393955 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RESTART" "3" "December 2011" "" ""
+.TH "NPM\-RESTART" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-restart\fR \-\- Start a package
index 22455c9..07c1b0c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-ROOT" "3" "December 2011" "" ""
+.TH "NPM\-ROOT" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-root\fR \-\- Display npm root
index 570e7b2..b5f03e2 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RUN\-SCRIPT" "3" "December 2011" "" ""
+.TH "NPM\-RUN\-SCRIPT" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-run-script\fR \-\- Run arbitrary package scripts
index cfb9c4a..4c4a4a2 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SEARCH" "3" "December 2011" "" ""
+.TH "NPM\-SEARCH" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-search\fR \-\- Search for packages
index 1265c53..a050305 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-START" "3" "December 2011" "" ""
+.TH "NPM\-START" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-start\fR \-\- Start a package
index fd09eca..302d727 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-STOP" "3" "December 2011" "" ""
+.TH "NPM\-STOP" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-stop\fR \-\- Stop a package
index f21cd09..8c60894 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SUBMODULE" "3" "December 2011" "" ""
+.TH "NPM\-SUBMODULE" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-submodule\fR \-\- Add a package as a git submodule
index 0552bb2..ab48222 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-TAG" "3" "December 2011" "" ""
+.TH "NPM\-TAG" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-tag\fR \-\- Tag a published version
index 388cfdc..3b9514a 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-TEST" "3" "December 2011" "" ""
+.TH "NPM\-TEST" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-test\fR \-\- Test a package
index 0b4c68d..0349773 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-UNINSTALL" "3" "December 2011" "" ""
+.TH "NPM\-UNINSTALL" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-uninstall\fR \-\- uninstall a package programmatically
index 84bd536..91e6677 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-UNPUBLISH" "3" "December 2011" "" ""
+.TH "NPM\-UNPUBLISH" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-unpublish\fR \-\- Remove a package from the registry
index 898ed80..299006b 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-UPDATE" "3" "December 2011" "" ""
+.TH "NPM\-UPDATE" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-update\fR \-\- Update a package
index 09981f4..1925688 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-VERSION" "3" "December 2011" "" ""
+.TH "NPM\-VERSION" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-version\fR \-\- Bump a package version
index 7f86fb7..d3485f6 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-VIEW" "3" "December 2011" "" ""
+.TH "NPM\-VIEW" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-view\fR \-\- View registry info
index d20d3d3..58d3462 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs/v0.1
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-WHOAMI" "3" "December 2011" "" ""
+.TH "NPM\-WHOAMI" "3" "January 2012" "" ""
 .
 .SH "NAME"
 \fBnpm-whoami\fR \-\- Display npm username
index c16750a..8a98163 100644 (file)
@@ -21,6 +21,7 @@ function LinkWriter (props) {
     throw new Error("Non-link type "+ props.type)
   }
 
+  if (props.linkpath === "") props.linkpath = "."
   if (!props.linkpath) {
     me.error("Need linkpath property to create " + props.type)
   }
index af58b94..eb85615 100644 (file)
@@ -2,7 +2,7 @@
   "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
   "name": "fstream",
   "description": "Advanced file system stream things",
-  "version": "0.1.10",
+  "version": "0.1.11",
   "repository": {
     "type": "git",
     "url": "git://github.com/isaacs/fstream.git"
index c713c57..ed44686 100644 (file)
@@ -158,12 +158,12 @@ Pack.prototype._process = function () {
       break
     case "Link":
       var lp = path.resolve(path.dirname(entry.path), entry.linkpath)
-      wprops.linkpath = path.relative(root, lp)
+      wprops.linkpath = path.relative(root, lp) || "."
       wprops.size = 0
       break
     case "SymbolicLink":
       var lp = path.resolve(path.dirname(entry.path), entry.linkpath)
-      wprops.linkpath = path.relative(path.dirname(entry.path), lp)
+      wprops.linkpath = path.relative(path.dirname(entry.path), lp) || "."
       wprops.size = 0
       break
   }
index 6877cf2..2f94239 100644 (file)
@@ -2,7 +2,7 @@
   "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
   "name": "tar",
   "description": "tar for node",
-  "version": "0.1.9",
+  "version": "0.1.10",
   "repository": {
     "type": "git",
     "url": "git://github.com/isaacs/node-tar.git"
index 0f76c0d..9a2fb94 100644 (file)
@@ -2,7 +2,7 @@
 , "publishConfig": { "tag": "alpha", "proprietary-attribs": false }
 , "description": "A package manager for node"
 , "keywords": [ "package manager", "modules", "install", "package.json" ]
-, "version": "1.1.0-beta-7"
+, "version": "1.1.0-beta-10"
 , "preferGlobal": true
 , "config": { "publishtest": false }
 , "homepage": "http://npmjs.org/"
index 16fbfe6..87de5ef 100755 (executable)
@@ -137,9 +137,39 @@ else
   clean="no"
 fi
 
+node_version=`"$node" --version 2>&1`
+ret=$?
+if [ $ret -ne 0 ]; then
+  echo "You need node to run this program." >&2
+  echo "node --version reports: $node_version" >&2
+  echo "with exit code = $ret" >&2
+  echo "Please install node before continuing." >&2
+  exit $ret
+fi
+
 t="${npm_install}"
 if [ -z "$t" ]; then
-  t="latest"
+  # switch based on node version.
+  # note that we can only use strict sh-compatible patterns here.
+  case $node_version in
+    0.[0123].* | v0.[0123].*)
+      echo "You are using an outdated and unsupported version of" >&2
+      echo "node ($node_version).  Please update node and try again." >&2
+      exit 99
+      ;;
+    v0.[45].* | 0.[45].*)
+      echo "install npm@1.0"
+      t=1.0
+      ;;
+    v0.[678].* | 0.[678].*)
+      echo "install npm@1.1"
+      t=1.1
+      ;;
+    *)
+      echo "install npm@latest"
+      t="latest"
+      ;;
+  esac
 fi
 
 # the npmca cert
@@ -196,22 +226,18 @@ cd "$TMP" \
      | $tar -xzf - \
   && rm "$cacert" \
   && cd "$TMP"/* \
-  && (node_version=`"$node" --version 2>&1`
-      ret=$?
-      if [ $ret -eq 0 ]; then
-        req=`"$node" bin/read-package-json.js package.json engines.node`
-        if [ -d node_modules ]; then
-          "$node" node_modules/semver/bin/semver -v "$node_version" -r "$req"
-          ret=$?
-        else
-          "$node" bin/semver.js -v "$node_version" -r "$req"
-          ret=$?
-        fi
+  && (req=`"$node" bin/read-package-json.js package.json engines.node`
+      if [ -d node_modules ]; then
+        "$node" node_modules/semver/bin/semver -v "$node_version" -r "$req"
+        ret=$?
+      else
+        "$node" bin/semver.js -v "$node_version" -r "$req"
+        ret=$?
       fi
       if [ $ret -ne 0 ]; then
         echo "You need node $req to run this program." >&2
         echo "node --version reports: $node_version" >&2
-        echo "Please upgrade node before continuing."
+        echo "Please upgrade node before continuing." >&2
         exit $ret
       fi) \
   && (ver=`"$node" bin/read-package-json.js package.json version`
diff --git a/deps/npm/scripts/release.sh b/deps/npm/scripts/release.sh
new file mode 100644 (file)
index 0000000..fa36376
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# script for creating a zip and tarball for inclusion in node
+
+unset CDPATH
+
+set -e
+
+rm -rf release *.tgz || true
+mkdir release
+npm pack --loglevel error >/dev/null
+mv *.tgz release
+cd release
+tar xzf *.tgz
+
+# remove some unnecessary stuff.
+rm -rf package/node_modules/*/{test,bench,example}*
+rm -rf package/test/{disabled,output,bin,root}*
+
+mkdir node_modules
+mv package node_modules/npm
+
+# make the zip for windows users
+cp node_modules/npm/bin/*.cmd .
+zipname=npm-$(npm -v).zip
+zip -q -9 -r -X "$zipname" *.cmd node_modules
+
+# make the tar for node's deps
+cd node_modules
+tarname=npm-$(npm -v).tgz
+tar czf "$tarname" npm
+
+cd ..
+mv "node_modules/$tarname" .
+
+rm -rf *.cmd
+rm -rf node_modules
+
+echo "release/$tarname"
+echo "release/$zipname"
index 08f8a34..c864450 100644 (file)
@@ -71,6 +71,7 @@ function exec (cmd, shouldFail, cb) {
 
   // special: replace 'node' with the current execPath,
   // and 'npm' with the thing we installed.
+  var cmdShow = cmd
   cmd = cmd.replace(/^npm /, path.resolve(npmPath, "npm") + " ")
   cmd = cmd.replace(/^node /, process.execPath + " ")
 
@@ -85,11 +86,11 @@ function exec (cmd, shouldFail, cb) {
     execCount ++
     if (!shouldFail && !er || shouldFail && er) {
       // stdout = (""+stdout).trim()
-      console.log("ok " + execCount + " " + cmd)
+      console.log("ok " + execCount + " " + cmdShow)
       return cb()
     } else {
-      console.log("not ok " + execCount + " " + cmd)
-      cb(new Error("failed "+cmd))
+      console.log("not ok " + execCount + " " + cmdShow)
+      cb(new Error("failed "+cmdShow))
     }
   })
 }