npm: upgrade to 1.2.15
authorisaacs <i@izs.me>
Thu, 21 Mar 2013 00:49:57 +0000 (17:49 -0700)
committerisaacs <i@izs.me>
Thu, 21 Mar 2013 00:49:57 +0000 (17:49 -0700)
120 files changed:
deps/npm/.npmignore
deps/npm/doc/cli/faq.md
deps/npm/doc/cli/json.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/shrinkwrap.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/dedupe.html
deps/npm/html/doc/deprecate.html
deps/npm/html/doc/developers.html
deps/npm/html/doc/disputes.html
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/global.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/ls.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/rm.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/shrinkwrap.html
deps/npm/html/doc/star.html
deps/npm/html/doc/stars.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/cache.js
deps/npm/lib/install.js
deps/npm/lib/rebuild.js
deps/npm/lib/utils/exec.js
deps/npm/lib/utils/fetch.js
deps/npm/man/man1/faq.1
deps/npm/man/man1/json.1
deps/npm/man/man1/ls.1
deps/npm/man/man1/npm.1
deps/npm/man/man3/npm.3
deps/npm/node_modules/fstream-npm/fstream-npm.js
deps/npm/node_modules/fstream-npm/package.json
deps/npm/node_modules/read-package-json/package.json
deps/npm/node_modules/read-package-json/read-json.js
deps/npm/node_modules/request/main.js
deps/npm/package.json
deps/npm/test/tap/peer-deps-invalid.js
deps/npm/test/tap/peer-deps-invalid/package.json
deps/npm/test/tap/peer-deps-without-package-json.js

index bd0982f..6c258ea 100644 (file)
@@ -1,4 +1,5 @@
 *.swp
+.*.swp
 npm-debug.log
 /test/bin
 /test/output.log
