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 bd0982f2e27863c84a80b316ad9193c474cb1de2..6c258eaa0b89e6fdeb71b8eed91fd1cb0ae70339 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 d6cc041e4ca384e9a33ceef40bdf934892a60775..518fbef120c2a59b72bf7d918ee9cb436252e651 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 c6cedaaaf3b54de79eba58bcae37c95953f83c14..403f7f856a7b74d1e9fa31389626d1f2ced9f87b 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 7aa186c24f7332a9ade98e2b494c863d07ea6199..7408820b3744e093af0124ad4049afd3dab60184 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 62ebbe43a424368e9da911dd8dcd9fddebdd09ef..153d5d5f43c65bf3f151eedb66600e050a1674eb 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 003ac483e04fc3c5e12e96b67dbf1faa90e419fc..816c5d9910d4486ecd139bf07c221f622454bcc1 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 11869b3d3625ff592944c2aaaa4a5d276c6e6fbe..59eee212d67e5d76032e1975fbdd3f5e7b258652 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 a0fdbd565f24987f20ecf3d96141db21a7ebb8cd..0402258fd4ba465d620de655e54059bd1b5d121a 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 4035df06ed9f4b7486a02125202d7307743a5cb3..c8e7d12e24a52d5747aff9dc687a00b177339077 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 18075e60cc54b7d9fe50643ca9043c62dd608040..b400777e154fa8fd9ba501651c07df0f77fca7cb 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 3478c19f212d8d337c2148aaefe4a64b1be27594..4a2ffc0b575ac88833332d076893e1ea5b7d4861 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 25d33629e0de4a8d63875282f2bdb99b92e057c1..faf99030227a6d84c1c7284da87fd9436b94ffe0 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 0fea7b2510370f608b7f1928598eb05dbd11915e..d6513b73d17843b91a4ebdd0a964d7157e09a298 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 d372eeeeffe8c1f5b90ba2c4b7b3601d0ba23d6c..717bf23b52872f70171a041d86c1ebe6bf62515d 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 8ed7a24c36f4638d5237d70e9dc76020bb8f99e2..62f259a8f17df17965db7a4ecd4e535ac1fb9405 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 400fa9ef9f5b8858a41b66da7a6c9c1e460845c2..8ae944b41597ba1a88a24dd5c0cbf425f16e7bbe 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 0eadc8976ebbd8d0ffcca4504f81b3009ec4be99..9f2dc0bf9bbe6c3ffc45ceb9980faf9c80548502 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 cef8772cea6a1af5ebfd0e09e8bad076b14d379e..07adafc435b0f915ec4be1c2f77c8aa1e23324b4 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 437fae7be9a944fa230c075562fb718700ce0417..74fab48aaa5f6e4ca8dfe1fb2d05857800e21083 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 703ecb6d6c757f0fecd7a1fbed46686574209574..b87076db2476b127e9e5c476918f996a5d18e8f7 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 0a33a08faaffe36b1730e9db4c1906e677aace6d..05007c138dfff1b00b2bceee7f8150039559c3c8 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 cecde76e625e1bea55d5c7c1d778e14ff2cae4b5..a878b037d95aea7f0ec9af7c13a88ff27e0342b1 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 4fa189bf8e3f43bb1d049d1a5eb7a04bf0a8e42a..a4ae0bbef09ac338d5c7079adb09d10b877be3df 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 f7804ab2cd6cc158d86f696278bbc3a3788a2b29..10f78b0b2098f0eee254d8604306aa36edf83fca 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 c6d80ad080a7c918c4b9447639e356fe040e9e65..48bc9ed614800a1380daa91b4d6041d9edaf4fba 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 9dc90635ec53345c76cb9ad5ae9108a02eba9195..f49699cfc2c86a47a7b97172145ab94d9dd8f779 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 c788442b11aaa1fa4534efe797766aee2ed0518b..5f10b0adc7488c3a1e61f9673194c44544c9c06c 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 1d3ee565c0ef3930b3d98ad9546a0690a87969ec..e798b8d6b3b6f74d4d51e3910f0a27c515cacec2 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 612b965de3578a8fedd3d04094828d60c5790827..06bad4eb5e5890f4d3d4bdbd2fe1df4100c560e6 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 3ac034fb22b1e09739296b146ac6d0a81597b86a..f8273f3ca2d0645eed95109021900475e01231e0 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 c8635a8f1d9ea7f5854e4b53c803c9041f9c0181..5bdf9e97d722a784f73487da0c048d63beed8c9e 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 85313fa86edef04233fa22dc7c489216091c69d1..e34d188355fb6802a9757bd59e286fb9f65c5c79 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 2041d4f98e0b5c1c1b0a5a496ad5fede93bcd2ac..492638d207bd3747ca14afc985fc9946f124a7af 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 056b20b174180abbf24a4a2548ff8af594dfb819..e33504dcc52fd0cbc4a2b4d78a3d6cc61899bf8e 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 a85c6bf2f2afdf85ecedbaa7ec7b8de2f9b21c2e..94a445df2bf8eb5b9d28acfbe50b65115fd0f7d8 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 79dda459cf2c6123f1cebd74d6d3486a64fda706..ebaf1cc4bda5b6b8a8ec49c144a7af40572c98e4 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 4da7260dff329b2a646b797c842aa7029cb59d71..5a2ebaa39e11ebba46b47d2aad91797b89099a9a 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 2d2641493745af22064f6603567f29d2f3d8fac3..d7688e48ad61808a2c0a3a1f27d11df75b98ca44 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 155487dce9fbb9910f17232dbb521c0ffe55ce7c..80c7f2f926d21a0dcc490778bf5728aeb37ef9c0 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 1e27b82641cb0c8f611864e2e720b9fccc9c3cf1..b38642e38f13e81fa5c85ef9861bd0c351ada3a5 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 fc5df0d04119d51f36d0e0073193249464d7d343..34847eb8bb6ddd86694c338a58a16226dfa4877c 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 d46e3c515aa58314a458c183ac1b8b04e085d70c..573890ff8fea834bb7cb9b021ab593583e1ab7bd 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 d79b53df44bed41b05d6ae6b51fa720119b42236..2bc41178a924e9a43f1ad9b9a3e210140f1634f9 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 4845ea604c550aa11c356a7aeb297fa47bb9d13a..d5a833f1f809a6e532bb605fcdb26aa753b9fffa 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 ef1947ed9c4d2d7dd447487f20542fdcf54a7095..3e3001267b3ccb276db003721635b412913c8ebf 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 75731866a1a20aa7e77fa246495874f0ef112e61..6f6186c78d80a66c33696ec804e2d2cef7021f6d 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 7fa6241611650fdec0e61bb2086f1af378adcdc8..348a9320879dbf25491e2984161166182ccfb442 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 1a60c870e0f083d646e8f88ea56506eca5f11022..95003ecd4226ece0a79afa7251ee09ac4497a785 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 5e1bbb89dfdf9c5f88b2268dce81a2fb9eeea9f8..d7e036902159da46f589887b03de7a2b603d4ed1 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 33278569ff58b7d30c827b558f4375615ecd5bba..b1502540d4d26b5b001891a8dfeb8362ad56ba9d 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 df02879195ec4862ae67891817f89f99d7e6feff..8297d3f2e90c35556b332b7254339fb924f954a4 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 54228a09b863bc8a0e83b9aeeefcebd39210abb0..8120ba7f7ebbe77e1f1ab6564648744da2ad49f9 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 f26ef0939cf009ac91cb4ad5e831bab09a50d93b..97b53deee8c18faa6cbf39c8883172e0030b144b 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 11ad8a6a481c923d00a5a86164b498adfd5de02a..96f762a9554dfeddb0343948ff2d6d66dc259af6 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 12bef24553f8cdcc0d75379a75d0a6d1d6e3dea7..1e771390f95bb9b5fe82b472b37b657d77420abb 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 3c8b251978de3d3f0011b86bcbfaac8b05dec4cf..f42aa39db5988e2e640fab3c7ff01677d66388ab 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 a2a7e5369b6e7f39ddae716a3c209c1a1bca51b3..a99e30866004110bbcfb5d53072d6fdf901e8698 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 8546efafc132d89e20466cae3103be7f3e039c1f..928f67a6cb63b28539c3f7b75843ca2ce74bc711 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 00c7ca5cdb389fd3d91f28f3ab40586b379e37c4..3276761081fea6bcb6945c7bd4c9a7da584c9be3 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 e19ec48422d0c5fa75cb88564d806337c7e38b9b..1e89cfb3c65c42105c8f6d8dffb96858ac3b4acc 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 66e19552c9df5a16b40beb4d4d5e0353e99d98c9..9da178760f0cc5d2cc3663f928f6c48c091be504 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 d1006e60e3b4905b30c78d927ad7bcf88cce4ed9..9eb012a6555c6d3126f9f2d4b5184649a847827a 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 48ea7ea70d16572b23a68c814b5870a15423cf1f..50b99442f065adecfe013f6cd62f891b0729d3a6 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 9f6b8482edc5e741d5b88e968eb0b7c489f6897e..126c104b3197441dc048cd660e366e262ab4a11c 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 d036a43912edb772f469b7662d17ac40b255d7a6..9d02322e27e4fdc4a208f13e7a8b38ef6069fb01 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 a9e31f5917f9653a7ade3b38b1809f0194e94bb3..5265a3c9f68421dea65484d2d36fefedbd4c4c50 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 e225cac8d9bf0bd040239d8edab46e1b2d5c92b0..d34c0c29376347122171303e3e1740cb0c6de778 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 9e6c8aca16f81279aebe91b42767123a1601d49e..5a07625933c82f99a7e74fb49891c9bc0f2d37c7 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 fa596c9916d9b93af904ebc1ec19cc25a86c7b60..5200278ce84f830ec295583d67b406d842cad0a7 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 085fafa17ee668f7f9c056bf6e571797b3d08f70..aa6f673d1c12685c1c7e526443ad2af69a6871ee 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 268572110a9f10277551747de0d79b8ce6649a3c..afe018ecbd64f4ad1637e630cca614eb97754e18 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 776e539c1b34e12587467a18588c179461d2d1a8..555562ab8e726093fd2df7c9028678d0d6c6900d 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 0c7ac990e9ce62a7fce99a71eae4e54832cbdd31..5a621a9973abfe5bb37d18b1e0aa26801004e052 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 e4820dc5b11043c565d73610f778984e6c6ab581..67b5d7ee50097c0a671d41cc07e6faddd0aaa4e8 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 a63053fcfbaac3ea1b398cb677fd4080cdcfd483..3a7c040378766040ad22d785a5925c2b085798d8 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 749bcf1a136ef9390272e3e44da2863704d37e0b..461f90609487e37f1dc06a8d82be6ed38acf9b2d 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 39ff4ef798aa843f53a1171e01378b26dee78521..1be13be0b95c5b2b1237eeb1d7620aa5dbf8ca9b 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 9ba442267e213cd806c708a807eaa207e09ec030..39872397374580936b5fb9493cc91ac664fdc640 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 6860690591d0824108a67eec692fd7183484c2af..a357c3c9eac0ddbeaa78560940da10e079c30c85 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 147ec985ecc658d0d1a6edb7085b7c0e5300e767..c07b966d5191dd0ec720061e688594a231330345 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 c96cfe52fd6ce655a52eab1eef115d177d2e3ff7..cadf142a68e3b66f52a692c01a5e79544f44fc05 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 1eff4009324e7c3f0f3eef019d03977dd041937a..83368316196b36d39a17044267831ade393a75d3 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 8af398cd04533d1641d9ab3198a3d1f9d149c82b..b2a11b3d7d16a8d64ed03b61e96aaa747bce574d 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 ceaa26171fc49834499b87860c15e40b07536028..4c367ba0f2e5063774798eeb21330763a224104d 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 50cec9764bc4acd853687ea76bc78cdd65732c3a..ec25e388565a22d064bcb25536800e22c9dbad9e 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 5cd5cf10d83e75931ef85e599f22ce527a15a156..525a8e99ef263f2bf5a500922c16491228813221 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 bed1e222fb74c0bdb52b97bb077cbe85a1dcd88d..8800ca89e78289cb0cbd87bcb7ddbf3f3e40f2bd 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 bc2fcb2dbf24718b7220eee4902a00ab1a405151..3548e0db04dee25f726353b1fd61ffc3dc5dd0b7 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 e78d192c5ca171dc66c4427ac792da205bc44bbd..4e42762aaefdabb0560a9aa3a07286eb01dabee5 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 14ab4455b4f043c65ffca6cd879346a64c4ddead..bf9236d21c852f12b4894db00af7864cf9d62930 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 e4ec2bacc1f6a5603cea14b5c8b3d0cd59342a1c..ca7bbde5803736ae7864859e7cda793f40542d02 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 5d6863df08c0ff06e150c58e24c0caf9dcdc0b1e..6d715fc2c9239c344e99ceccb885c59ef32cee52 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 49501035938ca60f189d45b40478dcbe7e6b6f4c..b667e1d2f7250ce4ab27618e04cf73ce6a635f77 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 7507e86f22921167d5f0936a0054eb785d7f8950..e3d12e7213c842398dcf51605e667f4f9a51b51f 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 23a78e67062c11e779e1d5329b58fc54d12af8c2..8e8cdd043577640f7cf3626ca0357e5842989114 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 74f3cddfdc8fef23a9b15b7752c72f523f6d6183..dcfa8bf692b740a6d9c9cc80cb73302ffde71957 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 01f50859c0e0bf61f9b8d8e237181df40626a24c..5b103d9b58986ff36f11451fdf2250b342ae5e45 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 e7ec872741928fc65d415e8068ddc49b97286d08..cdc192f41c67b3da64bfb4f476a0fa2d11cb0f9a 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 bbbe9a26889d130f8ceafa70fa4ee66f3897b950..df2259f55df81cebaca2c92997ce1a9999e77e97 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 80f250c15211762c8d676186a64d82c4afd0bdae..c742d8087226f7e1910cc1960d784ac3b3759055 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 82b77252fe821081bd063b2007f633f3b9ac3f75..e48759129bc455a9bc5a2a24bae5cff32a90771b 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 7cb92af14f63abc46ca0bdf7ba186dc1545498bd..4f8fbc4fee8dac7b618a76dc6c81757e6a26eda0 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 9f63c7463a9f2df7390b6c331bdafea99e6dee0f..4db8d58ef2d42759669574c05bad73b18cf14608 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 16451fbbb8a30e5bf21c4bc66dde8fce1a414a18..0c97cf85dc74542d975ad90ed04fde4e7d118412 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 70f0a13d91a151b5f0318aa71d015b66d3383b2f..360367cbff84f2a3359b284407933a06edc32643 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 b98852066002a1952866a08c3eb85058d6f1756d..526b836a2c58d0a53e5eaecfb10c7cf0ace588ae 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 e0cb85fe2e184543efcfa65adfd27e2895cd4712..b74deea161c4e240201850c931a0df37be4e9508 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 3a7916783ac208276cb1b89329c64f34a83a1072..4f290d5ffadfeb064bd9aeadee8685aefe1025a4 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 557aa5a37359d8409cc5a8a3376af6eb77fcc081..6e64b1159fe2ecf69eb3999091cf7a189abfdfa3 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 e7871ea566ce08815f3f929cb7fab89bae4d7cb7..ea35a5fbb3f04cc8b958ff5457a8782858f53276 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 ca908fdf9eb572dbe2c07a59629da2b3f0d91d80..bdc402b770bd43ef3b8bd1b54aeac706b3103c31 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 26e80c106d798bab8a8c801f5a1aea50c199c434..23e3fce3cae9e9b686308c5807c7f65df1244ee9 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 8805cb3c9989ed3dfcc4ce8e21c9620052a343a7..88824e0eb4a5d3bbd020310861407d52136a3a31 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 1a98e5bf35eb2340ebcc21ef29afdb1d8e5bb9f5..c6bbfd9cea2379e6f77e4e876c3113571a2bf416 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 d0b5ff0b964a0f6bdb06ea66cca7c481163cb5d2..9ca3e4e7e13cf79d0c91fa84bef6537ebc1660ab 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 dcdd5caab123fbc9e2091b6f0a90a179a4548804..8906b92aab9a867bce042f075c0dc9343abadbb4 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 8bd830eab2348e67af278b7f79cf862664da5419..8c9999a7bedaf0d51702e6bb6b1ac5f7c8866235 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 44b9367666352ee8ea910166198ae9e8ee6cc016..3b823db01c8fd374a09f94e2beee6b4c0d46daa4 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 766f1f53d64f8163d4cb62c7fea870e3f310109a..c5fa7cb03263e8f4ef6468b08f8f0ab225258247 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 19b60640380c47bb455e13e55578bcc9234ed1f9..8c5b5483a24bebc98c4d936a2a550346c910efa6 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()
+  })
+})