+### v2.2.0 (2015-01-08):
+
+* [`88c531d`](https://github.com/npm/npm/commit/88c531d1c0b3aced8f2a09632db01b5635e7226a)
+ [#7056](https://github.com/npm/npm/issues/7056) version doesn't need a
+ package.json. ([@othiym23](https://github.com/othiym23))
+* [`2656c19`](https://github.com/npm/npm/commit/2656c19f6b915c3173acc3b6f184cc321563da5f)
+ [#7095](https://github.com/npm/npm/issues/7095) Link to npm website instead
+ of registry. ([@konklone](https://github.com/konklone))
+* [`c76b801`](https://github.com/npm/npm/commit/c76b8013bf1758587565822626171b76cb465c9e)
+ [#7067](https://github.com/npm/npm/issues/7067) Obfuscate secrets, including
+ nerfed URLs. ([@smikes](https://github.com/smikes))
+* [`17f66ce`](https://github.com/npm/npm/commit/17f66ceb1bd421084e4ae82a6b66634a6e272929)
+ [#6849](https://github.com/npm/npm/issues/6849) Explain the tag workflow more
+ clearly. ([@smikes](https://github.com/smikes))
+* [`e309df6`](https://github.com/npm/npm/commit/e309df642de33d10d6dffadaa8a5d214a924d0dc)
+ [#7096](https://github.com/npm/npm/issues/7096) Really, `npm update -g` is
+ almost always a terrible idea. ([@smikes](https://github.com/smikes))
+* [`acf287d`](https://github.com/npm/npm/commit/acf287d2547c8a0a8871652c164019261b666d55)
+ [#6999](https://github.com/npm/npm/issues/6999) `npm run-script env`: add a
+ new default script that will print out environment values.
+ ([@gcb](https://github.com/gcb))
+* [`560c009`](https://github.com/npm/npm/commit/560c00945d4dec926cd29193e336f137c7f3f951)
+ [#6745](https://github.com/npm/npm/issues/6745) Document `npm update --dev`.
+ ([@smikes](https://github.com/smikes))
+* [`226a677`](https://github.com/npm/npm/commit/226a6776a1a9e28570485623b8adc2ec4b041335)
+ [#7046](https://github.com/npm/npm/issues/7046) We have never been the Node
+ package manager. ([@linclark](https://github.com/linclark))
+* [`38eef22`](https://github.com/npm/npm/commit/38eef2248f03bb8ab04cae1833e2a228fb887f3c)
+ `npm-install-checks@1.0.5`: Compatibility with npmlog@^1.
+ ([@iarna](https://github.com/iarna))
+
### v2.1.18 (2015-01-01):
* [`bf8640b`](https://github.com/npm/npm/commit/bf8640b0395b5dff71260a0cede7efc699a7bcf5)
specific version).
The second element is the name of the tag to tag this version with. If this
-parameter is missing or falsey (empty), the default froom the config will be
+parameter is missing or falsey (empty), the default from the config will be
used. For more information about how to set this config, check
`man 3 npm-config` for programmatic usage or `man npm-config` for cli usage.
-npm(3) -- node package manager
-==============================
+npm(3) -- javascript package manager
+====================================
## SYNOPSIS
This runs an arbitrary command from a package's `"scripts"` object.
If no package name is provided, it will search for a `package.json`
in the current folder and use its `"scripts"` object. If no `"command"`
-is provided, it will list the available top level scripts.
+is provided, it will list the available top level scripts. The `env` command
+can be used to list environment variables that will be available to the script
+at runtime. If an "env" command is defined in your package it will have
+precedence instead.
-It is used by the test, start, restart, and stop commands, but can be
-called directly, as well.
+`run[-script]` is used by the test, start, restart, and stop commands, but can
+be called directly, as well.
As of [`npm@2.0.0`](http://blog.npmjs.org/post/98131109725/npm-2-0-0), you can
use custom arguments when executing scripts. The special option `--` is used by
Publishing a package always sets the "latest" tag to the published version.
+## PURPOSE
+
+Tags can be used to provide an alias instead of version numbers. For
+example, `npm` currently uses the tag "next" to identify the upcoming
+version, and the tag "latest" to identify the current version.
+
+A project might choose to have multiple streams of development, e.g.,
+"stable", "canary".
+
+## CAVEATS
+
+Tags must share a namespace with version numbers, because they are
+specified in the same slot: `npm install <pkg>@<version>` vs `npm
+install <pkg>@<tag>`.
+
+Tags that can be interpreted as valid semver ranges will be
+rejected. For example, `v1.4` cannot be used as a tag, because it is
+interpreted by semver as `>=1.4.0 <1.5.0`. See
+<https://github.com/npm/npm/issues/6082>.
+
+The simplest way to avoid semver problems with tags is to use tags
+that do not begin with a number or the letter `v`.
+
## SEE ALSO
* npm-publish(1)
* npm-registry(7)
* npm-config(1)
* npm-config(7)
+* npm-tag(3)
* npmrc(5)
This command will update all the packages listed to the latest version
(specified by the `tag` config).
-It will also install missing packages.
+It will also install missing packages. As with all commands that install
+packages, the `--dev` flag will cause `devDependencies` to be processed
+as well.
If the `-g` flag is specified, this command will update globally installed
packages.
-npm(1) -- node package manager
-==============================
+npm(1) -- javascript package manager
+====================================
## SYNOPSIS
* The name will probably be passed as an argument to require(), so it should
be something short, but also reasonably descriptive.
* You may want to check the npm registry to see if there's something by that name
- already, before you get too attached to it. http://registry.npmjs.org/
+ already, before you get too attached to it. <https://www.npmjs.com/>
A name can be optionally prefixed by a scope, e.g. `@myorg/mypackage`. See
`npm-scope(7)` for more detail.
### npm(1)
-node package manager
+javascript package manager
### npm-adduser(1)
### npm(3)
-node package manager
+javascript package manager
### npm-bin(3)
<p>If you have a complaint about a package in the public npm registry,
and cannot <a href="https://docs.npmjs.com/misc/disputes">resolve it with the package
owner</a>, please email
-<a href="mailto:support@npmjs.com">support@npmjs.com</a> and explain the situation.</p>
+<a href="mailto:support@npmjs.com">support@npmjs.com</a> and explain the situation.</p>
<p>Any data published to The npm Registry (including user account
information) may be removed or modified at the sole discretion of the
npm server administrators.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer"><a href="../doc/README.html">README</a> — npm@2.1.18</p>
+<p id="footer"><a href="../doc/README.html">README</a> — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-bin — npm@2.1.18</p>
+<p id="footer">npm-bin — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-bugs — npm@2.1.18</p>
+<p id="footer">npm-bugs — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-cache — npm@2.1.18</p>
+<p id="footer">npm-cache — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-commands — npm@2.1.18</p>
+<p id="footer">npm-commands — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-config — npm@2.1.18</p>
+<p id="footer">npm-config — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-deprecate — npm@2.1.18</p>
+<p id="footer">npm-deprecate — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-docs — npm@2.1.18</p>
+<p id="footer">npm-docs — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-edit — npm@2.1.18</p>
+<p id="footer">npm-edit — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-explore — npm@2.1.18</p>
+<p id="footer">npm-explore — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-help-search — npm@2.1.18</p>
+<p id="footer">npm-help-search — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-init — npm@2.1.18</p>
+<p id="footer">npm-init — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-install — npm@2.1.18</p>
+<p id="footer">npm-install — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-link — npm@2.1.18</p>
+<p id="footer">npm-link — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-load — npm@2.1.18</p>
+<p id="footer">npm-load — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-ls — npm@2.1.18</p>
+<p id="footer">npm-ls — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-outdated — npm@2.1.18</p>
+<p id="footer">npm-outdated — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-owner — npm@2.1.18</p>
+<p id="footer">npm-owner — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-pack — npm@2.1.18</p>
+<p id="footer">npm-pack — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-prefix — npm@2.1.18</p>
+<p id="footer">npm-prefix — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-prune — npm@2.1.18</p>
+<p id="footer">npm-prune — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-publish — npm@2.1.18</p>
+<p id="footer">npm-publish — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-rebuild — npm@2.1.18</p>
+<p id="footer">npm-rebuild — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-repo — npm@2.1.18</p>
+<p id="footer">npm-repo — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-restart — npm@2.1.18</p>
+<p id="footer">npm-restart — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-root — npm@2.1.18</p>
+<p id="footer">npm-root — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-run-script — npm@2.1.18</p>
+<p id="footer">npm-run-script — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-search — npm@2.1.18</p>
+<p id="footer">npm-search — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-shrinkwrap — npm@2.1.18</p>
+<p id="footer">npm-shrinkwrap — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-start — npm@2.1.18</p>
+<p id="footer">npm-start — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-stop — npm@2.1.18</p>
+<p id="footer">npm-stop — npm@2.2.0</p>
is the package name and version is the version number (much like installing a
specific version).</p>
<p>The second element is the name of the tag to tag this version with. If this
-parameter is missing or falsey (empty), the default froom the config will be
+parameter is missing or falsey (empty), the default from 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>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-tag — npm@2.1.18</p>
+<p id="footer">npm-tag — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-test — npm@2.1.18</p>
+<p id="footer">npm-test — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-uninstall — npm@2.1.18</p>
+<p id="footer">npm-uninstall — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-unpublish — npm@2.1.18</p>
+<p id="footer">npm-unpublish — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-update — npm@2.1.18</p>
+<p id="footer">npm-update — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-version — npm@2.1.18</p>
+<p id="footer">npm-version — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-view — npm@2.1.18</p>
+<p id="footer">npm-view — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-whoami — npm@2.1.18</p>
+<p id="footer">npm-whoami — npm@2.2.0</p>
<body>
<div id="wrapper">
-<h1><a href="../api/npm.html">npm</a></h1> <p>node package manager</p>
+<h1><a href="../api/npm.html">npm</a></h1> <p>javascript package manager</p>
<h2 id="synopsis">SYNOPSIS</h2>
<pre><code>var npm = require("npm")
npm.load([configObject, ]function (er, npm) {
npm.commands.install(["package"], cb)
})
</code></pre><h2 id="version">VERSION</h2>
-<p>2.1.18</p>
+<p>2.2.0</p>
<h2 id="description">DESCRIPTION</h2>
<p>This is the API documentation for npm.
To find documentation of the command line
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm — npm@2.1.18</p>
+<p id="footer">npm — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-adduser — npm@2.1.18</p>
+<p id="footer">npm-adduser — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-bin — npm@2.1.18</p>
+<p id="footer">npm-bin — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-bugs — npm@2.1.18</p>
+<p id="footer">npm-bugs — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-build — npm@2.1.18</p>
+<p id="footer">npm-build — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-bundle — npm@2.1.18</p>
+<p id="footer">npm-bundle — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-cache — npm@2.1.18</p>
+<p id="footer">npm-cache — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-completion — npm@2.1.18</p>
+<p id="footer">npm-completion — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-config — npm@2.1.18</p>
+<p id="footer">npm-config — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-dedupe — npm@2.1.18</p>
+<p id="footer">npm-dedupe — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-deprecate — npm@2.1.18</p>
+<p id="footer">npm-deprecate — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-docs — npm@2.1.18</p>
+<p id="footer">npm-docs — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-edit — npm@2.1.18</p>
+<p id="footer">npm-edit — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-explore — npm@2.1.18</p>
+<p id="footer">npm-explore — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-help-search — npm@2.1.18</p>
+<p id="footer">npm-help-search — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-help — npm@2.1.18</p>
+<p id="footer">npm-help — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-init — npm@2.1.18</p>
+<p id="footer">npm-init — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-install — npm@2.1.18</p>
+<p id="footer">npm-install — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-link — npm@2.1.18</p>
+<p id="footer">npm-link — npm@2.2.0</p>
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's source tree will show:</p>
-<pre><code>npm@2.1.18 /path/to/npm
+<pre><code>npm@2.2.0 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
</code></pre><p>It will print out extraneous, missing, and invalid packages.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-ls — npm@2.1.18</p>
+<p id="footer">npm-ls — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-outdated — npm@2.1.18</p>
+<p id="footer">npm-outdated — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-owner — npm@2.1.18</p>
+<p id="footer">npm-owner — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-pack — npm@2.1.18</p>
+<p id="footer">npm-pack — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-prefix — npm@2.1.18</p>
+<p id="footer">npm-prefix — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-prune — npm@2.1.18</p>
+<p id="footer">npm-prune — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-publish — npm@2.1.18</p>
+<p id="footer">npm-publish — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-rebuild — npm@2.1.18</p>
+<p id="footer">npm-rebuild — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-repo — npm@2.1.18</p>
+<p id="footer">npm-repo — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-restart — npm@2.1.18</p>
+<p id="footer">npm-restart — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-rm — npm@2.1.18</p>
+<p id="footer">npm-rm — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-root — npm@2.1.18</p>
+<p id="footer">npm-root — npm@2.2.0</p>
<p>This runs an arbitrary command from a package's <code>"scripts"</code> object.
If no package name is provided, it will search for a <code>package.json</code>
in the current folder and use its <code>"scripts"</code> object. If no <code>"command"</code>
-is provided, it will list the available top level scripts.</p>
-<p>It is used by the test, start, restart, and stop commands, but can be
-called directly, as well.</p>
+is provided, it will list the available top level scripts. The <code>env</code> command
+can be used to list environment variables that will be available to the script
+at runtime. If an "env" command is defined in your package it will have
+precedence instead.</p>
+<p><code>run[-script]</code> is used by the test, start, restart, and stop commands, but can
+be called directly, as well.</p>
<p>As of <a href="http://blog.npmjs.org/post/98131109725/npm-2-0-0"><code>npm@2.0.0</code></a>, you can
use custom arguments when executing scripts. The special option <code>--</code> is used by
<a href="http://goo.gl/KxMmtG">getopt</a> to delimit the end of the options. npm will pass
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-run-script — npm@2.1.18</p>
+<p id="footer">npm-run-script — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-search — npm@2.1.18</p>
+<p id="footer">npm-search — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-shrinkwrap — npm@2.1.18</p>
+<p id="footer">npm-shrinkwrap — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-star — npm@2.1.18</p>
+<p id="footer">npm-star — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-stars — npm@2.1.18</p>
+<p id="footer">npm-stars — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-start — npm@2.1.18</p>
+<p id="footer">npm-start — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-stop — npm@2.1.18</p>
+<p id="footer">npm-stop — npm@2.2.0</p>
<pre><code>npm install --tag <tag>
</code></pre><p>This also applies to <code>npm dedupe</code>.</p>
<p>Publishing a package always sets the "latest" tag to the published version.</p>
+<h2 id="purpose">PURPOSE</h2>
+<p>Tags can be used to provide an alias instead of version numbers. For
+example, <code>npm</code> currently uses the tag "next" to identify the upcoming
+version, and the tag "latest" to identify the current version.</p>
+<p>A project might choose to have multiple streams of development, e.g.,
+"stable", "canary".</p>
+<h2 id="caveats">CAVEATS</h2>
+<p>Tags must share a namespace with version numbers, because they are
+specified in the same slot: <code>npm install <pkg>@<version></code> vs <code>npm
+install <pkg>@<tag></code>.</p>
+<p>Tags that can be interpreted as valid semver ranges will be
+rejected. For example, <code>v1.4</code> cannot be used as a tag, because it is
+interpreted by semver as <code>>=1.4.0 <1.5.0</code>. See
+<a href="https://github.com/npm/npm/issues/6082">https://github.com/npm/npm/issues/6082</a>.</p>
+<p>The simplest way to avoid semver problems with tags is to use tags
+that do not begin with a number or the letter <code>v</code>.</p>
<h2 id="see-also">SEE ALSO</h2>
<ul>
<li><a href="../cli/npm-publish.html"><a href="../cli/npm-publish.html">npm-publish(1)</a></a></li>
<li><a href="../misc/npm-registry.html"><a href="../misc/npm-registry.html">npm-registry(7)</a></a></li>
<li><a href="../cli/npm-config.html"><a href="../cli/npm-config.html">npm-config(1)</a></a></li>
<li><a href="../misc/npm-config.html"><a href="../misc/npm-config.html">npm-config(7)</a></a></li>
+<li><a href="../api/npm-tag.html"><a href="../api/npm-tag.html">npm-tag(3)</a></a></li>
<li><a href="../files/npmrc.html"><a href="../files/npmrc.html">npmrc(5)</a></a></li>
</ul>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-tag — npm@2.1.18</p>
+<p id="footer">npm-tag — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-test — npm@2.1.18</p>
+<p id="footer">npm-test — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-uninstall — npm@2.1.18</p>
+<p id="footer">npm-uninstall — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-unpublish — npm@2.1.18</p>
+<p id="footer">npm-unpublish — npm@2.2.0</p>
</code></pre><h2 id="description">DESCRIPTION</h2>
<p>This command will update all the packages listed to the latest version
(specified by the <code>tag</code> config).</p>
-<p>It will also install missing packages.</p>
+<p>It will also install missing packages. As with all commands that install
+packages, the <code>--dev</code> flag will cause <code>devDependencies</code> to be processed
+as well.</p>
<p>If the <code>-g</code> flag is specified, this command will update globally installed
packages.</p>
<p>If no package name is specified, all packages in the specified location (global
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-update — npm@2.1.18</p>
+<p id="footer">npm-update — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-version — npm@2.1.18</p>
+<p id="footer">npm-version — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-view — npm@2.1.18</p>
+<p id="footer">npm-view — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-whoami — npm@2.1.18</p>
+<p id="footer">npm-whoami — npm@2.2.0</p>
<body>
<div id="wrapper">
-<h1><a href="../cli/npm.html">npm</a></h1> <p>node package manager</p>
+<h1><a href="../cli/npm.html">npm</a></h1> <p>javascript package manager</p>
<h2 id="synopsis">SYNOPSIS</h2>
<pre><code>npm <command> [args]
</code></pre><h2 id="version">VERSION</h2>
-<p>2.1.18</p>
+<p>2.2.0</p>
<h2 id="description">DESCRIPTION</h2>
<p>npm is the package manager for the Node JavaScript platform. It puts
modules in place so that node can find them, and manages dependency
the issues list or ask on the mailing list.</p>
<ul>
<li><a href="http://github.com/npm/npm/issues">http://github.com/npm/npm/issues</a></li>
-<li><a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li>
+<li><a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li>
</ul>
<h2 id="bugs">BUGS</h2>
<p>When you find issues, please report them:</p>
<li>web:
<a href="http://github.com/npm/npm/issues">http://github.com/npm/npm/issues</a></li>
<li>email:
-<a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li>
+<a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li>
</ul>
<p>Be sure to include <em>all</em> of the output from the npm command that didn't work
as expected. The <code>npm-debug.log</code> file is also helpful to provide.</p>
<p><a href="http://blog.izs.me/">Isaac Z. Schlueter</a> ::
<a href="https://github.com/isaacs/">isaacs</a> ::
<a href="http://twitter.com/izs">@izs</a> ::
-<a href="mailto:i@izs.me">i@izs.me</a></p>
+<a href="mailto:i@izs.me">i@izs.me</a></p>
<h2 id="see-also">SEE ALSO</h2>
<ul>
<li><a href="../cli/npm-help.html"><a href="../cli/npm-help.html">npm-help(1)</a></a></li>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm — npm@2.1.18</p>
+<p id="footer">npm — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-folders — npm@2.1.18</p>
+<p id="footer">npm-folders — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-global — npm@2.1.18</p>
+<p id="footer">npm-global — npm@2.2.0</p>
<li>The name will probably be passed as an argument to require(), so it should
be something short, but also reasonably descriptive.</li>
<li>You may want to check the npm registry to see if there's something by that name
-already, before you get too attached to it. <a href="http://registry.npmjs.org/">http://registry.npmjs.org/</a></li>
+already, before you get too attached to it. <a href="https://www.npmjs.com/">https://www.npmjs.com/</a></li>
</ul>
<p>A name can be optionally prefixed by a scope, e.g. <code>@myorg/mypackage</code>. See
<code><a href="../misc/npm-scope.html"><a href="../misc/npm-scope.html">npm-scope(7)</a></a></code> for more detail.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-json — npm@2.1.18</p>
+<p id="footer">npm-json — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npmrc — npm@2.1.18</p>
+<p id="footer">npmrc — npm@2.2.0</p>
<li>The name will probably be passed as an argument to require(), so it should
be something short, but also reasonably descriptive.</li>
<li>You may want to check the npm registry to see if there's something by that name
-already, before you get too attached to it. <a href="http://registry.npmjs.org/">http://registry.npmjs.org/</a></li>
+already, before you get too attached to it. <a href="https://www.npmjs.com/">https://www.npmjs.com/</a></li>
</ul>
<p>A name can be optionally prefixed by a scope, e.g. <code>@myorg/mypackage</code>. See
<code><a href="../misc/npm-scope.html"><a href="../misc/npm-scope.html">npm-scope(7)</a></a></code> for more detail.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">package.json — npm@2.1.18</p>
+<p id="footer">package.json — npm@2.2.0</p>
<h2 id="command-line-documentation">Command Line Documentation</h2>
<p>Using npm on the command line</p>
<h3 id="npm-1-"><a href="cli/npm.html"><a href="cli/npm.html">npm(1)</a></a></h3>
-<p>node package manager</p>
+<p>javascript package manager</p>
<h3 id="npm-adduser-1-"><a href="cli/npm-adduser.html"><a href="cli/npm-adduser.html">npm-adduser(1)</a></a></h3>
<p>Add a registry user account</p>
<h3 id="npm-bin-1-"><a href="cli/npm-bin.html"><a href="cli/npm-bin.html">npm-bin(1)</a></a></h3>
<h2 id="api-documentation">API Documentation</h2>
<p>Using npm in your Node programs</p>
<h3 id="npm-3-"><a href="api/npm.html"><a href="api/npm.html">npm(3)</a></a></h3>
-<p>node package manager</p>
+<p>javascript package manager</p>
<h3 id="npm-bin-3-"><a href="api/npm-bin.html"><a href="api/npm-bin.html">npm-bin(3)</a></a></h3>
<p>Display npm bin folder</p>
<h3 id="npm-bugs-3-"><a href="api/npm-bugs.html"><a href="api/npm-bugs.html">npm-bugs(3)</a></a></h3>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">index — npm@2.1.18</p>
+<p id="footer">index — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-coding-style — npm@2.1.18</p>
+<p id="footer">npm-coding-style — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-config — npm@2.1.18</p>
+<p id="footer">npm-config — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-developers — npm@2.1.18</p>
+<p id="footer">npm-developers — npm@2.2.0</p>
<h2 id="synopsis">SYNOPSIS</h2>
<ol>
<li>Get the author email with <code>npm owner ls <pkgname></code></li>
-<li>Email the author, CC <a href="mailto:support@npmjs.com">support@npmjs.com</a></li>
+<li>Email the author, CC <a href="mailto:support@npmjs.com">support@npmjs.com</a></li>
<li>After a few weeks, if there's no resolution, we'll sort it out.</li>
</ol>
<p>Don't squat on package names. Publish code or move out of the way.</p>
owner (Bob).</li>
<li>Joe emails Bob, explaining the situation <strong>as respectfully as
possible</strong>, and what he would like to do with the module name. He
-adds the npm support staff <a href="mailto:support@npmjs.com">support@npmjs.com</a> to the CC list of
+adds the npm support staff <a href="mailto:support@npmjs.com">support@npmjs.com</a> to the CC list of
the email. Mention in the email that Bob can run <code>npm owner add
joe foo</code> to add Joe as an owner of the <code>foo</code> package.</li>
<li>After a reasonable amount of time, if Bob has not responded, or if
Bob and Joe can't come to any sort of resolution, email support
-<a href="mailto:support@npmjs.com">support@npmjs.com</a> and we'll sort it out. ("Reasonable" is
+<a href="mailto:support@npmjs.com">support@npmjs.com</a> and we'll sort it out. ("Reasonable" is
usually at least 4 weeks, but extra time is allowed around common
holidays.)</li>
</ol>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-disputes — npm@2.1.18</p>
+<p id="footer">npm-disputes — npm@2.2.0</p>
<p>To check if the registry is down, open up
<a href="https://registry.npmjs.org/">https://registry.npmjs.org/</a> in a web browser. This will also tell
you if you are just unable to access the internet for some reason.</p>
-<p>If the registry IS down, let us know by emailing <a href="mailto:support@npmjs.com">support@npmjs.com</a>
+<p>If the registry IS down, let us know by emailing <a href="mailto:support@npmjs.com">support@npmjs.com</a>
or posting an issue at <a href="https://github.com/npm/npm/issues">https://github.com/npm/npm/issues</a>. If it's
down for the world (and not just on your local network) then we're
probably already being pinged about it.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-faq — npm@2.1.18</p>
+<p id="footer">npm-faq — npm@2.2.0</p>
<h2 id="command-line-documentation">Command Line Documentation</h2>
<p>Using npm on the command line</p>
<h3 id="npm-1-"><a href="../cli/npm.html"><a href="../cli/npm.html">npm(1)</a></a></h3>
-<p>node package manager</p>
+<p>javascript package manager</p>
<h3 id="npm-adduser-1-"><a href="../cli/npm-adduser.html"><a href="../cli/npm-adduser.html">npm-adduser(1)</a></a></h3>
<p>Add a registry user account</p>
<h3 id="npm-bin-1-"><a href="../cli/npm-bin.html"><a href="../cli/npm-bin.html">npm-bin(1)</a></a></h3>
<h2 id="api-documentation">API Documentation</h2>
<p>Using npm in your Node programs</p>
<h3 id="npm-3-"><a href="../api/npm.html"><a href="../api/npm.html">npm(3)</a></a></h3>
-<p>node package manager</p>
+<p>javascript package manager</p>
<h3 id="npm-bin-3-"><a href="../api/npm-bin.html"><a href="../api/npm-bin.html">npm-bin(3)</a></a></h3>
<p>Display npm bin folder</p>
<h3 id="npm-bugs-3-"><a href="../api/npm-bugs.html"><a href="../api/npm-bugs.html">npm-bugs(3)</a></a></h3>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-index — npm@2.1.18</p>
+<p id="footer">npm-index — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-registry — npm@2.1.18</p>
+<p id="footer">npm-registry — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-scope — npm@2.1.18</p>
+<p id="footer">npm-scope — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">npm-scripts — npm@2.1.18</p>
+<p id="footer">npm-scripts — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">removing-npm — npm@2.1.18</p>
+<p id="footer">removing-npm — npm@2.2.0</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr>
</table>
-<p id="footer">semver — npm@2.1.18</p>
+<p id="footer">semver — npm@2.2.0</p>
}
</style>
- <title>npm - Node Package Manager</title>
+ <title>npm - JavaScript Package Manager</title>
</head>
<h1>npm</h1>
<p>If you have a complaint about a package in the public npm registry,
and cannot <a href="https://docs.npmjs.com/misc/disputes">resolve it with the package
owner</a>, please email
-<a href="mailto:support@npmjs.com">support@npmjs.com</a> and explain the situation.</p>
+<a href="mailto:support@npmjs.com">support@npmjs.com</a> and explain the situation.</p>
<p>Any data published to The npm Registry (including user account
information) may be removed or modified at the sole discretion of the
npm server administrators.</p>
is the package name and version is the version number (much like installing a
specific version).</p>
<p>The second element is the name of the tag to tag this version with. If this
-parameter is missing or falsey (empty), the default froom the config will be
+parameter is missing or falsey (empty), the default from 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>
-<h1><a href="../api/npm.html">npm</a></h1> <p>node package manager</p>
+<h1><a href="../api/npm.html">npm</a></h1> <p>javascript package manager</p>
<h2 id="synopsis">SYNOPSIS</h2>
<pre><code>var npm = require("npm")
npm.load([configObject, ]function (er, npm) {
npm.commands.install(["package"], cb)
})
</code></pre><h2 id="version">VERSION</h2>
-<p>2.1.18</p>
+<p>2.2.0</p>
<h2 id="description">DESCRIPTION</h2>
<p>This is the API documentation for npm.
To find documentation of the command line
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's source tree will show:</p>
-<pre><code>npm@2.1.18 /path/to/npm
+<pre><code>npm@2.2.0 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
</code></pre><p>It will print out extraneous, missing, and invalid packages.</p>
<p>This runs an arbitrary command from a package's <code>"scripts"</code> object.
If no package name is provided, it will search for a <code>package.json</code>
in the current folder and use its <code>"scripts"</code> object. If no <code>"command"</code>
-is provided, it will list the available top level scripts.</p>
-<p>It is used by the test, start, restart, and stop commands, but can be
-called directly, as well.</p>
+is provided, it will list the available top level scripts. The <code>env</code> command
+can be used to list environment variables that will be available to the script
+at runtime. If an "env" command is defined in your package it will have
+precedence instead.</p>
+<p><code>run[-script]</code> is used by the test, start, restart, and stop commands, but can
+be called directly, as well.</p>
<p>As of <a href="http://blog.npmjs.org/post/98131109725/npm-2-0-0"><code>npm@2.0.0</code></a>, you can
use custom arguments when executing scripts. The special option <code>--</code> is used by
<a href="http://goo.gl/KxMmtG">getopt</a> to delimit the end of the options. npm will pass
<pre><code>npm install --tag <tag>
</code></pre><p>This also applies to <code>npm dedupe</code>.</p>
<p>Publishing a package always sets the "latest" tag to the published version.</p>
+<h2 id="purpose">PURPOSE</h2>
+<p>Tags can be used to provide an alias instead of version numbers. For
+example, <code>npm</code> currently uses the tag "next" to identify the upcoming
+version, and the tag "latest" to identify the current version.</p>
+<p>A project might choose to have multiple streams of development, e.g.,
+"stable", "canary".</p>
+<h2 id="caveats">CAVEATS</h2>
+<p>Tags must share a namespace with version numbers, because they are
+specified in the same slot: <code>npm install <pkg>@<version></code> vs <code>npm
+install <pkg>@<tag></code>.</p>
+<p>Tags that can be interpreted as valid semver ranges will be
+rejected. For example, <code>v1.4</code> cannot be used as a tag, because it is
+interpreted by semver as <code>>=1.4.0 <1.5.0</code>. See
+<a href="https://github.com/npm/npm/issues/6082">https://github.com/npm/npm/issues/6082</a>.</p>
+<p>The simplest way to avoid semver problems with tags is to use tags
+that do not begin with a number or the letter <code>v</code>.</p>
<h2 id="see-also">SEE ALSO</h2>
<ul>
<li><a href="../cli/npm-publish.html">npm-publish(1)</a></li>
<li><a href="../misc/npm-registry.html">npm-registry(7)</a></li>
<li><a href="../cli/npm-config.html">npm-config(1)</a></li>
<li><a href="../misc/npm-config.html">npm-config(7)</a></li>
+<li><a href="../api/npm-tag.html">npm-tag(3)</a></li>
<li><a href="../files/npmrc.html">npmrc(5)</a></li>
</ul>
</code></pre><h2 id="description">DESCRIPTION</h2>
<p>This command will update all the packages listed to the latest version
(specified by the <code>tag</code> config).</p>
-<p>It will also install missing packages.</p>
+<p>It will also install missing packages. As with all commands that install
+packages, the <code>--dev</code> flag will cause <code>devDependencies</code> to be processed
+as well.</p>
<p>If the <code>-g</code> flag is specified, this command will update globally installed
packages.</p>
<p>If no package name is specified, all packages in the specified location (global
-<h1><a href="../cli/npm.html">npm</a></h1> <p>node package manager</p>
+<h1><a href="../cli/npm.html">npm</a></h1> <p>javascript package manager</p>
<h2 id="synopsis">SYNOPSIS</h2>
<pre><code>npm <command> [args]
</code></pre><h2 id="version">VERSION</h2>
-<p>2.1.18</p>
+<p>2.2.0</p>
<h2 id="description">DESCRIPTION</h2>
<p>npm is the package manager for the Node JavaScript platform. It puts
modules in place so that node can find them, and manages dependency
the issues list or ask on the mailing list.</p>
<ul>
<li><a href="http://github.com/npm/npm/issues">http://github.com/npm/npm/issues</a></li>
-<li><a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li>
+<li><a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li>
</ul>
<h2 id="bugs">BUGS</h2>
<p>When you find issues, please report them:</p>
<li>web:
<a href="http://github.com/npm/npm/issues">http://github.com/npm/npm/issues</a></li>
<li>email:
-<a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li>
+<a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li>
</ul>
<p>Be sure to include <em>all</em> of the output from the npm command that didn't work
as expected. The <code>npm-debug.log</code> file is also helpful to provide.</p>
<p><a href="http://blog.izs.me/">Isaac Z. Schlueter</a> ::
<a href="https://github.com/isaacs/">isaacs</a> ::
<a href="http://twitter.com/izs">@izs</a> ::
-<a href="mailto:i@izs.me">i@izs.me</a></p>
+<a href="mailto:i@izs.me">i@izs.me</a></p>
<h2 id="see-also">SEE ALSO</h2>
<ul>
<li><a href="../cli/npm-help.html">npm-help(1)</a></li>
<li>The name will probably be passed as an argument to require(), so it should
be something short, but also reasonably descriptive.</li>
<li>You may want to check the npm registry to see if there's something by that name
-already, before you get too attached to it. <a href="http://registry.npmjs.org/">http://registry.npmjs.org/</a></li>
+already, before you get too attached to it. <a href="https://www.npmjs.com/">https://www.npmjs.com/</a></li>
</ul>
<p>A name can be optionally prefixed by a scope, e.g. <code>@myorg/mypackage</code>. See
<code><a href="../misc/npm-scope.html">npm-scope(7)</a></code> for more detail.</p>
<li>The name will probably be passed as an argument to require(), so it should
be something short, but also reasonably descriptive.</li>
<li>You may want to check the npm registry to see if there's something by that name
-already, before you get too attached to it. <a href="http://registry.npmjs.org/">http://registry.npmjs.org/</a></li>
+already, before you get too attached to it. <a href="https://www.npmjs.com/">https://www.npmjs.com/</a></li>
</ul>
<p>A name can be optionally prefixed by a scope, e.g. <code>@myorg/mypackage</code>. See
<code><a href="../misc/npm-scope.html">npm-scope(7)</a></code> for more detail.</p>
<h2 id="command-line-documentation">Command Line Documentation</h2>
<p>Using npm on the command line</p>
<h3 id="npm-1-"><a href="cli/npm.html">npm(1)</a></h3>
-<p>node package manager</p>
+<p>javascript package manager</p>
<h3 id="npm-adduser-1-"><a href="cli/npm-adduser.html">npm-adduser(1)</a></h3>
<p>Add a registry user account</p>
<h3 id="npm-bin-1-"><a href="cli/npm-bin.html">npm-bin(1)</a></h3>
<h2 id="api-documentation">API Documentation</h2>
<p>Using npm in your Node programs</p>
<h3 id="npm-3-"><a href="api/npm.html">npm(3)</a></h3>
-<p>node package manager</p>
+<p>javascript package manager</p>
<h3 id="npm-bin-3-"><a href="api/npm-bin.html">npm-bin(3)</a></h3>
<p>Display npm bin folder</p>
<h3 id="npm-bugs-3-"><a href="api/npm-bugs.html">npm-bugs(3)</a></h3>
<h2 id="synopsis">SYNOPSIS</h2>
<ol>
<li>Get the author email with <code>npm owner ls <pkgname></code></li>
-<li>Email the author, CC <a href="mailto:support@npmjs.com">support@npmjs.com</a></li>
+<li>Email the author, CC <a href="mailto:support@npmjs.com">support@npmjs.com</a></li>
<li>After a few weeks, if there's no resolution, we'll sort it out.</li>
</ol>
<p>Don't squat on package names. Publish code or move out of the way.</p>
owner (Bob).</li>
<li>Joe emails Bob, explaining the situation <strong>as respectfully as
possible</strong>, and what he would like to do with the module name. He
-adds the npm support staff <a href="mailto:support@npmjs.com">support@npmjs.com</a> to the CC list of
+adds the npm support staff <a href="mailto:support@npmjs.com">support@npmjs.com</a> to the CC list of
the email. Mention in the email that Bob can run <code>npm owner add
joe foo</code> to add Joe as an owner of the <code>foo</code> package.</li>
<li>After a reasonable amount of time, if Bob has not responded, or if
Bob and Joe can't come to any sort of resolution, email support
-<a href="mailto:support@npmjs.com">support@npmjs.com</a> and we'll sort it out. ("Reasonable" is
+<a href="mailto:support@npmjs.com">support@npmjs.com</a> and we'll sort it out. ("Reasonable" is
usually at least 4 weeks, but extra time is allowed around common
holidays.)</li>
</ol>
<p>To check if the registry is down, open up
<a href="https://registry.npmjs.org/">https://registry.npmjs.org/</a> in a web browser. This will also tell
you if you are just unable to access the internet for some reason.</p>
-<p>If the registry IS down, let us know by emailing <a href="mailto:support@npmjs.com">support@npmjs.com</a>
+<p>If the registry IS down, let us know by emailing <a href="mailto:support@npmjs.com">support@npmjs.com</a>
or posting an issue at <a href="https://github.com/npm/npm/issues">https://github.com/npm/npm/issues</a>. If it's
down for the world (and not just on your local network) then we're
probably already being pinged about it.</p>
<h2 id="command-line-documentation">Command Line Documentation</h2>
<p>Using npm on the command line</p>
<h3 id="npm-1-"><a href="../cli/npm.html">npm(1)</a></h3>
-<p>node package manager</p>
+<p>javascript package manager</p>
<h3 id="npm-adduser-1-"><a href="../cli/npm-adduser.html">npm-adduser(1)</a></h3>
<p>Add a registry user account</p>
<h3 id="npm-bin-1-"><a href="../cli/npm-bin.html">npm-bin(1)</a></h3>
<h2 id="api-documentation">API Documentation</h2>
<p>Using npm in your Node programs</p>
<h3 id="npm-3-"><a href="../api/npm.html">npm(3)</a></h3>
-<p>node package manager</p>
+<p>javascript package manager</p>
<h3 id="npm-bin-3-"><a href="../api/npm-bin.html">npm-bin(3)</a></h3>
<p>Display npm bin folder</p>
<h3 id="npm-bugs-3-"><a href="../api/npm-bugs.html">npm-bugs(3)</a></h3>
]
)
.concat(Object.keys(npmconf.defaults).reduce(function (arr, key) {
- var obj = {};
+ var obj = {}
obj[key] = npmconf.defaults[key]
if (key === "logstream") return arr
return arr.concat(
function get (key, cb) {
if (!key) return list(cb)
- if (key.charAt(0) === "_") {
+ if (!public(key)) {
return cb(new Error("---sekretz---"))
}
console.log(npm.config.get(key))
}
function public (k) {
- return !(k.charAt(0) === "_" || types[k] !== types[k])
+ return !(k.charAt(0) === "_" ||
+ k.indexOf(":_") !== -1 ||
+ types[k] !== types[k])
}
function getKeys (data) {
} else {
if (!pkg.scripts[cmd]) {
if (cmd === "test") {
- pkg.scripts.test = "echo \"Error: no test specified\"";
+ pkg.scripts.test = "echo \"Error: no test specified\""
+ } else if (cmd === "env") {
+ if (process.platform === "win32") {
+ log.verbose("run-script using default platform env: SET (Windows)")
+ pkg.scripts[cmd] = "SET"
+ } else {
+ log.verbose("run-script using default platform env: env (Unix)")
+ pkg.scripts[cmd] = "env"
+ }
} else {
- return cb(new Error("missing script: " + cmd));
+ return cb(new Error("missing script: " + cmd))
}
}
cmds = [cmd]
log.verbose("run-script", cmds)
chain(cmds.map(function (c) {
// pass cli arguments after -- to script.
- if (pkg.scripts[c] && c === cmd) pkg.scripts[c] = pkg.scripts[c] + joinArgs(args)
+ if (pkg.scripts[c] && c === cmd) {
+ pkg.scripts[c] = pkg.scripts[c] + joinArgs(args)
+ }
// when running scripts explicitly, assume that they're trusted.
return [lifecycle, pkg, c, wd, true]
data = JSON.parse(data)
}
catch (er) {
- log.error("version", "Bad package.json data", data)
- return cb_(er)
+ data = null
}
- if (!args.length && data) return dump(data.name, data.version, cb_)
+ if (!args.length) return dump(data, cb_)
if (er) {
log.error("version", "No package.json found")
})
}
-function dump (name, version, cb) {
- assert(typeof name === "string", "package name must be passed to version dump")
- assert(typeof version === "string", "package version must be passed to version dump")
-
+function dump (data, cb) {
var v = {}
- if (name) v[name] = version
+ if (data && data.name && data.version) v[data.name] = data.version
v.npm = npm.version
- Object.keys(process.versions).forEach(function (k) {
+ Object.keys(process.versions).sort().forEach(function (k) {
v[k] = process.versions[k]
})
.P
.RS 2
.nf
-npm@2.1.18 /path/to/npm
+npm@2.2.0 /path/to/npm
└─┬ init\-package\-json@0\.0\.4
└── promzard@0\.1\.5
.fi
This runs an arbitrary command from a package's \fB"scripts"\fR object\.
If no package name is provided, it will search for a \fBpackage\.json\fR
in the current folder and use its \fB"scripts"\fR object\. If no \fB"command"\fR
-is provided, it will list the available top level scripts\.
+is provided, it will list the available top level scripts\. The \fBenv\fR command
+can be used to list environment variables that will be available to the script
+at runtime\. If an "env" command is defined in your package it will have
+precedence instead\.
.P
-It is used by the test, start, restart, and stop commands, but can be
-called directly, as well\.
+\fBrun[\-script]\fR is used by the test, start, restart, and stop commands, but can
+be called directly, as well\.
.P
As of \fBnpm@2\.0\.0\fR \fIhttp://blog\.npmjs\.org/post/98131109725/npm\-2\-0\-0\fR, you can
use custom arguments when executing scripts\. The special option \fB\-\-\fR is used by
This also applies to \fBnpm dedupe\fR\|\.
.P
Publishing a package always sets the "latest" tag to the published version\.
+.SH PURPOSE
+.P
+Tags can be used to provide an alias instead of version numbers\. For
+example, \fBnpm\fR currently uses the tag "next" to identify the upcoming
+version, and the tag "latest" to identify the current version\.
+.P
+A project might choose to have multiple streams of development, e\.g\.,
+"stable", "canary"\.
+.SH CAVEATS
+.P
+Tags must share a namespace with version numbers, because they are
+specified in the same slot: \fBnpm install <pkg>@<version>\fR vs \fBnpm
+install <pkg>@<tag>\fR\|\.
+.P
+Tags that can be interpreted as valid semver ranges will be
+rejected\. For example, \fBv1\.4\fR cannot be used as a tag, because it is
+interpreted by semver as \fB>=1\.4\.0 <1\.5\.0\fR\|\. See
+https://github\.com/npm/npm/issues/6082\|\.
+.P
+The simplest way to avoid semver problems with tags is to use tags
+that do not begin with a number or the letter \fBv\fR\|\.
.SH SEE ALSO
.RS 0
.IP \(bu 2
.IP \(bu 2
npm help 7 config
.IP \(bu 2
+npm apihelp tag
+.IP \(bu 2
npm help 5 npmrc
.RE
This command will update all the packages listed to the latest version
(specified by the \fBtag\fR config)\.
.P
-It will also install missing packages\.
+It will also install missing packages\. As with all commands that install
+packages, the \fB\-\-dev\fR flag will cause \fBdevDependencies\fR to be processed
+as well\.
.P
If the \fB\-g\fR flag is specified, this command will update globally installed
packages\.
.TH "NPM" "1" "January 2015" "" ""
.SH "NAME"
-\fBnpm\fR \- node package manager
+\fBnpm\fR \- javascript package manager
.SH SYNOPSIS
.P
.RS 2
.RE
.SH VERSION
.P
-2.1.18
+2.2.0
.SH DESCRIPTION
.P
npm is the package manager for the Node JavaScript platform\. It puts
specific version)\.
.P
The second element is the name of the tag to tag this version with\. If this
-parameter is missing or falsey (empty), the default froom the config will be
+parameter is missing or falsey (empty), the default from the config will be
used\. For more information about how to set this config, check
\fBman 3 npm\-config\fR for programmatic usage or \fBman npm\-config\fR for cli usage\.
.TH "NPM" "3" "January 2015" "" ""
.SH "NAME"
-\fBnpm\fR \- node package manager
+\fBnpm\fR \- javascript package manager
.SH SYNOPSIS
.P
.RS 2
.RE
.SH VERSION
.P
-2.1.18
+2.2.0
.SH DESCRIPTION
.P
This is the API documentation for npm\.
be something short, but also reasonably descriptive\.
.IP \(bu 2
You may want to check the npm registry to see if there's something by that name
-already, before you get too attached to it\. http://registry\.npmjs\.org/
+already, before you get too attached to it\. https://www\.npmjs\.com/
.RE
.P
be something short, but also reasonably descriptive\.
.IP \(bu 2
You may want to check the npm registry to see if there's something by that name
-already, before you get too attached to it\. http://registry\.npmjs\.org/
+already, before you get too attached to it\. https://www\.npmjs\.com/
.RE
.P
Using npm on the command line
.SS npm help npm
.P
-node package manager
+javascript package manager
.SS npm help adduser
.P
Add a registry user account
Using npm in your Node programs
.SS npm apihelp npm
.P
-node package manager
+javascript package manager
.SS npm apihelp bin
.P
Display npm bin folder
+++ /dev/null
-#!/bin/sh
-basedir=`dirname "$0"`
-
-case `uname` in
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
-esac
-
-if [ -x "$basedir/node" ]; then
- "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@"
- ret=$?
-else
- node "$basedir/../mkdirp/bin/cmd.js" "$@"
- ret=$?
-fi
-exit $ret
+++ /dev/null
-@IF EXIST "%~dp0\node.exe" (
- "%~dp0\node.exe" "%~dp0\..\mkdirp\bin\cmd.js" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.JS;=;%
- node "%~dp0\..\mkdirp\bin\cmd.js" %*
-)
\ No newline at end of file
+++ /dev/null
-#!/bin/sh
-basedir=`dirname "$0"`
-
-case `uname` in
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
-esac
-
-if [ -x "$basedir/node" ]; then
- "$basedir/node" "$basedir/../node-gyp/bin/node-gyp.js" "$@"
- ret=$?
-else
- node "$basedir/../node-gyp/bin/node-gyp.js" "$@"
- ret=$?
-fi
-exit $ret
+++ /dev/null
-@IF EXIST "%~dp0\node.exe" (
- "%~dp0\node.exe" "%~dp0\..\node-gyp\bin\node-gyp.js" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.JS;=;%
- node "%~dp0\..\node-gyp\bin\node-gyp.js" %*
-)
\ No newline at end of file
+++ /dev/null
-#!/bin/sh
-basedir=`dirname "$0"`
-
-case `uname` in
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
-esac
-
-if [ -x "$basedir/node" ]; then
- "$basedir/node" "$basedir/../nopt/bin/nopt.js" "$@"
- ret=$?
-else
- node "$basedir/../nopt/bin/nopt.js" "$@"
- ret=$?
-fi
-exit $ret
+++ /dev/null
-@IF EXIST "%~dp0\node.exe" (
- "%~dp0\node.exe" "%~dp0\..\nopt\bin\nopt.js" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.JS;=;%
- node "%~dp0\..\nopt\bin\nopt.js" %*
-)
\ No newline at end of file
+++ /dev/null
-#!/bin/sh
-basedir=`dirname "$0"`
-
-case `uname` in
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
-esac
-
-if [ -x "$basedir/node" ]; then
- "$basedir/node" "$basedir/../opener/opener.js" "$@"
- ret=$?
-else
- node "$basedir/../opener/opener.js" "$@"
- ret=$?
-fi
-exit $ret
+++ /dev/null
-@IF EXIST "%~dp0\node.exe" (
- "%~dp0\node.exe" "%~dp0\..\opener\opener.js" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.JS;=;%
- node "%~dp0\..\opener\opener.js" %*
-)
\ No newline at end of file
+++ /dev/null
-#!/bin/sh
-basedir=`dirname "$0"`
-
-case `uname` in
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
-esac
-
-if [ -x "$basedir/node" ]; then
- "$basedir/node" "$basedir/../rimraf/bin.js" "$@"
- ret=$?
-else
- node "$basedir/../rimraf/bin.js" "$@"
- ret=$?
-fi
-exit $ret
+++ /dev/null
-@IF EXIST "%~dp0\node.exe" (
- "%~dp0\node.exe" "%~dp0\..\rimraf\bin.js" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.JS;=;%
- node "%~dp0\..\rimraf\bin.js" %*
-)
\ No newline at end of file
+++ /dev/null
-#!/bin/sh
-basedir=`dirname "$0"`
-
-case `uname` in
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
-esac
-
-if [ -x "$basedir/node" ]; then
- "$basedir/node" "$basedir/../semver/bin/semver" "$@"
- ret=$?
-else
- node "$basedir/../semver/bin/semver" "$@"
- ret=$?
-fi
-exit $ret
+++ /dev/null
-@IF EXIST "%~dp0\node.exe" (
- "%~dp0\node.exe" "%~dp0\..\semver\bin\semver" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.JS;=;%
- node "%~dp0\..\semver\bin\semver" %*
-)
\ No newline at end of file
+++ /dev/null
-#!/bin/sh
-basedir=`dirname "$0"`
-
-case `uname` in
- *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
-esac
-
-if [ -x "$basedir/node" ]; then
- "$basedir/node" "$basedir/../which/bin/which" "$@"
- ret=$?
-else
- node "$basedir/../which/bin/which" "$@"
- ret=$?
-fi
-exit $ret
+++ /dev/null
-@IF EXIST "%~dp0\node.exe" (
- "%~dp0\node.exe" "%~dp0\..\which\bin\which" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.JS;=;%
- node "%~dp0\..\which\bin\which" %*
-)
\ No newline at end of file
'-luuid.lib',
'-lodbc32.lib',
'-lDelayImp.lib',
- '-l"<(node_root_dir)/$(ConfigurationName)/iojs.lib"'
+ '-l"<(node_root_dir)/$(ConfigurationName)/node.lib"'
],
# warning C4251: 'node::ObjectWrap::handle_' : class 'v8::Persistent<T>'
# needs to have dll-interface to be used by clients of class 'node::ObjectWrap'
}
/**
- * Copies the iojs.lib file for the current target architecture into the
+ * Copies the node.lib file for the current target architecture into the
* current proper dev dir location.
*/
if (!win || !copyDevLib) return doBuild()
var buildDir = path.resolve(nodeDir, buildType)
- , archNodeLibPath = path.resolve(nodeDir, arch, 'iojs.lib')
- , buildNodeLibPath = path.resolve(buildDir, 'iojs.lib')
+ , archNodeLibPath = path.resolve(nodeDir, arch, 'node.lib')
+ , buildNodeLibPath = path.resolve(buildDir, 'node.lib')
mkdirp(buildDir, function (err, isNew) {
if (err) return callback(err)
log.verbose('"' + buildType + '" dir needed to be created?', isNew)
var rs = fs.createReadStream(archNodeLibPath)
, ws = fs.createWriteStream(buildNodeLibPath)
- log.verbose('copying "iojs.lib" for ' + arch, buildNodeLibPath)
+ log.verbose('copying "node.lib" for ' + arch, buildNodeLibPath)
rs.pipe(ws)
rs.on('error', callback)
ws.on('error', callback)
}
}
- var distUrl = gyp.opts['dist-url'] || gyp.opts.disturl || 'https://iojs.org/dist'
+ var distUrl = gyp.opts['dist-url'] || gyp.opts.disturl || 'http://nodejs.org/dist'
// Determine which node dev files version we are installing
// now download the node tarball
var tarPath = gyp.opts['tarball']
- var tarballUrl = tarPath ? tarPath : distUrl + '/v' + version + '/iojs-v' + version + '.tar.gz'
+ var tarballUrl = tarPath ? tarPath : distUrl + '/v' + version + '/node-v' + version + '.tar.gz'
, badDownload = false
, extractCount = 0
, gunzip = zlib.createGunzip()
var async = 0
if (win) {
- // need to download iojs.lib
+ // need to download node.lib
async++
downloadNodeLib(deref)
}
// check content shasums
for (var k in contentShasums) {
log.verbose('validating download checksum for ' + k, '(%s == %s)', contentShasums[k], expectShasums[k])
- // TODO(piscisaureus) re-enable checksum verification when the correct files are in place.
- if (false || contentShasums[k] !== expectShasums[k]) {
+ if (contentShasums[k] !== expectShasums[k]) {
cb(new Error(k + ' local checksum ' + contentShasums[k] + ' not match remote ' + expectShasums[k]))
return
}
}
function downloadNodeLib (done) {
- log.verbose('on Windows; need to download `iojs.lib`...')
+ log.verbose('on Windows; need to download `node.lib`...')
var dir32 = path.resolve(devDir, 'ia32')
, dir64 = path.resolve(devDir, 'x64')
- , nodeLibPath32 = path.resolve(dir32, 'iojs.lib')
- , nodeLibPath64 = path.resolve(dir64, 'iojs.lib')
- , nodeLibUrl32 = distUrl + '/v' + version + '/win-x86/iojs.lib'
- , nodeLibUrl64 = distUrl + '/v' + version + '/win-x64/iojs.lib'
+ , nodeLibPath32 = path.resolve(dir32, 'node.lib')
+ , nodeLibPath64 = path.resolve(dir64, 'node.lib')
+ , nodeLibUrl32 = distUrl + '/v' + version + '/node.lib'
+ , nodeLibUrl64 = distUrl + '/v' + version + '/x64/node.lib'
- log.verbose('32-bit iojs.lib dir', dir32)
- log.verbose('64-bit iojs.lib dir', dir64)
- log.verbose('`iojs.lib` 32-bit url', nodeLibUrl32)
- log.verbose('`iojs.lib` 64-bit url', nodeLibUrl64)
+ log.verbose('32-bit node.lib dir', dir32)
+ log.verbose('64-bit node.lib dir', dir64)
+ log.verbose('`node.lib` 32-bit url', nodeLibUrl32)
+ log.verbose('`node.lib` 64-bit url', nodeLibUrl64)
var async = 2
mkdir(dir32, function (err) {
if (err) return done(err)
- log.verbose('streaming 32-bit iojs.lib to:', nodeLibPath32)
+ log.verbose('streaming 32-bit node.lib to:', nodeLibPath32)
var req = download(nodeLibUrl32)
if (!req) return
req.on('error', done)
req.on('response', function (res) {
if (res.statusCode !== 200) {
- done(new Error(res.statusCode + ' status code downloading 32-bit iojs.lib'))
+ done(new Error(res.statusCode + ' status code downloading 32-bit node.lib'))
return
}
getContentSha(res, function (_, checksum) {
- contentShasums['win-x86/iojs.lib'] = checksum
- log.verbose('content checksum', 'win-x86/iojs.lib', checksum)
+ contentShasums['node.lib'] = checksum
+ log.verbose('content checksum', 'node.lib', checksum)
})
var ws = fs.createWriteStream(nodeLibPath32)
})
mkdir(dir64, function (err) {
if (err) return done(err)
- log.verbose('streaming 64-bit iojs.lib to:', nodeLibPath64)
+ log.verbose('streaming 64-bit node.lib to:', nodeLibPath64)
var req = download(nodeLibUrl64)
if (!req) return
req.on('error', done)
req.on('response', function (res) {
if (res.statusCode !== 200) {
- done(new Error(res.statusCode + ' status code downloading 64-bit iojs.lib'))
+ done(new Error(res.statusCode + ' status code downloading 64-bit node.lib'))
return
}
getContentSha(res, function (_, checksum) {
- contentShasums['win-x64/iojs.lib'] = checksum
- log.verbose('content checksum', 'win-x64/iojs.lib', checksum)
+ contentShasums['x64/node.lib'] = checksum
+ log.verbose('content checksum', 'x64/node.lib', checksum)
})
var ws = fs.createWriteStream(nodeLibPath64)
{
"name": "npm-install-checks",
- "version": "1.0.4",
+ "version": "1.0.5",
"description": "checks that npm runs during the installation of a module",
"main": "index.js",
"dependencies": {
- "npmlog": "0.1",
+ "npmlog": "0.1 || 1",
"semver": "^2.3.0 || 3.x || 4"
},
"devDependencies": {
"bugs": {
"url": "https://github.com/npm/npm-install-checks/issues"
},
- "gitHead": "05944f95860b0ac3769667551c4b7aa3d3fcdc32",
- "_id": "npm-install-checks@1.0.4",
- "_shasum": "9757c6f9d4d493c2489465da6d07a8ed416d44c8",
- "_from": "npm-install-checks@>=1.0.2-0 <1.1.0-0",
- "_npmVersion": "2.0.0-beta.3",
+ "gitHead": "c36e052a0a54ad82932689fa86fd59197277f80d",
+ "_id": "npm-install-checks@1.0.5",
+ "_shasum": "a1b5beabfd60e0535b14f763157c410cb6bdae56",
+ "_from": "npm-install-checks@>=1.0.5 <1.1.0",
+ "_npmVersion": "2.1.11",
+ "_nodeVersion": "0.10.33",
"_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
+ "name": "iarna",
+ "email": "me@re-becca.org"
},
"maintainers": [
{
{
"name": "isaacs",
"email": "i@izs.me"
+ },
+ {
+ "name": "iarna",
+ "email": "me@re-becca.org"
}
],
"dist": {
- "shasum": "9757c6f9d4d493c2489465da6d07a8ed416d44c8",
- "tarball": "http://registry.npmjs.org/npm-install-checks/-/npm-install-checks-1.0.4.tgz"
+ "shasum": "a1b5beabfd60e0535b14f763157c410cb6bdae56",
+ "tarball": "http://registry.npmjs.org/npm-install-checks/-/npm-install-checks-1.0.5.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-1.0.4.tgz"
+ "_resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-1.0.5.tgz"
}
+diff --git a/lib/_stream_duplex.js b/lib/_stream_duplex.js
+index c5a741c..a2e0d8e 100644
+--- a/lib/_stream_duplex.js
++++ b/lib/_stream_duplex.js
+@@ -26,8 +26,8 @@
+
+ module.exports = Duplex;
+ var util = require('util');
+-var Readable = require('_stream_readable');
+-var Writable = require('_stream_writable');
++var Readable = require('./_stream_readable');
++var Writable = require('./_stream_writable');
+
+ util.inherits(Duplex, Readable);
+
+diff --git a/lib/_stream_passthrough.js b/lib/_stream_passthrough.js
+index a5e9864..330c247 100644
+--- a/lib/_stream_passthrough.js
++++ b/lib/_stream_passthrough.js
+@@ -25,7 +25,7 @@
+
module.exports = PassThrough;
-var Transform = require('_stream_transform');
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// a duplex stream is just a stream that is both readable and writable.
// Since JS doesn't have multiple prototypal inheritance, this class
// prototypally inherits from Readable, and then parasitically from
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// a passthrough stream.
// basically just the most minimal sort of Transform stream.
// Every written chunk gets output as-is.
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
module.exports = Readable;
/*<replacement>*/
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
// a transform stream is a readable/writable stream where you do
// something with the data. Sometimes it's called a "filter",
// but that's not a great name for it, since that implies a thing where
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// A bit simpler than readable streams.
// Implement an async ._write(chunk, cb), and it'll handle all
// the drain event emission and buffering.
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(ar) {
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(ar) {
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
var Buffer = require('buffer').Buffer;
var isBufferEncoding = Buffer.isEncoding
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
module.exports = extend;
function extend(origin, add) {
// Don't do anything if add isn't an object
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// a duplex stream is just a stream that is both readable and writable.
// Since JS doesn't have multiple prototypal inheritance, this class
// prototypally inherits from Readable, and then parasitically from
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// a passthrough stream.
// basically just the most minimal sort of Transform stream.
// Every written chunk gets output as-is.
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
module.exports = Readable;
/*<replacement>*/
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
// a transform stream is a readable/writable stream where you do
// something with the data. Sometimes it's called a "filter",
// but that's not a great name for it, since that implies a thing where
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// A bit simpler than readable streams.
// Implement an async ._write(chunk, cb), and it'll handle all
// the drain event emission and buffering.
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(ar) {
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(ar) {
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
var Buffer = require('buffer').Buffer;
var isBufferEncoding = Buffer.isEncoding
+diff --git a/lib/_stream_duplex.js b/lib/_stream_duplex.js
+index c5a741c..a2e0d8e 100644
+--- a/lib/_stream_duplex.js
++++ b/lib/_stream_duplex.js
+@@ -26,8 +26,8 @@
+
+ module.exports = Duplex;
+ var util = require('util');
+-var Readable = require('_stream_readable');
+-var Writable = require('_stream_writable');
++var Readable = require('./_stream_readable');
++var Writable = require('./_stream_writable');
+
+ util.inherits(Duplex, Readable);
+
+diff --git a/lib/_stream_passthrough.js b/lib/_stream_passthrough.js
+index a5e9864..330c247 100644
+--- a/lib/_stream_passthrough.js
++++ b/lib/_stream_passthrough.js
+@@ -25,7 +25,7 @@
module.exports = PassThrough;
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// a duplex stream is just a stream that is both readable and writable.
// Since JS doesn't have multiple prototypal inheritance, this class
// prototypally inherits from Readable, and then parasitically from
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// a passthrough stream.
// basically just the most minimal sort of Transform stream.
// Every written chunk gets output as-is.
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
module.exports = Readable;
/*<replacement>*/
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
// a transform stream is a readable/writable stream where you do
// something with the data. Sometimes it's called a "filter",
// but that's not a great name for it, since that implies a thing where
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// A bit simpler than readable streams.
// Implement an async ._write(chunk, cb), and it'll handle all
// the drain event emission and buffering.
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(ar) {
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(ar) {
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
var Buffer = require('buffer').Buffer;
var isBufferEncoding = Buffer.isEncoding
{
- "version": "2.1.18",
+ "version": "2.2.0",
"name": "npm",
"description": "A package manager for node",
"keywords": [
"publishtest": false
},
"homepage": "https://docs.npmjs.com/",
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me"
- },
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
"repository": {
"type": "git",
"url": "https://github.com/npm/npm"
},
"bugs": {
- "url": "http://github.com/npm/npm/issues",
- "email": "npm-@googlegroups.com"
+ "email": "npm-@googlegroups.com",
+ "url": "http://github.com/npm/npm/issues"
},
"directories": {
"doc": "./doc",
"bin": "./bin"
},
"main": "./lib/npm.js",
- "bin": {
- "npm": "./bin/npm-cli.js"
- },
+ "bin": "./bin/npm-cli.js",
"dependencies": {
"abbrev": "~1.0.5",
"ansi": "~0.3.0",
"normalize-git-url": "~1.0.0",
"normalize-package-data": "~1.0.3",
"npm-cache-filename": "~1.0.1",
- "npm-install-checks": "~1.0.2",
+ "npm-install-checks": "~1.0.5",
"npm-package-arg": "~2.1.3",
"npm-registry-client": "~4.0.5",
"npm-user-validate": "~0.1.1",
"prepublish": "node bin/npm-cli.js prune --prefix=. --no-global && rm -rf test/*/*/node_modules && make -j8 doc",
"dumpconf": "env | grep npm | sort | uniq"
},
- "license": "Artistic-2.0",
- "contributors": [
- {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me"
- },
- {
- "name": "Steve Steiner",
- "email": "ssteinerX@gmail.com"
- },
- {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com"
- },
- {
- "name": "Aaron Blohowiak",
- "email": "aaron.blohowiak@gmail.com"
- },
- {
- "name": "Martyn Smith",
- "email": "martyn@dollyfish.net.nz"
- },
- {
- "name": "Mathias Pettersson",
- "email": "mape@mape.me"
- },
- {
- "name": "Brian Hammond",
- "email": "brian@fictorial.com"
- },
- {
- "name": "Charlie Robbins",
- "email": "charlie.robbins@gmail.com"
- },
- {
- "name": "Francisco Treacy",
- "email": "francisco.treacy@gmail.com"
- },
- {
- "name": "Cliffano Subagio",
- "email": "cliffano@gmail.com"
- },
- {
- "name": "Christian Eager",
- "email": "christian.eager@nokia.com"
- },
- {
- "name": "Dav Glass",
- "email": "davglass@gmail.com"
- },
- {
- "name": "Alex K. Wolfe",
- "email": "alexkwolfe@gmail.com"
- },
- {
- "name": "James Sanders",
- "email": "jimmyjazz14@gmail.com"
- },
- {
- "name": "Reid Burke",
- "email": "me@reidburke.com"
- },
- {
- "name": "Arlo Breault",
- "email": "arlolra@gmail.com"
- },
- {
- "name": "Timo Derstappen",
- "email": "teemow@gmail.com"
- },
- {
- "name": "Bradley Meck",
- "email": "bradley.meck@gmail.com"
- },
- {
- "name": "Bart Teeuwisse",
- "email": "bart.teeuwisse@thecodemill.biz"
- },
- {
- "name": "Ben Noordhuis",
- "email": "info@bnoordhuis.nl"
- },
- {
- "name": "Tor Valamo",
- "email": "tor.valamo@gmail.com"
- },
- {
- "name": "Whyme.Lyu",
- "email": "5longluna@gmail.com"
- },
- {
- "name": "Olivier Melcher",
- "email": "olivier.melcher@gmail.com"
- },
- {
- "name": "Tomaž Muraus",
- "email": "kami@k5-storitve.net"
- },
- {
- "name": "Evan Meagher",
- "email": "evan.meagher@gmail.com"
- },
- {
- "name": "Orlando Vazquez",
- "email": "ovazquez@gmail.com"
- },
- {
- "name": "George Miroshnykov",
- "email": "gmiroshnykov@lohika.com"
- },
- {
- "name": "Geoff Flarity",
- "email": "geoff.flarity@gmail.com"
- },
- {
- "name": "Pete Kruckenberg",
- "email": "pete@kruckenberg.com"
- },
- {
- "name": "Laurie Harper",
- "email": "laurie@holoweb.net"
- },
- {
- "name": "Chris Wong",
- "email": "chris@chriswongstudio.com"
- },
- {
- "name": "Max Goodman",
- "email": "c@chromacode.com"
- },
- {
- "name": "Scott Bronson",
- "email": "brons_github@rinspin.com"
- },
- {
- "name": "Federico Romero",
- "email": "federomero@gmail.com"
- },
- {
- "name": "Visnu Pitiyanuvath",
- "email": "visnupx@gmail.com"
- },
- {
- "name": "Irakli Gozalishvili",
- "email": "rfobic@gmail.com"
- },
- {
- "name": "Mark Cahill",
- "email": "mark@tiemonster.info"
- },
- {
- "name": "Zearin",
- "email": "zearin@gonk.net"
- },
- {
- "name": "Iain Sproat",
- "email": "iainsproat@gmail.com"
- },
- {
- "name": "Trent Mick",
- "email": "trentm@gmail.com"
- },
- {
- "name": "Felix Geisendörfer",
- "email": "felix@debuggable.com"
- },
- {
- "name": "Conny Brunnkvist",
- "email": "cbrunnkvist@gmail.com"
- },
- {
- "name": "Will Elwood",
- "email": "w.elwood08@gmail.com"
- },
- {
- "name": "Oleg Efimov",
- "email": "efimovov@gmail.com"
- },
- {
- "name": "Martin Cooper",
- "email": "mfncooper@gmail.com"
- },
- {
- "name": "Jameson Little",
- "email": "t.jameson.little@gmail.com"
- },
- {
- "name": "cspotcode",
- "email": "cspotcode@gmail.com"
- },
- {
- "name": "Maciej Małecki",
- "email": "maciej.malecki@notimplemented.org"
- },
- {
- "name": "Stephen Sugden",
- "email": "glurgle@gmail.com"
- },
- {
- "name": "Gautham Pai",
- "email": "buzypi@gmail.com"
- },
- {
- "name": "David Trejo",
- "email": "david.daniel.trejo@gmail.com"
- },
- {
- "name": "Paul Vorbach",
- "email": "paul@vorb.de"
- },
- {
- "name": "George Ornbo",
- "email": "george@shapeshed.com"
- },
- {
- "name": "Tim Oxley",
- "email": "secoif@gmail.com"
- },
- {
- "name": "Tyler Green",
- "email": "tyler.green2@gmail.com"
- },
- {
- "name": "atomizer",
- "email": "danila.gerasimov@gmail.com"
- },
- {
- "name": "Rod Vagg",
- "email": "rod@vagg.org"
- },
- {
- "name": "Christian Howe",
- "email": "coderarity@gmail.com"
- },
- {
- "name": "Andrew Lunny",
- "email": "alunny@gmail.com"
- },
- {
- "name": "Henrik Hodne",
- "email": "dvyjones@binaryhex.com"
- },
- {
- "name": "Adam Blackburn",
- "email": "regality@gmail.com"
- },
- {
- "name": "Kris Windham",
- "email": "kriswindham@gmail.com"
- },
- {
- "name": "Jens Grunert",
- "email": "jens.grunert@gmail.com"
- },
- {
- "name": "Joost-Wim Boekesteijn",
- "email": "joost-wim@boekesteijn.nl"
- },
- {
- "name": "Dalmais Maxence",
- "email": "github@maxired.fr"
- },
- {
- "name": "Marcus Ekwall",
- "email": "marcus.ekwall@gmail.com"
- },
- {
- "name": "Aaron Stacy",
- "email": "aaron.r.stacy@gmail.com"
- },
- {
- "name": "Phillip Howell",
- "email": "phowell@cothm.org"
- },
- {
- "name": "Domenic Denicola",
- "email": "domenic@domenicdenicola.com"
- },
- {
- "name": "James Halliday",
- "email": "mail@substack.net"
- },
- {
- "name": "Jeremy Cantrell",
- "email": "jmcantrell@gmail.com"
- },
- {
- "name": "Ribettes",
- "email": "patlogan29@gmail.com"
- },
- {
- "name": "Einar Otto Stangvik",
- "email": "einaros@gmail.com"
- },
- {
- "name": "Don Park",
- "email": "donpark@docuverse.com"
- },
- {
- "name": "Kei Son",
- "email": "heyacct@gmail.com"
- },
- {
- "name": "Nicolas Morel",
- "email": "marsup@gmail.com"
- },
- {
- "name": "Mark Dube",
- "email": "markisdee@gmail.com"
- },
- {
- "name": "Nathan Rajlich",
- "email": "nathan@tootallnate.net"
- },
- {
- "name": "Maxim Bogushevich",
- "email": "boga1@mail.ru"
- },
- {
- "name": "Justin Beckwith",
- "email": "justbe@microsoft.com"
- },
- {
- "name": "Meaglin",
- "email": "Meaglin.wasabi@gmail.com"
- },
- {
- "name": "Ben Evans",
- "email": "ben@bensbit.co.uk"
- },
- {
- "name": "Nathan Zadoks",
- "email": "nathan@nathan7.eu"
- },
- {
- "name": "Brian White",
- "email": "mscdex@gmail.com"
- },
- {
- "name": "Jed Schmidt",
- "email": "tr@nslator.jp"
- },
- {
- "name": "Ian Livingstone",
- "email": "ianl@cs.dal.ca"
- },
- {
- "name": "Patrick Pfeiffer",
- "email": "patrick@buzzle.at"
- },
- {
- "name": "Paul Miller",
- "email": "paul@paulmillr.com"
- },
- {
- "name": "seebees",
- "email": "seebees@gmail.com"
- },
- {
- "name": "Carl Lange",
- "email": "carl@flax.ie"
- },
- {
- "name": "Jan Lehnardt",
- "email": "jan@apache.org"
- },
- {
- "name": "Alexey Kreschuk",
- "email": "akrsch@gmail.com"
- },
- {
- "name": "Di Wu",
- "email": "dwu@palantir.com"
- },
- {
- "name": "Florian Margaine",
- "email": "florian@margaine.com"
- },
- {
- "name": "Forbes Lindesay",
- "email": "forbes@lindesay.co.uk"
- },
- {
- "name": "Ian Babrou",
- "email": "ibobrik@gmail.com"
- },
- {
- "name": "Jaakko Manninen",
- "email": "jaakko@rocketpack.fi"
- },
- {
- "name": "Johan Nordberg",
- "email": "its@johan-nordberg.com"
- },
- {
- "name": "Johan Sköld",
- "email": "johan@skold.cc"
- },
- {
- "name": "Larz Conwell",
- "email": "larz@larz-laptop.(none)",
- "url": "none"
- },
- {
- "name": "Luke Arduini",
- "email": "luke.arduini@gmail.com"
- },
- {
- "name": "Marcel Klehr",
- "email": "mklehr@gmx.net"
- },
- {
- "name": "Mathias Bynens",
- "email": "mathias@qiwi.be"
- },
- {
- "name": "Matt Lunn",
- "email": "matt@mattlunn.me.uk"
- },
- {
- "name": "Matt McClure",
- "email": "matt.mcclure@mapmyfitness.com"
- },
- {
- "name": "Nirk Niggler",
- "email": "nirk.niggler@gmail.com"
- },
- {
- "name": "Paolo Fragomeni",
- "email": "paolo@async.ly"
- },
- {
- "name": "Jake Verbaten",
- "email": "raynos2@gmail.com",
- "url": "Raynos"
- },
- {
- "name": "Robert Kowalski",
- "email": "rok@kowalski.gd"
- },
- {
- "name": "Schabse Laks",
- "email": "Dev@SLaks.net"
- },
- {
- "name": "Stuart Knightley",
- "email": "stuart@stuartk.com"
- },
- {
- "name": "Stuart P. Bentley",
- "email": "stuart@testtrack4.com"
- },
- {
- "name": "Vaz Allen",
- "email": "vaz@tryptid.com"
- },
- {
- "name": "elisee",
- "email": "elisee@sparklin.org"
- },
- {
- "name": "Evan You",
- "email": "yyx990803@gmail.com"
- },
- {
- "name": "Wil Moore III",
- "email": "wil.moore@wilmoore.com"
- },
- {
- "name": "Dylan Greene",
- "email": "dylang@gmail.com"
- },
- {
- "name": "zeke",
- "email": "zeke@sikelianos.com"
- },
- {
- "name": "Andrew Horton",
- "email": "andrew.j.horton@gmail.com"
- },
- {
- "name": "Denis Gladkikh",
- "email": "outcoldman@gmail.com"
- },
- {
- "name": "Daniel Santiago",
- "email": "daniel.santiago@highlevelwebs.com"
- },
- {
- "name": "Alex Kocharin",
- "email": "alex@kocharin.ru"
- },
- {
- "name": "Evan Lucas",
- "email": "evanlucas@me.com"
- },
- {
- "name": "Steve Mason",
- "email": "stevem@brandwatch.com"
- },
- {
- "name": "Quinn Slack",
- "email": "qslack@qslack.com"
- },
- {
- "name": "Sébastien Santoro",
- "email": "dereckson@espace-win.org"
- },
- {
- "name": "CamilleM",
- "email": "camille.moulin@alterway.fr"
- },
- {
- "name": "Tom Huang",
- "email": "hzlhu.dargon@gmail.com"
- },
- {
- "name": "Sergey Belov",
- "email": "peimei@ya.ru"
- },
- {
- "name": "Younghoon Park",
- "email": "sola92@gmail.com"
- },
- {
- "name": "Yazhong Liu",
- "email": "yorkiefixer@gmail.com"
- },
- {
- "name": "Mikola Lysenko",
- "email": "mikolalysenko@gmail.com"
- },
- {
- "name": "Rafael de Oleza",
- "email": "rafa@spotify.com"
- },
- {
- "name": "Yeonghoon Park",
- "email": "sola92@gmail.com"
- },
- {
- "name": "Franck Cuny",
- "email": "franck.cuny@gmail.com"
- },
- {
- "name": "Alan Shaw",
- "email": "alan@freestyle-developments.co.uk"
- },
- {
- "name": "Alex Rodionov",
- "email": "p0deje@gmail.com"
- },
- {
- "name": "Alexej Yaroshevich",
- "email": "alex@qfox.ru"
- },
- {
- "name": "Elan Shanker",
- "email": "elan.shanker@gmail.com"
- },
- {
- "name": "François Frisch",
- "email": "francoisfrisch@gmail.com"
- },
- {
- "name": "Gabriel Falkenberg",
- "email": "gabriel.falkenberg@gmail.com"
- },
- {
- "name": "Jason Diamond",
- "email": "jason@diamond.name"
- },
- {
- "name": "Jess Martin",
- "email": "jessmartin@gmail.com"
- },
- {
- "name": "Jon Spencer",
- "email": "jon@jonspencer.ca"
- },
- {
- "name": "Matt Colyer",
- "email": "matt@colyer.name"
- },
- {
- "name": "Matt McClure",
- "email": "matt.mcclure@mapmyfitness.com"
- },
- {
- "name": "Maximilian Antoni",
- "email": "maximilian.antoni@juliusbaer.com"
- },
- {
- "name": "Nicholas Kinsey",
- "email": "pyro@feisty.io"
- },
- {
- "name": "Paulo Cesar",
- "email": "pauloc062@gmail.com"
- },
- {
- "name": "Quim Calpe",
- "email": "quim@kalpe.com"
- },
- {
- "name": "Robert Gieseke",
- "email": "robert.gieseke@gmail.com"
- },
- {
- "name": "Spain Train",
- "email": "michael.spainhower@opower.com"
- },
- {
- "name": "TJ Holowaychuk",
- "email": "tj@vision-media.ca"
- },
- {
- "name": "Thom Blake",
- "email": "tblake@brightroll.com"
- },
- {
- "name": "Trevor Burnham",
- "email": "tburnham@hubspot.com"
- },
- {
- "name": "bitspill",
- "email": "bitspill+github@bitspill.net"
- },
- {
- "name": "Neil Gentleman",
- "email": "ngentleman@gmail.com"
- }
- ],
- "man": [
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-README.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-adduser.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-bin.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-bugs.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-build.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-bundle.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-cache.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-completion.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-config.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-dedupe.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-deprecate.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-docs.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-edit.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-explore.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-help-search.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-help.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-init.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-install.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-link.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-ls.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-outdated.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-owner.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-pack.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-prefix.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-prune.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-publish.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-rebuild.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-repo.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-restart.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-rm.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-root.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-run-script.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-search.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-shrinkwrap.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-star.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-stars.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-start.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-stop.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-submodule.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-tag.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-test.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-uninstall.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-unpublish.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-update.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-version.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-view.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm-whoami.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man1/npm.1",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-bin.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-bugs.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-cache.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-commands.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-config.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-deprecate.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-docs.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-edit.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-explore.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-help-search.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-init.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-install.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-link.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-load.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-ls.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-outdated.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-owner.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-pack.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-prefix.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-prune.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-publish.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-rebuild.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-repo.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-restart.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-root.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-run-script.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-search.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-shrinkwrap.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-start.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-stop.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-submodule.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-tag.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-test.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-uninstall.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-unpublish.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-update.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-version.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-view.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm-whoami.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man3/npm.3",
- "/Users/ogd/Documents/projects/npm/npm/man/man5/npm-folders.5",
- "/Users/ogd/Documents/projects/npm/npm/man/man5/npm-global.5",
- "/Users/ogd/Documents/projects/npm/npm/man/man5/npm-json.5",
- "/Users/ogd/Documents/projects/npm/npm/man/man5/npmrc.5",
- "/Users/ogd/Documents/projects/npm/npm/man/man5/package.json.5",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/npm-coding-style.7",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/npm-config.7",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/npm-developers.7",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/npm-disputes.7",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/npm-faq.7",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/npm-index.7",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/npm-registry.7",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/npm-scope.7",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/npm-scripts.7",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/removing-npm.7",
- "/Users/ogd/Documents/projects/npm/npm/man/man7/semver.7"
- ],
- "gitHead": "cad3d1ed571981b13c8165ba4516b836bf79293c",
- "_id": "npm@2.1.18",
- "_shasum": "e2af4c5f848fb023851cd2ec129005d33090bd57",
- "_from": "npm@2.1.18",
- "_npmVersion": "2.1.18",
- "_nodeVersion": "0.10.35",
- "_npmUser": {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- }
- ],
- "dist": {
- "shasum": "e2af4c5f848fb023851cd2ec129005d33090bd57",
- "tarball": "http://registry.npmjs.org/npm/-/npm-2.1.18.tgz"
- },
- "_resolved": "https://registry.npmjs.org/npm/-/npm-2.1.18.tgz",
- "readme": "ERROR: No README data found!"
+ "license": "Artistic-2.0"
}
--- /dev/null
+var fs = require("fs")
+var path = require("path")
+var test = require("tap").test
+var rimraf = require("rimraf")
+var mkdirp = require("mkdirp")
+var common = require("../common-tap.js")
+
+var pkg = path.resolve(__dirname, "config-private")
+var opts = { cwd: pkg }
+
+test("setup", function (t) {
+ rimraf.sync(pkg)
+ mkdirp.sync(pkg)
+ t.end()
+})
+
+test("config get private var (old auth)", function (t) {
+ common.npm([
+ "config",
+ "get",
+ "_auth"
+ ],
+ opts,
+ function (err, code, stdout, stderr) {
+ t.ifError(err)
+
+ t.similar(stderr, /sekretz/, "password blocked on stderr")
+ t.equal(stdout, "", "no output")
+ t.end()
+ }
+ )
+})
+
+test("config get private var (new auth)", function (t) {
+ common.npm([
+ "config",
+ "get",
+ "//registry.npmjs.org/:_password"
+ ],
+ opts,
+ function (err, code, stdout, stderr) {
+ t.ifError(err)
+
+ t.similar(stderr, /sekretz/, "password blocked on stderr")
+ t.equal(stdout, "", "no output")
+ t.end()
+ }
+ )
+})
+
+test("config get public var (new username)", function (t) {
+ var FIXTURE_PATH = path.resolve(pkg, "fixture_npmrc")
+ var s = "//registry.lvh.me/:username = wombat\n" +
+ "//registry.lvh.me/:_password = YmFkIHBhc3N3b3Jk\n" +
+ "//registry.lvh.me/:email = lindsay@wdu.org.au\n"
+ fs.writeFileSync(FIXTURE_PATH, s, "ascii")
+ fs.chmodSync(FIXTURE_PATH, "0444")
+
+ common.npm(
+ [
+ "config",
+ "get",
+ "//registry.lvh.me/:username",
+ "--userconfig=" + FIXTURE_PATH,
+ "--registry=http://registry.lvh.me/"
+ ],
+ opts,
+ function (err, code, stdout, stderr) {
+ t.ifError(err)
+
+ t.equal(stderr, "", "stderr is empty")
+ t.equal(stdout, "wombat\n", "got usename is output")
+ t.end()
+ }
+ )
+})
+
+test("clean", function (t) {
+ rimraf.sync(pkg)
+ t.end()
+})
lines = stdout.trim().split("\n")
stdout = lines.filter(function(line) {
- return line.trim() !== "" && line[0] !== '>'
- }).join(';')
+ return line.trim() !== "" && line[0] !== ">"
+ }).join(";")
t.equal(stdout, command)
t.end()
common.npm(["run-script", "prewith-pre", "--", "an arg"], opts, testOutput.bind(null, t, "an arg"))
})
-test('npm run-script test', function (t) {
- common.npm(['run-script', 'test'], opts, function (er, code, stdout, stderr) {
- if (er)
- throw er
- t.notOk(stderr, 'should not generate errors')
+test("npm run-script test", function (t) {
+ common.npm(["run-script", "test"], opts, function (er, code, stdout, stderr) {
+ t.ifError(er, "npm run-script test ran without issue")
+ t.notOk(stderr, "should not generate errors")
t.end()
})
})
-test('npm run-script nonexistent-script', function (t) {
- common.npm(['run-script', 'nonexistent-script'], opts, function (er, code, stdout, stderr) {
- if (er)
- throw er
- t.ok(stderr, 'should generate errors')
+test("npm run-script env", function (t) {
+ common.npm(["run-script", "env"], opts, function (er, code, stdout, stderr) {
+ t.ifError(er, "using default env script")
+ t.notOk(stderr, "should not generate errors")
+ t.ok( stdout.indexOf("npm_config_init_version") > 0, "expected values in var list" )
t.end()
})
})
-test('cleanup', function (t) {
+test("npm run-script nonexistent-script", function (t) {
+ common.npm(["run-script", "nonexistent-script"], opts, function (er, code, stdout, stderr) {
+ t.ifError(er, "npm run-script nonexistent-script did not cause npm to explode")
+ t.ok(stderr, "should generate errors")
+ t.end()
+ })
+})
+
+test("cleanup", function (t) {
cleanup()
t.end()
})
{"name":"runscript"
,"version":"1.2.3"
,"scripts":{
- "start":"node -e 'console.log(process.argv[1] || \"start\")'",
- "prewith-pre":"node -e 'console.log(process.argv[1] || \"pre\")'",
- "with-pre":"node -e 'console.log(process.argv[1] || \"main\")'",
- "with-post":"node -e 'console.log(process.argv[1] || \"main\")'",
- "postwith-post":"node -e 'console.log(process.argv[1] || \"post\")'",
- "prewith-both":"node -e 'console.log(process.argv[1] || \"pre\")'",
- "with-both":"node -e 'console.log(process.argv[1] || \"main\")'",
- "postwith-both":"node -e 'console.log(process.argv[1] || \"post\")'"
+ "start":"node -e \"console.log(process.argv[1] || 'start')\"",
+ "prewith-pre":"node -e \"console.log(process.argv[1] || 'pre')\"",
+ "with-pre":"node -e \"console.log(process.argv[1] || 'main')\"",
+ "with-post":"node -e \"console.log(process.argv[1] || 'main')\"",
+ "postwith-post":"node -e \"console.log(process.argv[1] || 'post')\"",
+ "prewith-both":"node -e \"console.log(process.argv[1] || 'pre')\"",
+ "with-both":"node -e \"console.log(process.argv[1] || 'main')\"",
+ "postwith-both":"node -e \"console.log(process.argv[1] || 'post')\""
}
}
--- /dev/null
+var common = require("../common-tap.js")
+var test = require("tap").test
+var osenv = require("osenv")
+var path = require("path")
+var mkdirp = require("mkdirp")
+var rimraf = require("rimraf")
+
+var pkg = path.resolve(__dirname, "version-no-package")
+
+test("setup", function (t) {
+ setup()
+ t.end()
+})
+
+test("npm version in a prefix with no package.json", function(t) {
+ setup()
+ common.npm(
+ ["version", "--json", "--prefix", pkg],
+ { cwd : pkg },
+ function (er, code, stdout, stderr) {
+ t.ifError(er, "npm version doesn't care that there's no package.json")
+ t.notOk(code, "npm version ran without barfing")
+ t.ok(stdout, "got version output")
+ t.notOk(stderr, "no error output")
+ t.doesNotThrow(function () {
+ var metadata = JSON.parse(stdout)
+ t.equal(metadata.node, process.versions.node, "node versions match")
+
+ t.end()
+ }, "able to reconstitute version object from stdout")
+ }
+ )
+})
+
+test("cleanup", function(t) {
+ process.chdir(osenv.tmpdir())
+
+ rimraf.sync(pkg)
+ t.end()
+})
+
+function setup() {
+ mkdirp.sync(pkg)
+ process.chdir(pkg)
+}