@@ -20,3 +21,5 @@ html/*.png
 !.npmignore
 
 /npm-*.tgz
+
+*.pyc
index d6cc041..518fbef 100644 (file)
@@ -77,7 +77,7 @@ npm will not help you do something that is known to be a bad idea.
 No.  This will never happen.  This question comes up sometimes,
 because it seems silly from the outside that npm couldn't just be
 configured to put stuff somewhere else, and then npm could load them
-from there.  It's an arbitrary spelling choice, right?  What's the bg
+from there.  It's an arbitrary spelling choice, right?  What's the big
 deal?
 
 At the time of this writing, the string `'node_modules'` appears 151
index c6cedaa..403f7f8 100644 (file)
@@ -118,6 +118,27 @@ you can specify the value for "bugs" as a simple string instead of an object.
 
 If a url is provided, it will be used by the `npm bugs` command.
 
+## license
+
+You should specify a license for your package so that people know how they are
+permitted to use it, and any restrictions you're placing on it.
+
+The simplest way, assuming you're using a common license such as BSD or MIT, is
+to just specify the name of the license you're using, like this:
+
+    { "license" : "BSD" }
+
+If you have more complex licensing terms, or you want to provide more detail
+in your package.json file, you can use the more verbose plural form, like this:
+
+    "licenses" : [
+      { "type" : "MyLicense"
+      , "url" : "http://github.com/owner/project/path/to/license"
+      }
+    ]
+
+It's also a good idea to include a license file at the top level in your package.
+
 ## people fields: author, contributors
 
 The "author" is one person.  "contributors" is an array of people.  A "person"
@@ -416,9 +437,9 @@ In this case, it's best to list these additional items in a
 `devDependencies` hash.
 
 These things will be installed whenever the `--dev` configuration flag
-is set.  This flag is set automatically when doing `npm link`, and can
-be managed like any other npm configuration param.  See `npm-config(1)`
-for more on the topic.
+is set.  This flag is set automatically when doing `npm link` or when doing
+`npm install` from the root of a package, and can be managed like any other npm
+configuration param.  See `npm-config(1)` for more on the topic.
 
 ## bundledDependencies
 
index 7aa186c..7408820 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.2.14</p>
+<p id="footer">bin &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 62ebbe4..153d5d5 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.2.14</p>
+<p id="footer">bugs &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 003ac48..816c5d9 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.2.14</p>
+<p id="footer">commands &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 11869b3..59eee21 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.2.14</p>
+<p id="footer">config &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a0fdbd5..0402258 100644 (file)
@@ -32,7 +32,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.2.14</p>
+<p id="footer">deprecate &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 4035df0..c8e7d12 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.2.14</p>
+<p id="footer">docs &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 18075e6..b400777 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.2.14</p>
+<p id="footer">edit &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 3478c19..4a2ffc0 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 &#39;args&#39; 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.2.14</p>
+<p id="footer">explore &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 25d3362..faf9903 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.2.14</p>
+<p id="footer">help-search &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 0fea7b2..d6513b7 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.2.14</p>
+<p id="footer">init &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d372eee..717bf23 100644 (file)
@@ -25,7 +25,7 @@ the name of a package to be installed.</p>
 <p>Finally, &#39;callback&#39; 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.2.14</p>
+<p id="footer">install &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 8ed7a24..62f259a 100644 (file)
@@ -39,7 +39,7 @@ npm.commands.link(&#39;redis&#39;, 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.2.14</p>
+<p id="footer">link &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 400fa9e..8ae944b 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.2.14</p>
+<p id="footer">load &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 0eadc89..9f2dc0b 100644 (file)
@@ -59,7 +59,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.2.14</p>
+<p id="footer">ls &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index cef8772..07adafc 100644 (file)
@@ -24,7 +24,7 @@ npm.load([configObject,] function (er, npm) {
 
 <h2 id="VERSION">VERSION</h2>
 
-<p>1.2.14</p>
+<p>1.2.15</p>
 
 <h2 id="DESCRIPTION">DESCRIPTION</h2>
 
@@ -92,7 +92,7 @@ method names.  Use the <code>npm.deref</code> method to find the real name.</p>
 
 <pre><code>var cmd = npm.deref(&quot;unp&quot;) // cmd === &quot;unpublish&quot;</code></pre>
 </div>
-<p id="footer">npm &mdash; npm@1.2.14</p>
+<p id="footer">npm &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 437fae7..74fab48 100644 (file)
@@ -19,7 +19,7 @@ currently outdated.</p>
 
 <p>If the &#39;packages&#39; parameter is left out, npm will check all packages.</p>
 </div>
-<p id="footer">outdated &mdash; npm@1.2.14</p>
+<p id="footer">outdated &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 703ecb6..b87076d 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.2.14</p>
+<p id="footer">owner &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 0a33a08..05007c1 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.2.14</p>
+<p id="footer">pack &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index cecde76..a878b03 100644 (file)
@@ -21,7 +21,7 @@
 
 <p>This function is not useful programmatically</p>
 </div>
-<p id="footer">prefix &mdash; npm@1.2.14</p>
+<p id="footer">prefix &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 4fa189b..a4ae0bb 100644 (file)
@@ -23,7 +23,7 @@
 <p>Extraneous packages are packages that are not listed on the parent
 package&#39;s dependencies list.</p>
 </div>
-<p id="footer">prune &mdash; npm@1.2.14</p>
+<p id="footer">prune &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index f7804ab..10f78b0 100644 (file)
@@ -32,7 +32,7 @@ the registry.  Overwrites when the &quot;force&quot; environment variable is set
 
 <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.2.14</p>
+<p id="footer">publish &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index c6d80ad..48bc9ed 100644 (file)
@@ -22,7 +22,7 @@ the new binary. If no &#39;packages&#39; parameter is specify, every package wil
 
 <p>See <code>npm help build</code></p>
 </div>
-<p id="footer">rebuild &mdash; npm@1.2.14</p>
+<p id="footer">rebuild &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 9dc9063..f49699c 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.2.14</p>
+<p id="footer">restart &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index c788442..5f10b0a 100644 (file)
@@ -21,7 +21,7 @@
 
 <p>This function is not useful programmatically.</p>
 </div>
-<p id="footer">root &mdash; npm@1.2.14</p>
+<p id="footer">root &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1d3ee56..e798b8d 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.2.14</p>
+<p id="footer">run-script &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 612b965..06bad4e 100644 (file)
@@ -32,7 +32,7 @@ excluded term (the &quot;searchexclude&quot; config). The search is case insensi
 and doesn&#39;t try to read your mind (it doesn&#39;t do any verb tense matching or the
 like).</p>
 </div>
-<p id="footer">search &mdash; npm@1.2.14</p>
+<p id="footer">search &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 3ac034f..f8273f3 100644 (file)
@@ -26,7 +26,7 @@ but the shrinkwrap file will still be written.</p>
 <p>Finally, &#39;callback&#39; is a function that will be called when the shrinkwrap has
 been saved.</p>
 </div>
-<p id="footer">shrinkwrap &mdash; npm@1.2.14</p>
+<p id="footer">shrinkwrap &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index c8635a8..5bdf9e9 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.2.14</p>
+<p id="footer">start &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 85313fa..e34d188 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.2.14</p>
+<p id="footer">stop &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 2041d4f..492638d 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.2.14</p>
+<p id="footer">submodule &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 056b20b..e33504d 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.2.14</p>
+<p id="footer">tag &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a85c6bf..94a445d 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.2.14</p>
+<p id="footer">test &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 79dda45..ebaf1cc 100644 (file)
@@ -22,7 +22,7 @@ the name of a package to be uninstalled.</p>
 <p>Finally, &#39;callback&#39; 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.2.14</p>
+<p id="footer">uninstall &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 4da7260..5a2ebaa 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.2.14</p>
+<p id="footer">unpublish &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 2d26414..d7688e4 100644 (file)
@@ -18,7 +18,7 @@
 
 <p>The &#39;packages&#39; argument is an array of packages to update. The &#39;callback&#39; parameter will be called when done or when an error occurs.</p>
 </div>
-<p id="footer">update &mdash; npm@1.2.14</p>
+<p id="footer">update &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 155487d..80c7f2f 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.2.14</p>
+<p id="footer">version &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1e27b82..b38642e 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.2.14</p>
+<p id="footer">view &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index fc5df0d..34847eb 100644 (file)
@@ -21,7 +21,7 @@
 
 <p>This function is not useful programmatically</p>
 </div>
-<p id="footer">whoami &mdash; npm@1.2.14</p>
+<p id="footer">whoami &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d46e3c5..573890f 100644 (file)
@@ -240,7 +240,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.2.14</p>
+<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d79b53d..2bc4117 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.2.14</p>
+<p id="footer">adduser &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 4845ea6..d5a833f 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.2.14</p>
+<p id="footer">bin &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ef1947e..3e30012 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.2.14</p>
+<p id="footer">bugs &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7573186..6f6186c 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.2.14</p>
+<p id="footer">build &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7fa6241..348a932 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.2.14</p>
+<p id="footer">bundle &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1a60c87..95003ec 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.2.14</p>
+<p id="footer">cache &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5e1bbb8..d7e0369 100644 (file)
@@ -65,7 +65,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.2.14</p>
+<p id="footer">changelog &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 3327856..b150254 100644 (file)
@@ -182,7 +182,7 @@ set to anything.&quot;</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.2.14</p>
+<p id="footer">coding-style &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index df02879..8297d3f 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.2.14</p>
+<p id="footer">completion &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 54228a0..8120ba7 100644 (file)
@@ -771,7 +771,7 @@ then answer &quot;no&quot; 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.2.14</p>
+<p id="footer">config &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index f26ef09..97b53de 100644 (file)
@@ -57,7 +57,7 @@ registry.</p>
 
 <ul><li><a href="../doc/ls.html">ls(1)</a></li><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
 </div>
-<p id="footer">dedupe &mdash; npm@1.2.14</p>
+<p id="footer">dedupe &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 11ad8a6..96f762a 100644 (file)
@@ -31,7 +31,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.2.14</p>
+<p id="footer">deprecate &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 12bef24..1e77139 100644 (file)
@@ -160,7 +160,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.2.14</p>
+<p id="footer">developers &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 3c8b251..f42aa39 100644 (file)
@@ -86,7 +86,7 @@ an empty tarball, you&#39;re going to be evicted.</li></ol>
 
 <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.2.14</p>
+<p id="footer">disputes &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a2a7e53..a99e308 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.2.14</p>
+<p id="footer">docs &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 8546efa..928f67a 100644 (file)
@@ -37,7 +37,7 @@ or <code>&quot;notepad&quot;</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.2.14</p>
+<p id="footer">edit &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 00c7ca5..3276761 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.2.14</p>
+<p id="footer">explore &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e19ec48..1e89cfb 100644 (file)
@@ -83,7 +83,7 @@ program that uses it.</p>
 <p>No.  This will never happen.  This question comes up sometimes,
 because it seems silly from the outside that npm couldn&#39;t just be
 configured to put stuff somewhere else, and then npm could load them
-from there.  It&#39;s an arbitrary spelling choice, right?  What&#39;s the bg
+from there.  It&#39;s an arbitrary spelling choice, right?  What&#39;s the big
 deal?</p>
 
 <p>At the time of this writing, the string <code>&#39;node_modules&#39;</code> appears 151
@@ -296,7 +296,7 @@ There is not sufficient need to impose namespace rules on everyone.</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.2.14</p>
+<p id="footer">faq &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 66e1955..9da1787 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.2.14</p>
+<p id="footer">folders &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d1006e6..9eb012a 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">global &mdash; npm@1.2.14</p>
+<p id="footer">global &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 48ea7ea..50b9944 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.2.14</p>
+<p id="footer">help-search &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 9f6b848..126c104 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.2.14</p>
+<p id="footer">help &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d036a43..9d02322 100644 (file)
 
 <p> Display npm username</p>
 </div>
-<p id="footer">index &mdash; npm@1.2.14</p>
+<p id="footer">index &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a9e31f5..5265a3c 100644 (file)
@@ -29,7 +29,7 @@ without a really good reason to do so.</p>
 
 <ul><li><a href="https://github.com/isaacs/init-package-json">https://github.com/isaacs/init-package-json</a></li><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.2.14</p>
+<p id="footer">init &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e225cac..d34c0c2 100644 (file)
@@ -136,7 +136,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><li><a href="../doc/shrinkwrap.html">shrinkwrap(1)</a></li></ul>
 </div>
-<p id="footer">install &mdash; npm@1.2.14</p>
+<p id="footer">install &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 9e6c8ac..5a07625 100644 (file)
@@ -107,6 +107,27 @@ you can specify the value for &quot;bugs&quot; as a simple string instead of an
 
 <p>If a url is provided, it will be used by the <code>npm bugs</code> command.</p>
 
+<h2 id="license">license</h2>
+
+<p>You should specify a license for your package so that people know how they are
+permitted to use it, and any restrictions you&#39;re placing on it.</p>
+
+<p>The simplest way, assuming you&#39;re using a common license such as BSD or MIT, is
+to just specify the name of the license you&#39;re using, like this:</p>
+
+<pre><code>{ &quot;license&quot; : &quot;BSD&quot; }</code></pre>
+
+<p>If you have more complex licensing terms, or you want to provide more detail
+in your package.json file, you can use the more verbose plural form, like this:</p>
+
+<pre><code>&quot;licenses&quot; : [
+  { &quot;type&quot; : &quot;MyLicense&quot;
+  , &quot;url&quot; : &quot;http://github.com/owner/project/path/to/license&quot;
+  }
+]</code></pre>
+
+<p>It&#39;s also a good idea to include a license file at the top level in your package.</p>
+
 <h2 id="people-fields-author-contributors">people fields: author, contributors</h2>
 
 <p>The &quot;author&quot; is one person.  &quot;contributors&quot; is an array of people.  A &quot;person&quot;
@@ -384,9 +405,9 @@ the external test or documentation framework that you use.</p>
 <code>devDependencies</code> hash.</p>
 
 <p>These things will be installed whenever the <code>--dev</code> configuration flag
-is set.  This flag is set automatically when doing <code>npm link</code>, and can
-be managed like any other npm configuration param.  See <code><a href="../doc/config.html">config(1)</a></code>
-for more on the topic.</p>
+is set.  This flag is set automatically when doing <code>npm link</code> or when doing
+<code>npm install</code> from the root of a package, and can be managed like any other npm
+configuration param.  See <code><a href="../doc/config.html">config(1)</a></code> for more on the topic.</p>
 
 <h2 id="bundledDependencies">bundledDependencies</h2>
 
@@ -525,7 +546,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.2.14</p>
+<p id="footer">json &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index fa596c9..5200278 100644 (file)
@@ -58,7 +58,7 @@ installation target into your project&#39;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.2.14</p>
+<p id="footer">link &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 085fafa..aa6f673 100644 (file)
@@ -25,7 +25,7 @@ limit the results to only the paths to the packages named.  Note that
 nested packages will <em>also</em> show the paths to the specified packages.
 For example, running <code>npm ls promzard</code> in npm&#39;s source tree will show:</p>
 
-<pre><code>npm@1.2.14 /path/to/npm
+<pre><code>npm@1.2.15 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5</code></pre>
 
@@ -64,7 +64,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">ls &mdash; npm@1.2.14</p>
+<p id="footer">ls &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 2685721..afe018e 100644 (file)
@@ -14,7 +14,7 @@
 
 <h2 id="VERSION">VERSION</h2>
 
-<p>1.2.14</p>
+<p>1.2.15</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.2.14</p>
+<p id="footer">npm &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 776e539..555562a 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.2.14</p>
+<p id="footer">outdated &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 0c7ac99..5a621a9 100644 (file)
@@ -34,7 +34,7 @@ that is not implemented at this time.</p>
 
 <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.2.14</p>
+<p id="footer">owner &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e4820dc..67b5d7e 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.2.14</p>
+<p id="footer">pack &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a63053f..3a7c040 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.2.14</p>
+<p id="footer">prefix &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 749bcf1..461f906 100644 (file)
@@ -25,7 +25,7 @@ package&#39;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.2.14</p>
+<p id="footer">prune &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 39ff4ef..1be13be 100644 (file)
@@ -29,7 +29,7 @@ the registry.  Overwrites when the &quot;--force&quot; 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.2.14</p>
+<p id="footer">publish &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 9ba4422..3987239 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.2.14</p>
+<p id="footer">rebuild &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 6860690..a357c3c 100644 (file)
@@ -95,7 +95,7 @@ ask for help on the <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com
 
 <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.2.14</p>
+<p id="footer">registry &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 147ec98..c07b966 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.2.14</p>
+<p id="footer">removing-npm &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index c96cfe5..cadf142 100644 (file)
@@ -24,7 +24,7 @@ the &quot;start&quot; 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.2.14</p>
+<p id="footer">restart &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1eff400..8336831 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">rm &mdash; npm@1.2.14</p>
+<p id="footer">rm &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 8af398c..b2a11b3 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.2.14</p>
+<p id="footer">root &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ceaa261..4c367ba 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.2.14</p>
+<p id="footer">run-script &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 50cec97..ec25e38 100644 (file)
@@ -218,7 +218,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.2.14</p>
+<p id="footer">scripts &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5cd5cf1..525a8e9 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.2.14</p>
+<p id="footer">search &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index bed1e22..8800ca8 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.2.14</p>
+<p id="footer">semver &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index bc2fcb2..3548e0d 100644 (file)
@@ -169,7 +169,7 @@ versions.</p>
 
 <ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
 </div>
-<p id="footer">shrinkwrap &mdash; npm@1.2.14</p>
+<p id="footer">shrinkwrap &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e78d192..4e42762 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.2.14</p>
+<p id="footer">star &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 14ab445..bf9236d 100644 (file)
@@ -25,7 +25,7 @@ you will most certainly enjoy this command.</p>
 
 <ul><li><a href="../doc/star.html">star(1)</a></li><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">stars &mdash; npm@1.2.14</p>
+<p id="footer">stars &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e4ec2ba..ca7bbde 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.2.14</p>
+<p id="footer">start &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5d6863d..6d715fc 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.2.14</p>
+<p id="footer">stop &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 4950103..b667e1d 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.2.14</p>
+<p id="footer">submodule &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7507e86..e3d12e7 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.2.14</p>
+<p id="footer">tag &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 23a78e6..8e8cdd0 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.2.14</p>
+<p id="footer">test &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 74f3cdd..dcfa8bf 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.2.14</p>
+<p id="footer">uninstall &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 01f5085..5b103d9 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.2.14</p>
+<p id="footer">unpublish &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e7ec872..cdc192f 100644 (file)
@@ -26,7 +26,7 @@ If no package name is specified, all packages in the specified location (global
 
 <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.2.14</p>
+<p id="footer">update &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index bbbe9a2..df2259f 100644 (file)
@@ -49,7 +49,7 @@ Enter passphrase:</code></pre>
 
 <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.2.14</p>
+<p id="footer">version &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 80f250c..c742d80 100644 (file)
@@ -90,7 +90,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.2.14</p>
+<p id="footer">view &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 82b7725..e487591 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.2.14</p>
+<p id="footer">whoami &mdash; npm@1.2.15</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7cb92af..4f8fbc4 100644 (file)
@@ -573,8 +573,8 @@ function addNamed (name, x, data, cb_) {
   })
 }
 
-function addNameTag (name, tag, data, cb) {
-  if (typeof cb !== "function") cb = data, data = null
+function addNameTag (name, tag, data, cb_) {
+  if (typeof cb_ !== "function") cb_ = data, data = null
   log.info("addNameTag", [name, tag])
   var explicit = true
   if (!tag) {
@@ -582,6 +582,15 @@ function addNameTag (name, tag, data, cb) {
     tag = npm.config.get("tag")
   }
 
+  function cb(er, data) {
+    // might be username/project
+    // in that case, try it as a github url.
+    if (er && tag.split("/").length === 2) {
+      return maybeGithub(tag, name, er, cb_)
+    }
+    return cb_(er, data)
+  }
+
   registry.get(name, function (er, data, json, response) {
     if (er) return cb(er)
     engineFilter(data)
@@ -595,13 +604,6 @@ function addNameTag (name, tag, data, cb) {
     }
 
     er = installTargetsError(tag, data)
-
-    // might be username/project
-    // in that case, try it as a github url.
-    if (tag.split("/").length === 2) {
-      return maybeGithub(tag, name, er, cb)
-    }
-
     return cb(er)
   })
 }
index 9f63c74..4db8d58 100644 (file)
@@ -679,7 +679,7 @@ function targetResolver (where, context, deps) {
 
       if (data && !data._from) data._from = what
 
-      return cb(er, data)
+      return cb(er, data || [])
     })
   }
 }
index 16451fb..0c97cf8 100644 (file)
@@ -29,32 +29,12 @@ function rebuild (args, cb) {
 }
 
 function cleanBuild (folders, set, cb) {
-  // https://github.com/isaacs/npm/issues/1872
-  // If there's a wscript, try 'node-waf clean'
-  // But don't die on either of those if they fail.
-  // Just a best-effort kind of deal.
-  asyncMap(folders, function (f, cb) {
-    fs.readdir(f, function (er, files) {
-      // everything should be a dir.
-      if (er) return cb(er)
-      if (files.indexOf("wscript") !== -1) {
-        exec("node-waf", ["clean"], null, false, f, thenBuild)
-      } else thenBuild()
-    })
-    function thenBuild (er) {
-      // ignore error, just continue
-      // it could be that it's not configured yet or whatever.
-      cb()
-    }
-  }, function (er) {
+  npm.commands.build(folders, function (er) {
     if (er) return cb(er)
-    npm.commands.build(folders, function (er) {
-      if (er) return cb(er)
-      console.log(folders.map(function (f) {
-        return set[f] + " " + f
-      }).join("\n"))
-      cb()
-    })
+    console.log(folders.map(function (f) {
+      return set[f] + " " + f
+    }).join("\n"))
+    cb()
   })
 }
 
index 70f0a13..360367c 100644 (file)
@@ -10,6 +10,7 @@ var log = require("npmlog")
   , isRoot = process.getuid && myUID === 0
   , constants = require("constants")
   , uidNumber = require("uid-number")
+  , once = require("once")
 
 function exec (cmd, args, env, takeOver, cwd, uid, gid, cb) {
   if (typeof cb !== "function") cb = gid, gid = null
@@ -45,6 +46,8 @@ function exec (cmd, args, env, takeOver, cwd, uid, gid, cb) {
   var stdout = ""
     , stderr = ""
     , cp = spawn(cmd, args, env, takeOver, cwd, uid, gid)
+  cb = once(cb)
+  cp.on("error", cb)
   cp.stdout && cp.stdout.on("data", function (chunk) {
     if (chunk) stdout += chunk
   })
index b988520..526b836 100644 (file)
@@ -11,11 +11,13 @@ var request = require("request")
   , mkdir = require("mkdirp")
   , chownr = require("chownr")
   , regHost
+  , once = require("once")
 
 module.exports = fetch
 
 function fetch (remote, local, headers, cb) {
   if (typeof cb !== "function") cb = headers, headers = {}
+  cb = once(cb)
   log.verbose("fetch", "to=", local)
   mkdir(path.dirname(local), function (er, made) {
     if (er) return cb(er)
@@ -26,30 +28,36 @@ function fetch (remote, local, headers, cb) {
 function fetch_ (remote, local, headers, cb) {
   var fstr = fs.createWriteStream(local, { mode : npm.modes.file })
   var response = null
-  var calledback = false
+
   fstr.on("error", function (er) {
-    fs.close(fstr.fd, function () {})
-    if (calledback) return
-    calledback = true
-    cb(fstr._ERROR = er)
+    cb(er)
+    fstr.close()
   })
-  fstr.on("open", function () {
-    var req = makeRequest(remote, fstr, headers)
-    req.on("response", function (res) {
-      log.http(res.statusCode, remote)
-      response = res
-    })
+
+  var req = makeRequest(remote, fstr, headers)
+  req.on("response", function (res) {
+    log.http(res.statusCode, remote)
+    response = res
+    response.resume()
+    // Work around bug in node v0.10.0 where the CryptoStream
+    // gets stuck and never starts reading again.
+    if (process.version === "v0.10.0") {
+      response.resume = function (orig) { return function() {
+        var ret = orig.apply(response, arguments)
+        if (response.socket.encrypted)
+          response.socket.encrypted.read(0)
+        return ret
+      }}(response.resume)
+    }
   })
+
   fstr.on("close", function () {
-    if (calledback) return
-    calledback = true
+    var er
     if (response && response.statusCode && response.statusCode >= 400) {
-      var er = new Error(response.statusCode + " "
-                        + require("http").STATUS_CODES[response.statusCode])
-      cb(fstr._ERROR = er, response)
-    } else {
-      cb(null, response)
+      er = new Error(response.statusCode + " "
+                    + require("http").STATUS_CODES[response.statusCode])
     }
+    cb(er, response)
   })
 }
 
@@ -73,6 +81,7 @@ function makeRequest (remote, fstr, headers) {
   var opts = { url: remote
              , proxy: proxy
              , strictSSL: npm.config.get("strict-ssl")
+             , rejectUnauthorized: npm.config.get("strict-ssl")
              , ca: remote.host === regHost ? npm.config.get("ca") : undefined
              , headers: { "user-agent": npm.config.get("user-agent") }}
   var req = request(opts)
@@ -80,5 +89,5 @@ function makeRequest (remote, fstr, headers) {
     fstr.emit("error", er)
   })
   req.pipe(fstr)
-  return req;
+  return req
 }
index e0cb85f..b74deea 100644 (file)
@@ -93,7 +93,7 @@ npm will not help you do something that is known to be a bad idea\.
 No\.  This will never happen\.  This question comes up sometimes,
 because it seems silly from the outside that npm couldn\'t just be
 configured to put stuff somewhere else, and then npm could load them
-from there\.  It\'s an arbitrary spelling choice, right?  What\'s the bg
+from there\.  It\'s an arbitrary spelling choice, right?  What\'s the big
 deal?
 .
 .P
index 3a79167..4f290d5 100644 (file)
@@ -155,6 +155,43 @@ you can specify the value for "bugs" as a simple string instead of an object\.
 .P
 If a url is provided, it will be used by the \fBnpm bugs\fR command\.
 .
+.SH "license"
+You should specify a license for your package so that people know how they are
+permitted to use it, and any restrictions you\'re placing on it\.
+.
+.P
+The simplest way, assuming you\'re using a common license such as BSD or MIT, is
+to just specify the name of the license you\'re using, like this:
+.
+.IP "" 4
+.
+.nf
+{ "license" : "BSD" }
+.
+.fi
+.
+.IP "" 0
+.
+.P
+If you have more complex licensing terms, or you want to provide more detail
+in your package\.json file, you can use the more verbose plural form, like this:
+.
+.IP "" 4
+.
+.nf
+"licenses" : [
+  { "type" : "MyLicense"
+  , "url" : "http://github\.com/owner/project/path/to/license"
+  }
+]
+.
+.fi
+.
+.IP "" 0
+.
+.P
+It\'s also a good idea to include a license file at the top level in your package\.
+.
 .SH "people fields: author, contributors"
 The "author" is one person\.  "contributors" is an array of people\.  A "person"
 is an object with a "name" field and optionally "url" and "email", like this:
@@ -594,9 +631,8 @@ In this case, it\'s best to list these additional items in a \fBdevDependencies\
 .
 .P
 These things will be installed whenever the \fB\-\-dev\fR configuration flag
-is set\.  This flag is set automatically when doing \fBnpm link\fR, and can
-be managed like any other npm configuration param\.  See \fBnpm help config\fR
-for more on the topic\.
+is set\.  This flag is set automatically when doing \fBnpm link\fR or when doing \fBnpm install\fR from the root of a package, and can be managed like any other npm
+configuration param\.  See \fBnpm help config\fR for more on the topic\.
 .
 .SH "bundledDependencies"
 Array of package names that will be bundled when publishing the package\.
index 557aa5a..6e64b11 100644 (file)
@@ -29,7 +29,7 @@ For example, running \fBnpm ls promzard\fR in npm\'s source tree will show:
 .IP "" 4
 .
 .nf
-npm@1.2.14 /path/to/npm
+npm@1.2.15 /path/to/npm
 └─┬ init\-package\-json@0\.0\.4
   └── promzard@0\.1\.5
 .
index e7871ea..ea35a5f 100644 (file)
@@ -14,7 +14,7 @@ npm <command> [args]
 .fi
 .
 .SH "VERSION"
-1.2.14
+1.2.15
 .
 .SH "DESCRIPTION"
 npm is the package manager for the Node JavaScript platform\.  It puts
index ca908fd..bdc402b 100644 (file)
@@ -21,7 +21,7 @@ npm\.load([configObject,] function (er, npm) {
 .fi
 .
 .SH "VERSION"
-1.2.14
+1.2.15
 .
 .SH "DESCRIPTION"
 This is the API documentation for npm\.
index 26e80c1..23e3fce 100644 (file)
@@ -188,9 +188,8 @@ Packer.prototype.readRules = function (buf, e) {
   try {
     var p = this.package = JSON.parse(buf)
   } catch (er) {
-    er.file = path.resolve(this.path, e)
-    this.error(er)
-    return
+    // just pretend it's a normal old file, not magic at all.
+    return []
   }
 
   if (this === this.root) {
index 8805cb3..88824e0 100644 (file)
@@ -6,7 +6,7 @@
   },
   "name": "fstream-npm",
   "description": "fstream class for creating npm packages",
-  "version": "0.1.3",
+  "version": "0.1.4",
   "repository": {
     "type": "git",
     "url": "git://github.com/isaacs/fstream-npm.git"
@@ -19,6 +19,6 @@
   "license": "BSD",
   "readme": "# fstream-npm\n\nThis is an fstream DirReader class that will read a directory and filter\nthings according to the semantics of what goes in an npm package.\n\nFor example:\n\n```javascript\n// This will print out all the files that would be included\n// by 'npm publish' or 'npm install' of this directory.\n\nvar FN = require(\"fstream-npm\")\nFN({ path: \"./\" })\n  .on(\"child\", function (e) {\n    console.error(e.path.substr(e.root.path.length + 1))\n  })\n```\n\n",
   "readmeFilename": "README.md",
-  "_id": "fstream-npm@0.1.3",
-  "_from": "fstream-npm@~0.1.3"
+  "_id": "fstream-npm@0.1.4",
+  "_from": "fstream-npm@latest"
 }
index 1a98e5b..c6bbfd9 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "read-package-json",
-  "version": "0.2.2",
+  "version": "0.3.0",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",
@@ -32,6 +32,6 @@
   },
   "readme": "# read-package-json\n\nThis is the thing that npm uses to read package.json files.  It\nvalidates some stuff, and loads some default things.\n\nIt keeps a cache of the files you've read, so that you don't end\nup reading the same package.json file multiple times.\n\nNote that if you just want to see what's literally in the package.json\nfile, you can usually do `var data = require('some-module/package.json')`.\n\nThis module is basically only needed by npm, but it's handy to see what\nnpm will see when it looks at your package.\n\n## Usage\n\n```javascript\nvar readJson = require('read-package-json')\n\nreadJson('/path/to/package.json', function (er, data) {\n  if (er) {\n    console.error(\"There was an error reading the file\")\n    return\n  }\n\n  console.error('the package data is', data)\n}\n```\n\n## readJson(file, cb)\n\n* `file` {String} The path to the package.json file\n* `cb` {Function}\n\nReads the JSON file and does the things.\n\n## `package.json` Fields\n\nSee `man 5 package.json` or `npm help json`.\n\n## readJson.log\n\nBy default this is a reference to the `npmlog` module.  But if that\nmodule can't be found, then it'll be set to just a dummy thing that does\nnothing.\n\nReplace with your own `{log,warn,error}` object for fun loggy time.\n\n## readJson.extras(file, data, cb)\n\nRun all the extra stuff relative to the file, with the parsed data.\n\nModifies the data as it does stuff.  Calls the cb when it's done.\n\n## readJson.extraSet = [fn, fn, ...]\n\nArray of functions that are called by `extras`.  Each one receives the\narguments `fn(file, data, cb)` and is expected to call `cb(er, data)`\nwhen done or when an error occurs.\n\nOrder is indeterminate, so each function should be completely\nindependent.\n\nMix and match!\n\n## readJson.cache\n\nThe `lru-cache` object that readJson uses to not read the same file over\nand over again.  See\n[lru-cache](https://github.com/isaacs/node-lru-cache) for details.\n\n## Other Relevant Files Besides `package.json`\n\nSome other files have an effect on the resulting data object, in the\nfollowing ways:\n\n### `README?(.*)`\n\nIf there is a `README` or `README.*` file present, then npm will attach\na `readme` field to the data with the contents of this file.\n\nOwing to the fact that roughly 100% of existing node modules have\nMarkdown README files, it will generally be assumed to be Markdown,\nregardless of the extension.  Please plan accordingly.\n\n### `server.js`\n\nIf there is a `server.js` file, and there is not already a\n`scripts.start` field, then `scripts.start` will be set to `node\nserver.js`.\n\n### `AUTHORS`\n\nIf there is not already a `contributors` field, then the `contributors`\nfield will be set to the contents of the `AUTHORS` file, split by lines,\nand parsed.\n\n### `bindings.gyp`\n\nIf a bindings.gyp file exists, and there is not already a\n`scripts.install` field, then the `scripts.install` field will be set to\n`node-gyp rebuild`.\n\n### `wscript`\n\nIf a wscript file exists, and there is not already a `scripts.install`\nfield, then the `scripts.install` field will be set to `node-waf clean ;\nnode-waf configure build`.\n\nNote that the `bindings.gyp` file supercedes this, since node-waf has\nbeen deprecated in favor of node-gyp.\n\n### `index.js`\n\nIf the json file does not exist, but there is a `index.js` file\npresent instead, and that file has a package comment, then it will try\nto parse the package comment, and use that as the data instead.\n\nA package comment looks like this:\n\n```javascript\n/**package\n * { \"name\": \"my-bare-module\"\n * , \"version\": \"1.2.3\"\n * , \"description\": \"etc....\" }\n **/\n\n// or...\n\n/**package\n{ \"name\": \"my-bare-module\"\n, \"version\": \"1.2.3\"\n, \"description\": \"etc....\" }\n**/\n```\n\nThe important thing is that it starts with `/**package`, and ends with\n`**/`.  If the package.json file exists, then the index.js is not\nparsed.\n\n### `{directories.man}/*.[0-9]`\n\nIf there is not already a `man` field defined as an array of files or a\nsingle file, and\nthere is a `directories.man` field defined, then that directory will\nbe searched for manpages.\n\nAny valid manpages found in that directory will be assigned to the `man`\narray, and installed in the appropriate man directory at package install\ntime, when installed globally on a Unix system.\n\n### `{directories.bin}/*`\n\nIf there is not already a `bin` field defined as a string filename or a\nhash of `<name> : <filename>` pairs, then the `directories.bin`\ndirectory will be searched and all the files within it will be linked as\nexecutables at install time.\n\nWhen installing locally, npm links bins into `node_modules/.bin`, which\nis in the `PATH` environ when npm runs scripts.  When\ninstalling globally, they are linked into `{prefix}/bin`, which is\npresumably in the `PATH` environment variable.\n",
   "readmeFilename": "README.md",
-  "_id": "read-package-json@0.2.2",
+  "_id": "read-package-json@0.3.0",
   "_from": "read-package-json@latest"
 }
index d0b5ff0..9ca3e4e 100644 (file)
@@ -31,7 +31,6 @@ var semver = require("semver")
 // put more stuff on here to customize.
 readJson.extraSet = [
                 gypfile,
-                wscript,
                 serverjs,
                 authors,
                 readme,
@@ -144,9 +143,10 @@ function extras (file, data, cb) {
 function gypfile (file, data, cb) {
                 var dir = path.dirname(file)
                 var s = data.scripts || {}
-                if (s.install || s.preinstall) {
+                if (s.install === "node-gyp rebuild" && !s.preinstall)
+                                data.gypfile = true
+                if (s.install || s.preinstall)
                                 return cb(null, data);
-                }
                 glob("*.gyp", { cwd: dir }, function (er, files) {
                                 if (er) return cb(er);
                                 gypfile_(file, data, files, cb)
@@ -162,25 +162,6 @@ function gypfile_ (file, data, files, cb) {
                 return cb(null, data);
 }
 
-function wscript (file, data, cb) {
-                var dir = path.dirname(file)
-                var s = data.scripts || {}
-                if (s.install || s.preinstall) {
-                                return cb(null, data);
-                }
-                glob("wscript", { cwd: dir }, function (er, files) {
-                                if (er) return cb(er);
-                                wscript_(file, data, files, cb)
-                })
-}
-function wscript_ (file, data, files, cb) {
-                if (!files.length || data.gypfile) return cb(null, data);
-                var s = data.scripts || {}
-                s.install = "node-waf clean ; node-waf configure build"
-                data.scripts = s
-                return cb(null, data);
-}
-
 function serverjs (file, data, cb) {
                 var dir = path.dirname(file)
                 var s = data.scripts || {}
index dcdd5ca..8906b92 100644 (file)
@@ -511,8 +511,9 @@ Request.prototype.start = function () {
     if (response.connection.listeners('error').indexOf(self._parserErrorHandler) === -1) {
       response.connection.once('error', self._parserErrorHandler)
     }
-    if (self._aborted) return
+    if (self._aborted) return response.resume()
     if (self._paused) response.pause()
+    else response.resume()
 
     self.response = response
     response.request = self
index 8bd830e..8c9999a 100644 (file)
@@ -1,5 +1,5 @@
 {
-  "version": "1.2.14",
+  "version": "1.2.15",
   "name": "npm",
   "publishConfig": {
     "proprietary-attribs": false
@@ -59,7 +59,7 @@
     "npmlog": "0",
     "ansi": "~0.1.2",
     "npm-registry-client": "~0.2.18",
-    "read-package-json": "~0.2.2",
+    "read-package-json": "~0.3.0",
     "read-installed": "0",
     "glob": "~3.1.21",
     "init-package-json": "0.0.6",
index 44b9367..3b823db 100644 (file)
@@ -2,23 +2,75 @@ var fs = require("fs")
 var test = require("tap").test
 var rimraf = require("rimraf")
 var npm = require("../../")
+var http = require("http")
+
+var okFile = new Buffer(
+'/**package\n' + 
+' * { "name": "npm-test-peer-deps-file"\n' + 
+' * , "main": "index.js"\n' + 
+' * , "version": "1.2.3"\n' + 
+' * , "description":"No package.json in sight!"\n' + 
+' * , "peerDependencies": { "dict": "1.1.0" }\n' + 
+' * , "dependencies": { "opener": "1.3.0" }\n' + 
+' * }\n' + 
+' **/\n' + 
+'\n' + 
+'module.exports = "I\'m just a lonely index, naked as the day I was born."\n'
+)
+
+var failFile = new Buffer(
+'/**package\n' +
+' * { "name": "npm-test-peer-deps-file-invalid"\n' +
+' * , "main": "index.js"\n' +
+' * , "version": "1.2.3"\n' +
+' * , "description":"This one should conflict with the other one"\n' +
+' * , "peerDependencies": { "dict": "1.0.0" }\n' +
+' * }\n' +
+' **/\n' +
+'\n' +
+'module.exports = "I\'m just a lonely index, naked as the day I was born."\n'
+)
+
+var server
+test("setup", function(t) {
+  server = http.createServer(function (req, res) {
+    res.setHeader('content-type', 'application/javascript')
+    switch (req.url) {
+      case "/ok.js":
+        return res.end(okFile)
+      default:
+        return res.end(failFile)
+    }
+  })
+  server.listen(1337, function() {
+    t.pass("listening")
+    t.end()
+  })
+})
 
-test("installing dependencies that having conflicting peerDependencies", function (t) {
-  t.plan(1)
 
+
+test("installing dependencies that having conflicting peerDependencies", function (t) {
   rimraf.sync(__dirname + "/peer-deps-invalid/node_modules")
   process.chdir(__dirname + "/peer-deps-invalid")
 
   npm.load(function () {
+    console.error('back from load')
     npm.commands.install([], function (err) {
+      console.error('back from install')
       if (!err) {
         t.fail("No error!")
-        process.exit(1)
-        return
+      } else {
+        t.equal(err.code, "EPEERINVALID")
       }
-
-      t.equal(err.code, "EPEERINVALID")
-      process.exit(0)
+      t.end()
     })
   })
 })
+
+test("shutdown", function(t) {
+  server.close(function() {
+    t.pass("closed")
+    t.end()
+  })
+})
index 766f1f5..c5fa7cb 100644 (file)
@@ -3,7 +3,7 @@
   "name": "peer-deps-invalid",
   "version": "0.0.0",
   "dependencies": {
-    "npm-test-peer-deps-file": "https://raw.github.com/gist/3971128/3f6aa37b4fa1186c2f47da9b77dcc4ec496e3483/index.js",
-    "npm-test-peer-deps-file-invalid": "https://gist.github.com/raw/4303335/861f8d3213061826ab31591840c3cb0ac737f4fc/index.js"
+    "npm-test-peer-deps-file": "http://localhost:1337/ok.js",
+    "npm-test-peer-deps-file-invalid": "http://localhost:1337/invalid.js"
   }
 }
index 19b6064..8c5b548 100644 (file)
@@ -3,7 +3,33 @@ var test = require("tap").test
 var rimraf = require("rimraf")
 var npm = require("../../")
 
-var peerDepsTestUrl = "https://gist.github.com/raw/3971128/3f6aa37b4fa1186c2f47da9b77dcc4ec496e3483/index.js"
+var http = require("http")
+
+
+var js = new Buffer(
+'/**package\n' +
+' * { "name": "npm-test-peer-deps-file"\n' +
+' * , "main": "index.js"\n' +
+' * , "version": "1.2.3"\n' +
+' * , "description":"No package.json in sight!"\n' +
+' * , "peerDependencies": { "dict": "1.1.0" }\n' +
+' * , "dependencies": { "opener": "1.3.0" }\n' +
+' * }\n' +
+' **/\n' +
+'\n' +
+'module.exports = "I\'m just a lonely index, naked as the day I was born."\n')
+
+var server
+test("setup", function(t) {
+  server = http.createServer(function (q, s) {
+    s.setHeader('content-type', 'application/javascript')
+    s.end(js)
+  })
+  server.listen(1337, function() {
+    t.pass('listening')
+    t.end()
+  })
+})
 
 test("installing a peerDependencies-using package without a package.json present (GH-3049)", function (t) {
 
@@ -12,18 +38,21 @@ test("installing a peerDependencies-using package without a package.json present
   process.chdir(__dirname + "/peer-deps-without-package-json")
 
   npm.load(function () {
-    npm.install(peerDepsTestUrl, function (err) {
+    npm.install('http://localhost:1337/', function (err) {
       if (err) {
         t.fail(err)
-        t.end()
-        process.exit(1)
-        return
+      } else {
+        t.ok(fs.existsSync(__dirname + "/peer-deps-without-package-json/node_modules/npm-test-peer-deps-file"))
+        t.ok(fs.existsSync(__dirname + "/peer-deps-without-package-json/node_modules/dict"))
       }
-
-      t.ok(fs.existsSync(__dirname + "/peer-deps-without-package-json/node_modules/npm-test-peer-deps-file"))
-      t.ok(fs.existsSync(__dirname + "/peer-deps-without-package-json/node_modules/dict"))
       t.end()
-      process.exit(0)
     })
   })
 })
+
+test("cleanup", function (t) {
+  server.close(function() {
+    t.pass("closed")
+    t.end()
+  })
+})