docpublish: doc-publish
doc-publish: doc
- rsync -vazu --stats --no-implied-dirs --delete html/doc/ npmjs.org:/var/www/npmjs.org/public/doc
- rsync -vazu --stats --no-implied-dirs --delete html/api/ npmjs.org:/var/www/npmjs.org/public/api
- rsync -vazu --stats --no-implied-dirs --delete html/webfonts/ npmjs.org:/var/www/npmjs.org/public/webfonts
- scp html/style.css npmjs.org:/var/www/npmjs.org/public/
+ rsync -vazu --stats --no-implied-dirs --delete \
+ html/doc/ \
+ node@npmjs.org:/home/node/npm-www/doc
+ rsync -vazu --stats --no-implied-dirs --delete \
+ html/api/ \
+ node@npmjs.org:/home/node/npm-www/api
+ rsync -vazu --stats --no-implied-dirs --delete \
+ html/webfonts/ \
+ node@npmjs.org:/home/node/npm-www/static/webfonts
+ rsync -vazu --stats --no-implied-dirs --delete \
+ html/style.css \
+ node@npmjs.org:/home/node/npm-www/static/
zip-publish: release
- scp release/* npmjs.org:/var/www/npmjs.org/public/dist/
+ scp release/* izs.me:/var/www/izs.me/static/public/npm/
release:
@bash scripts/release.sh
Especially, installing other peoples code from the registry is done via
`npm install`
* adduser:
- Create an account or log in. Creditials are stored in the
+ Create an account or log in. Credentials are stored in the
user config file.
* publish:
Use the `npm publish` command to upload your code to the registry.
<html>
<title>bin</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>This function should not be used programmatically. Instead, just refer
to the <code>npm.bin</code> member.</p>
</div>
-<p id="footer">bin — npm@1.1.45</p>
+<p id="footer">bin — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>bugs</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p>
</div>
-<p id="footer">bugs — npm@1.1.45</p>
+<p id="footer">bugs — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>commands</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/index.html">index(1)</a></li></ul>
</div>
-<p id="footer">commands — npm@1.1.45</p>
+<p id="footer">commands — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>config</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
</div>
-<p id="footer">config — npm@1.1.45</p>
+<p id="footer">config — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>deprecate</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../api/unpublish.html">unpublish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
-<p id="footer">deprecate — npm@1.1.45</p>
+<p id="footer">deprecate — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>docs</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p>
</div>
-<p id="footer">docs — npm@1.1.45</p>
+<p id="footer">docs — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>edit</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>Since this command opens an editor in a new process, be careful about where
and how this is used.</p>
</div>
-<p id="footer">edit — npm@1.1.45</p>
+<p id="footer">edit — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>explore</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p>
</div>
-<p id="footer">explore — npm@1.1.45</p>
+<p id="footer">explore — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>help-search</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>The silent parameter is not neccessary not used, but it may in the future.</p>
</div>
-<p id="footer">help-search — npm@1.1.45</p>
+<p id="footer">help-search — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>init</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p><a href="../doc/json.html">json(1)</a></p>
</div>
-<p id="footer">init — npm@1.1.45</p>
+<p id="footer">init — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>install</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>Finally, 'callback' is a function that will be called when all packages have been
installed or when an error has been encountered.</p>
</div>
-<p id="footer">install — npm@1.1.45</p>
+<p id="footer">install — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>link</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>Now, any changes to the redis package will be reflected in
the package in the current working directory</p>
</div>
-<p id="footer">link — npm@1.1.45</p>
+<p id="footer">link — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>load</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>For a list of all the available command-line configs, see <code>npm help config</code></p>
</div>
-<p id="footer">load — npm@1.1.45</p>
+<p id="footer">load — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>ls</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
This means that if a submodule a same dependency as a parent module, then the
dependency will only be output once.</p>
</div>
-<p id="footer">ls — npm@1.1.45</p>
+<p id="footer">ls — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>npm</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<h2 id="VERSION">VERSION</h2>
-<p>1.1.45</p>
+<p>1.1.46</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre>
</div>
-<p id="footer">npm — npm@1.1.45</p>
+<p id="footer">npm — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>outdated</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>If the 'packages' parameter is left out, npm will check all packages.</p>
</div>
-<p id="footer">outdated — npm@1.1.45</p>
+<p id="footer">outdated — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>owner</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
-<p id="footer">owner — npm@1.1.45</p>
+<p id="footer">owner — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>pack</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>If no arguments are supplied, then npm packs the current package folder.</p>
</div>
-<p id="footer">pack — npm@1.1.45</p>
+<p id="footer">pack — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>prefix</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>This function is not useful programmatically</p>
</div>
-<p id="footer">prefix — npm@1.1.45</p>
+<p id="footer">prefix — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>prune</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>Extraneous packages are packages that are not listed on the parent
package's dependencies list.</p>
</div>
-<p id="footer">prune — npm@1.1.45</p>
+<p id="footer">prune — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>publish</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../api/owner.html">owner(3)</a></li></ul>
</div>
-<p id="footer">publish — npm@1.1.45</p>
+<p id="footer">publish — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>rebuild</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>See <code>npm help build</code></p>
</div>
-<p id="footer">rebuild — npm@1.1.45</p>
+<p id="footer">rebuild — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>restart</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
</div>
-<p id="footer">restart — npm@1.1.45</p>
+<p id="footer">restart — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>root</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>This function is not useful programmatically.</p>
</div>
-<p id="footer">root — npm@1.1.45</p>
+<p id="footer">root — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>run-script</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../api/test.html">test(3)</a></li><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/restart.html">restart(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
</div>
-<p id="footer">run-script — npm@1.1.45</p>
+<p id="footer">run-script — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>search</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
and doesn't try to read your mind (it doesn't do any verb tense matching or the
like).</p>
</div>
-<p id="footer">search — npm@1.1.45</p>
+<p id="footer">search — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>shrinkwrap</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>Finally, 'callback' is a function that will be called when the shrinkwrap has
been saved.</p>
</div>
-<p id="footer">shrinkwrap — npm@1.1.45</p>
+<p id="footer">shrinkwrap — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>start</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>npm can run tests on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p>
</div>
-<p id="footer">start — npm@1.1.45</p>
+<p id="footer">start — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>stop</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>npm can run stop on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p>
</div>
-<p id="footer">stop — npm@1.1.45</p>
+<p id="footer">stop — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>submodule</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li>npm help json</li><li>git help submodule</li></ul>
</div>
-<p id="footer">submodule — npm@1.1.45</p>
+<p id="footer">submodule — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>tag</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
used. For more information about how to set this config, check
<code>man 3 npm-config</code> for programmatic usage or <code>man npm-config</code> for cli usage.</p>
</div>
-<p id="footer">tag — npm@1.1.45</p>
+<p id="footer">tag — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>test</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>npm can run tests on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p>
</div>
-<p id="footer">test — npm@1.1.45</p>
+<p id="footer">test — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>uninstall</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>Finally, 'callback' is a function that will be called when all packages have been
uninstalled or when an error has been encountered.</p>
</div>
-<p id="footer">uninstall — npm@1.1.45</p>
+<p id="footer">uninstall — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>unpublish</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>If no version is specified, or if all versions are removed then
the root package entry is removed from the registry entirely.</p>
</div>
-<p id="footer">unpublish — npm@1.1.45</p>
+<p id="footer">unpublish — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>update</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.</p>
</div>
-<p id="footer">update — npm@1.1.45</p>
+<p id="footer">update — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>version</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
parameter. The difference, however, is this function will fail if it does
not have exactly one element. The only element should be a version number.</p>
</div>
-<p id="footer">version — npm@1.1.45</p>
+<p id="footer">version — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>view</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>corresponding to the list of fields selected.</p>
</div>
-<p id="footer">view — npm@1.1.45</p>
+<p id="footer">view — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>whoami</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p>This function is not useful programmatically</p>
</div>
-<p id="footer">whoami — npm@1.1.45</p>
+<p id="footer">whoami — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>README</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
</div>
-<p id="footer"><a href="../doc/README.html">README</a> — npm@1.1.45</p>
+<p id="footer"><a href="../doc/README.html">README</a> — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>adduser</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li></ul>
</div>
-<p id="footer">adduser — npm@1.1.45</p>
+<p id="footer">adduser — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>bin</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">bin — npm@1.1.45</p>
+<p id="footer">bin — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>bugs</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/docs.html">docs(1)</a></li><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
</div>
-<p id="footer">bugs — npm@1.1.45</p>
+<p id="footer">bugs — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>build</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
</div>
-<p id="footer">build — npm@1.1.45</p>
+<p id="footer">build — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>bundle</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/install.html">install(1)</a></li></ul>
</div>
-<p id="footer">bundle — npm@1.1.45</p>
+<p id="footer">bundle — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>cache</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li></ul>
</div>
-<p id="footer">cache — npm@1.1.45</p>
+<p id="footer">cache — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>changelog</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul>
</div>
-<p id="footer">changelog — npm@1.1.45</p>
+<p id="footer">changelog — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>coding-style</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
</div>
-<p id="footer">coding-style — npm@1.1.45</p>
+<p id="footer">coding-style — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>completion</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
</div>
-<p id="footer">completion — npm@1.1.45</p>
+<p id="footer">completion — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>config</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
</div>
-<p id="footer">config — npm@1.1.45</p>
+<p id="footer">config — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>deprecate</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
-<p id="footer">deprecate — npm@1.1.45</p>
+<p id="footer">deprecate — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>developers</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
-<p id="footer">developers — npm@1.1.45</p>
+<p id="footer">developers — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>disputes</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
</div>
-<p id="footer">disputes — npm@1.1.45</p>
+<p id="footer">disputes — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>docs</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
</div>
-<p id="footer">docs — npm@1.1.45</p>
+<p id="footer">docs — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>edit</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/explore.html">explore(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">edit — npm@1.1.45</p>
+<p id="footer">edit — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>explore</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/submodule.html">submodule(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/edit.html">edit(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
</div>
-<p id="footer">explore — npm@1.1.45</p>
+<p id="footer">explore — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>faq</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul>
</div>
-<p id="footer">faq — npm@1.1.45</p>
+<p id="footer">faq — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>folders</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li></ul>
</div>
-<p id="footer">folders — npm@1.1.45</p>
+<p id="footer">folders — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>help-search</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li></ul>
</div>
-<p id="footer">help-search — npm@1.1.45</p>
+<p id="footer">help-search — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>help</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/help-search.html">help-search(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
</div>
-<p id="footer">help — npm@1.1.45</p>
+<p id="footer">help — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>index</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<p> Display npm username</p>
</div>
-<p id="footer">index — npm@1.1.45</p>
+<p id="footer">index — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>init</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="https://github.com/isaacs/init-package-json">https://github.com/isaacs/init-package-json</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/version.html">version(1)</a></li></ul>
</div>
-<p id="footer">init — npm@1.1.45</p>
+<p id="footer">init — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>install</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/shrinkwrap.html">shrinkwrap(1)</a></li></ul>
</div>
-<p id="footer">install — npm@1.1.45</p>
+<p id="footer">install — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>json</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/semver.html">semver(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/version.html">version(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li></ul>
</div>
-<p id="footer">json — npm@1.1.45</p>
+<p id="footer">json — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>link</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">link — npm@1.1.45</p>
+<p id="footer">link — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>list</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
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@1.1.45 /path/to/npm
+<pre><code>npm@1.1.46 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5</code></pre>
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/update.html">update(1)</a></li></ul>
</div>
-<p id="footer">list — npm@1.1.45</p>
+<p id="footer">list — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>npm</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<h2 id="VERSION">VERSION</h2>
-<p>1.1.45</p>
+<p>1.1.46</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
It's a good idea to install things if you don't need the symbolic link.
Especially, installing other peoples code from the registry is done via
<code>npm install</code></li><li>adduser:
-Create an account or log in. Creditials are stored in the
+Create an account or log in. Credentials are stored in the
user config file.</li><li>publish:
Use the <code>npm publish</code> command to upload your code to the registry.</li></ul>
<ul><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/index.html">index(1)</a></li><li><a href="../api/npm.html">npm(3)</a></li></ul>
</div>
-<p id="footer">npm — npm@1.1.45</p>
+<p id="footer">npm — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>outdated</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul>
</div>
-<p id="footer">outdated — npm@1.1.45</p>
+<p id="footer">outdated — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>owner</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
</div>
-<p id="footer">owner — npm@1.1.45</p>
+<p id="footer">owner — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>pack</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">pack — npm@1.1.45</p>
+<p id="footer">pack — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>prefix</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">prefix — npm@1.1.45</p>
+<p id="footer">prefix — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>prune</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
</div>
-<p id="footer">prune — npm@1.1.45</p>
+<p id="footer">prune — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>publish</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li></ul>
</div>
-<p id="footer">publish — npm@1.1.45</p>
+<p id="footer">publish — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>rebuild</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
</div>
-<p id="footer">rebuild — npm@1.1.45</p>
+<p id="footer">rebuild — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>registry</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
</div>
-<p id="footer">registry — npm@1.1.45</p>
+<p id="footer">registry — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>removing-npm</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/README.html">README</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li></ul>
</div>
-<p id="footer">removing-npm — npm@1.1.45</p>
+<p id="footer">removing-npm — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>restart</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
</div>
-<p id="footer">restart — npm@1.1.45</p>
+<p id="footer">restart — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>root</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">root — npm@1.1.45</p>
+<p id="footer">root — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>run-script</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
</div>
-<p id="footer">run-script — npm@1.1.45</p>
+<p id="footer">run-script — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>scripts</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
</div>
-<p id="footer">scripts — npm@1.1.45</p>
+<p id="footer">scripts — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>search</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/view.html">view(1)</a></li></ul>
</div>
-<p id="footer">search — npm@1.1.45</p>
+<p id="footer">search — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>semver</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/json.html">json(1)</a></li></ul>
</div>
-<p id="footer">semver — npm@1.1.45</p>
+<p id="footer">semver — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>shrinkwrap</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
</div>
-<p id="footer">shrinkwrap — npm@1.1.45</p>
+<p id="footer">shrinkwrap — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>star</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
</div>
-<p id="footer">star — npm@1.1.45</p>
+<p id="footer">star — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>start</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
</div>
-<p id="footer">start — npm@1.1.45</p>
+<p id="footer">start — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>stop</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li></ul>
</div>
-<p id="footer">stop — npm@1.1.45</p>
+<p id="footer">stop — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>submodule</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/json.html">json(1)</a></li><li>git help submodule</li></ul>
</div>
-<p id="footer">submodule — npm@1.1.45</p>
+<p id="footer">submodule — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>tag</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">tag — npm@1.1.45</p>
+<p id="footer">tag — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>test</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
</div>
-<p id="footer">test — npm@1.1.45</p>
+<p id="footer">test — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>uninstall</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">uninstall — npm@1.1.45</p>
+<p id="footer">uninstall — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>unpublish</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
</div>
-<p id="footer">unpublish — npm@1.1.45</p>
+<p id="footer">unpublish — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>update</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
</div>
-<p id="footer">update — npm@1.1.45</p>
+<p id="footer">update — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>version</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/semver.html">semver(1)</a></li></ul>
</div>
-<p id="footer">version — npm@1.1.45</p>
+<p id="footer">version — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>view</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/search.html">search(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/docs.html">docs(1)</a></li></ul>
</div>
-<p id="footer">view — npm@1.1.45</p>
+<p id="footer">view — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>whoami</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
</div>
-<p id="footer">whoami — npm@1.1.45</p>
+<p id="footer">whoami — npm@1.1.46</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
<html>
<title>@NAME@</title>
<meta http-equiv="content-type" value="text/html;utf-8">
- <link rel="stylesheet" type="text/css" href="../style.css">
+ <link rel="stylesheet" type="text/css" href="../static/style.css">
<body>
<div id="wrapper">
if (cliKeys.length) {
msg += "; cli configs" + eol
cliKeys.forEach(function (k) {
- if (cli[k] && typeof cli[k] === 'object') return
+ if (cli[k] && typeof cli[k] === "object") return
if (k === "argv") return
- if (typeof cli[k] === 'object') return
msg += k + " = " + JSON.stringify(cli[k]) + eol
})
msg += eol
if (envKeys.length) {
msg += "; environment configs" + eol
envKeys.forEach(function (k) {
- if (env[k] && typeof env[k] === 'object') return
if (env[k] !== ini.get(k)) {
if (!long) return
msg += "; " + k + " = " + JSON.stringify(env[k])
if (uconfKeys.length) {
msg += "; userconfig " + ini.get("userconfig") + eol
uconfKeys.forEach(function (k) {
- if (uconf[k] && typeof uconf[k] === 'object') return
var val = (k.charAt(0) === "_")
? "---sekretz---"
: JSON.stringify(uconf[k])
if (gconfKeys.length) {
msg += "; globalconfig " + ini.get("globalconfig") + eol
gconfKeys.forEach(function (k) {
- if (gconf[k] && typeof gconf[k] === 'object') return
var val = (k.charAt(0) === "_")
? "---sekretz---"
: JSON.stringify(gconf[k])
var path = require("path")
msg += "; builtin config " + path.resolve(__dirname, "../npmrc") + eol
bconfKeys.forEach(function (k) {
- if (bconf[k] && typeof bconf[k] === 'object') return
var val = (k.charAt(0) === "_")
? "---sekretz---"
: JSON.stringify(bconf[k])
+ "; 'npm config ls -l' to show all defaults." + eol
console.log(msg)
- cb()
+ return cb()
}
var defaults = ini.defaultConfig
, defKeys = Object.keys(defaults)
msg += "; default values" + eol
defKeys.forEach(function (k) {
- if (defaults[k] && typeof defaults[k] === 'object') return
+ if (defaults[k] && typeof defaults[k] === "object") return
var val = JSON.stringify(defaults[k])
if (defaults[k] !== ini.get(k)) {
if (!long) return
msg += eol
console.log(msg)
- cb()
+ return cb()
}
function unknown (action, cb) {
// at this point the configs are all set.
// go ahead and spin up the registry client.
- var token
- try { token = JSON.parse(npm.config.get("_token")) }
- catch (er) { token = null }
+ var token = npm.config.get("_token")
+ if (typeof token === "string") {
+ try {
+ token = JSON.parse(token)
+ npm.config.set("_token", token, "user")
+ ini.save("user", function () {})
+ } catch (e) { token = null }
+ }
npm.registry = new RegClient(
{ registry: npm.config.get("registry")
// save the token cookie in the config file
if (npm.registry.couchLogin) {
npm.registry.couchLogin.tokenSet = function (tok) {
- ini.set("_token", JSON.stringify(tok), "user")
+ ini.set("_token", tok, "user")
// ignore save error. best effort.
ini.save("user", function () {})
}
npm.config =
{ get : function (key) { return ini.get(key) }
- , set : function (key, val) { return ini.set(key, val, "cli") }
- , del : function (key, val) { return ini.del(key, val, "cli") }
+ , set : function (key, val, which) { return ini.set(key, val, which) }
+ , del : function (key, val, which) { return ini.del(key, val, which) }
}
Object.defineProperty(npm, "prefix",
}
}
}
+ return (!f || typeof f !== "object") ? ini.safe(f) : f
return ini.safe(f)
}
}
function parseAuth (config) {
- //console.error("parsing config %j", config)
if (!config._auth) return config
var b = new Buffer(config._auth, "base64")
, unpw = b.toString().split(":")
if (configList.length === 1) {
return new Error("trying to set before loading")
}
- return configList.list[TRANS[which]][key] = value
+ configList.list[TRANS[which]][key] = value
+ return value
}
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM" "1" "July 2012" "" ""
+.TH "NPM" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm\fR \-\- node package manager
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-ADDUSER" "1" "July 2012" "" ""
+.TH "NPM\-ADDUSER" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-adduser\fR \-\- Add a registry user account
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BIN" "1" "July 2012" "" ""
+.TH "NPM\-BIN" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-bin\fR \-\- Display npm bin folder
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUGS" "1" "July 2012" "" ""
+.TH "NPM\-BUGS" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-bugs\fR \-\- Bugs for a package in a web browser maybe
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUILD" "1" "July 2012" "" ""
+.TH "NPM\-BUILD" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-build\fR \-\- Build a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUNDLE" "1" "July 2012" "" ""
+.TH "NPM\-BUNDLE" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-bundle\fR \-\- REMOVED
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CACHE" "1" "July 2012" "" ""
+.TH "NPM\-CACHE" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-cache\fR \-\- Manipulates packages cache
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CHANGELOG" "1" "July 2012" "" ""
+.TH "NPM\-CHANGELOG" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-changelog\fR \-\- Changes
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CODING\-STYLE" "1" "July 2012" "" ""
+.TH "NPM\-CODING\-STYLE" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-coding-style\fR \-\- npm\'s "funny" coding style
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-COMPLETION" "1" "July 2012" "" ""
+.TH "NPM\-COMPLETION" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-completion\fR \-\- Tab Completion for npm
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CONFIG" "1" "July 2012" "" ""
+.TH "NPM\-CONFIG" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-config\fR \-\- Manage the npm configuration file
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DEPRECATE" "1" "July 2012" "" ""
+.TH "NPM\-DEPRECATE" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-deprecate\fR \-\- Deprecate a version of a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DEVELOPERS" "1" "July 2012" "" ""
+.TH "NPM\-DEVELOPERS" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-developers\fR \-\- Developer Guide
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DISPUTES" "1" "July 2012" "" ""
+.TH "NPM\-DISPUTES" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-disputes\fR \-\- Handling Module Name Disputes
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DOCS" "1" "July 2012" "" ""
+.TH "NPM\-DOCS" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-docs\fR \-\- Docs for a package in a web browser maybe
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-EDIT" "1" "July 2012" "" ""
+.TH "NPM\-EDIT" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-edit\fR \-\- Edit an installed package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-EXPLORE" "1" "July 2012" "" ""
+.TH "NPM\-EXPLORE" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-explore\fR \-\- Browse an installed package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-FAQ" "1" "July 2012" "" ""
+.TH "NPM\-FAQ" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-faq\fR \-\- Frequently Asked Questions
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-FOLDERS" "1" "July 2012" "" ""
+.TH "NPM\-FOLDERS" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-folders\fR \-\- Folder Structures Used by npm
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-HELP\-SEARCH" "1" "July 2012" "" ""
+.TH "NPM\-HELP\-SEARCH" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-help-search\fR \-\- Search npm help documentation
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-HELP" "1" "July 2012" "" ""
+.TH "NPM\-HELP" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-help\fR \-\- Get help on npm
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INDEX" "1" "July 2012" "" ""
+.TH "NPM\-INDEX" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-index\fR \-\- Index of all npm documentation
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INIT" "1" "July 2012" "" ""
+.TH "NPM\-INIT" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-init\fR \-\- Interactively create a package\.json file
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INSTALL" "1" "July 2012" "" ""
+.TH "NPM\-INSTALL" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-install\fR \-\- Install a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-JSON" "1" "July 2012" "" ""
+.TH "NPM\-JSON" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-json\fR \-\- Specifics of npm\'s package\.json handling
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LINK" "1" "July 2012" "" ""
+.TH "NPM\-LINK" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-link\fR \-\- Symlink a package folder
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LS" "1" "July 2012" "" ""
+.TH "NPM\-LS" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-ls\fR \-\- List installed packages
.IP "" 4
.
.nf
-npm@1.1.45 /path/to/npm
+npm@1.1.46 /path/to/npm
└─┬ init\-package\-json@0\.0\.4
└── promzard@0\.1\.5
.
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM" "1" "July 2012" "" ""
+.TH "NPM" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm\fR \-\- node package manager
.fi
.
.SH "VERSION"
-1.1.45
+1.1.46
.
.SH "DESCRIPTION"
npm is the package manager for the Node JavaScript platform\. It puts
.
.IP "\(bu" 4
adduser:
-Create an account or log in\. Creditials are stored in the
+Create an account or log in\. Credentials are stored in the
user config file\.
.
.IP "\(bu" 4
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-OUTDATED" "1" "July 2012" "" ""
+.TH "NPM\-OUTDATED" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-outdated\fR \-\- Check for outdated packages
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-OWNER" "1" "July 2012" "" ""
+.TH "NPM\-OWNER" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-owner\fR \-\- Manage package owners
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PACK" "1" "July 2012" "" ""
+.TH "NPM\-PACK" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-pack\fR \-\- Create a tarball from a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PREFIX" "1" "July 2012" "" ""
+.TH "NPM\-PREFIX" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-prefix\fR \-\- Display prefix
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PRUNE" "1" "July 2012" "" ""
+.TH "NPM\-PRUNE" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-prune\fR \-\- Remove extraneous packages
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PUBLISH" "1" "July 2012" "" ""
+.TH "NPM\-PUBLISH" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-publish\fR \-\- Publish a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REBUILD" "1" "July 2012" "" ""
+.TH "NPM\-REBUILD" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-rebuild\fR \-\- Rebuild a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REGISTRY" "1" "July 2012" "" ""
+.TH "NPM\-REGISTRY" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-registry\fR \-\- The JavaScript Package Registry
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REMOVAL" "1" "July 2012" "" ""
+.TH "NPM\-REMOVAL" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-removal\fR \-\- Cleaning the Slate
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RESTART" "1" "July 2012" "" ""
+.TH "NPM\-RESTART" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-restart\fR \-\- Start a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-ROOT" "1" "July 2012" "" ""
+.TH "NPM\-ROOT" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-root\fR \-\- Display npm root
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RUN\-SCRIPT" "1" "July 2012" "" ""
+.TH "NPM\-RUN\-SCRIPT" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-run-script\fR \-\- Run arbitrary package scripts
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SCRIPTS" "1" "July 2012" "" ""
+.TH "NPM\-SCRIPTS" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-scripts\fR \-\- How npm handles the "scripts" field
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SEARCH" "1" "July 2012" "" ""
+.TH "NPM\-SEARCH" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-search\fR \-\- Search for packages
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SEMVER" "1" "July 2012" "" ""
+.TH "NPM\-SEMVER" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-semver\fR \-\- The semantic versioner for npm
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SHRINKWRAP" "1" "July 2012" "" ""
+.TH "NPM\-SHRINKWRAP" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-shrinkwrap\fR \-\- Lock down dependency versions
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-STAR" "1" "July 2012" "" ""
+.TH "NPM\-STAR" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-star\fR \-\- Mark your favorite packages
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-START" "1" "July 2012" "" ""
+.TH "NPM\-START" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-start\fR \-\- Start a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-STOP" "1" "July 2012" "" ""
+.TH "NPM\-STOP" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-stop\fR \-\- Stop a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SUBMODULE" "1" "July 2012" "" ""
+.TH "NPM\-SUBMODULE" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-submodule\fR \-\- Add a package as a git submodule
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-TAG" "1" "July 2012" "" ""
+.TH "NPM\-TAG" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-tag\fR \-\- Tag a published version
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-TEST" "1" "July 2012" "" ""
+.TH "NPM\-TEST" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-test\fR \-\- Test a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RM" "1" "July 2012" "" ""
+.TH "NPM\-RM" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-rm\fR \-\- Remove a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-UNPUBLISH" "1" "July 2012" "" ""
+.TH "NPM\-UNPUBLISH" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-unpublish\fR \-\- Remove a package from the registry
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-UPDATE" "1" "July 2012" "" ""
+.TH "NPM\-UPDATE" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-update\fR \-\- Update a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-VERSION" "1" "July 2012" "" ""
+.TH "NPM\-VERSION" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-version\fR \-\- Bump a package version
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-VIEW" "1" "July 2012" "" ""
+.TH "NPM\-VIEW" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-view\fR \-\- View registry info
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-WHOAMI" "1" "July 2012" "" ""
+.TH "NPM\-WHOAMI" "1" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-whoami\fR \-\- Display npm username
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BIN" "3" "July 2012" "" ""
+.TH "NPM\-BIN" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-bin\fR \-\- Display npm bin folder
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUGS" "3" "July 2012" "" ""
+.TH "NPM\-BUGS" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-bugs\fR \-\- Bugs for a package in a web browser maybe
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-COMMANDS" "3" "July 2012" "" ""
+.TH "NPM\-COMMANDS" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-commands\fR \-\- npm commands
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CONFIG" "3" "July 2012" "" ""
+.TH "NPM\-CONFIG" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-config\fR \-\- Manage the npm configuration files
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DEPRECATE" "3" "July 2012" "" ""
+.TH "NPM\-DEPRECATE" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-deprecate\fR \-\- Deprecate a version of a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DOCS" "3" "July 2012" "" ""
+.TH "NPM\-DOCS" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-docs\fR \-\- Docs for a package in a web browser maybe
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-EDIT" "3" "July 2012" "" ""
+.TH "NPM\-EDIT" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-edit\fR \-\- Edit an installed package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-EXPLORE" "3" "July 2012" "" ""
+.TH "NPM\-EXPLORE" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-explore\fR \-\- Browse an installed package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-HELP\-SEARCH" "3" "July 2012" "" ""
+.TH "NPM\-HELP\-SEARCH" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-help-search\fR \-\- Search the help pages
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "INIT" "3" "July 2012" "" ""
+.TH "INIT" "3" "August 2012" "" ""
.
.SH "NAME"
\fBinit\fR \-\- Interactively create a package\.json file
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INSTALL" "3" "July 2012" "" ""
+.TH "NPM\-INSTALL" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-install\fR \-\- install a package programmatically
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LINK" "3" "July 2012" "" ""
+.TH "NPM\-LINK" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-link\fR \-\- Symlink a package folder
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LOAD" "3" "July 2012" "" ""
+.TH "NPM\-LOAD" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-load\fR \-\- Load config settings
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LS" "3" "July 2012" "" ""
+.TH "NPM\-LS" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-ls\fR \-\- List installed packages
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM" "3" "July 2012" "" ""
+.TH "NPM" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm\fR \-\- node package manager
.fi
.
.SH "VERSION"
-1.1.45
+1.1.46
.
.SH "DESCRIPTION"
This is the API documentation for npm\.
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-OUTDATED" "3" "July 2012" "" ""
+.TH "NPM\-OUTDATED" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-outdated\fR \-\- Check for outdated packages
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-OWNER" "3" "July 2012" "" ""
+.TH "NPM\-OWNER" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-owner\fR \-\- Manage package owners
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PACK" "3" "July 2012" "" ""
+.TH "NPM\-PACK" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-pack\fR \-\- Create a tarball from a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PREFIX" "3" "July 2012" "" ""
+.TH "NPM\-PREFIX" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-prefix\fR \-\- Display prefix
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PRUNE" "3" "July 2012" "" ""
+.TH "NPM\-PRUNE" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-prune\fR \-\- Remove extraneous packages
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PUBLISH" "3" "July 2012" "" ""
+.TH "NPM\-PUBLISH" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-publish\fR \-\- Publish a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REBUILD" "3" "July 2012" "" ""
+.TH "NPM\-REBUILD" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-rebuild\fR \-\- Rebuild a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RESTART" "3" "July 2012" "" ""
+.TH "NPM\-RESTART" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-restart\fR \-\- Start a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-ROOT" "3" "July 2012" "" ""
+.TH "NPM\-ROOT" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-root\fR \-\- Display npm root
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RUN\-SCRIPT" "3" "July 2012" "" ""
+.TH "NPM\-RUN\-SCRIPT" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-run-script\fR \-\- Run arbitrary package scripts
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SEARCH" "3" "July 2012" "" ""
+.TH "NPM\-SEARCH" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-search\fR \-\- Search for packages
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SHRINKWRAP" "3" "July 2012" "" ""
+.TH "NPM\-SHRINKWRAP" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-shrinkwrap\fR \-\- programmatically generate package shrinkwrap file
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-START" "3" "July 2012" "" ""
+.TH "NPM\-START" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-start\fR \-\- Start a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-STOP" "3" "July 2012" "" ""
+.TH "NPM\-STOP" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-stop\fR \-\- Stop a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SUBMODULE" "3" "July 2012" "" ""
+.TH "NPM\-SUBMODULE" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-submodule\fR \-\- Add a package as a git submodule
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-TAG" "3" "July 2012" "" ""
+.TH "NPM\-TAG" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-tag\fR \-\- Tag a published version
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-TEST" "3" "July 2012" "" ""
+.TH "NPM\-TEST" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-test\fR \-\- Test a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-UNINSTALL" "3" "July 2012" "" ""
+.TH "NPM\-UNINSTALL" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-uninstall\fR \-\- uninstall a package programmatically
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-UNPUBLISH" "3" "July 2012" "" ""
+.TH "NPM\-UNPUBLISH" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-unpublish\fR \-\- Remove a package from the registry
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-UPDATE" "3" "July 2012" "" ""
+.TH "NPM\-UPDATE" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-update\fR \-\- Update a package
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-VERSION" "3" "July 2012" "" ""
+.TH "NPM\-VERSION" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-version\fR \-\- Bump a package version
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-VIEW" "3" "July 2012" "" ""
+.TH "NPM\-VIEW" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-view\fR \-\- View registry info
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-WHOAMI" "3" "July 2012" "" ""
+.TH "NPM\-WHOAMI" "3" "August 2012" "" ""
.
.SH "NAME"
\fBnpm-whoami\fR \-\- Display npm username
-Copyright (c) Isaac Z. Schlueter
+Copyright (c) Isaac Z. Schlueter ("Author")
All rights reserved.
The BSD License
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
+
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
+
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
-THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
, path = require("path")
, isDir = {}
, assert = require("assert").ok
-, EOF = {}
function glob (pattern, options, cb) {
if (typeof options === "function") cb = options, options = {}
options = options || {}
+ this.EOF = {}
+ this._emitQueue = []
+
this.maxDepth = options.maxDepth || 1000
this.maxLength = options.maxLength || Infinity
this.statCache = options.statCache || {}
if (this.debug) console.error("emitting end", all)
- EOF = this.found = all
- this.emitMatch(EOF)
+ this.EOF = this.found = all
+ this.emitMatch(this.EOF)
}
function alphasorti (a, b) {
this.emit("error", new Error("Can't pause/resume sync glob"))
this.paused = false
this.emit("resume")
+ this._processEmitQueue()
+ //process.nextTick(this.emit.bind(this, "resume"))
}
-
Glob.prototype.emitMatch = function (m) {
- if (!this.paused) {
- this.emit(m === EOF ? "end" : "match", m)
- return
- }
-
- if (!this._emitQueue) {
- this._emitQueue = []
- this.once("resume", function () {
- var q = this._emitQueue
- this._emitQueue = null
- q.forEach(function (m) {
- this.emitMatch(m)
- }, this)
- })
- }
-
this._emitQueue.push(m)
-
- //this.once("resume", this.emitMatch.bind(this, m))
+ this._processEmitQueue()
}
-
+Glob.prototype._processEmitQueue = function (m) {
+ while (!this._processingEmitQueue &&
+ !this.paused) {
+ this._processingEmitQueue = true
+ var m = this._emitQueue.shift()
+ if (!m) {
+ this._processingEmitQueue = false
+ break
+ }
+ if (this.debug) {
+ console.error('emit!', m === this.EOF ? "end" : "match")
+ }
+ this.emit(m === this.EOF ? "end" : "match", m)
+ this._processingEmitQueue = false
+ }
+}
Glob.prototype._process = function (pattern, depth, index, cb_) {
assert(this instanceof Glob)
},
"name": "glob",
"description": "a little globber",
- "version": "3.1.10",
+ "version": "3.1.11",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-glob.git"
},
"license": "BSD",
"readme": "# Glob\n\nThis is a glob implementation in JavaScript. It uses the `minimatch`\nlibrary to do its matching.\n\n## Attention: node-glob users!\n\nThe API has changed dramatically between 2.x and 3.x. This library is\nnow 100% JavaScript, and the integer flags have been replaced with an\noptions object.\n\nAlso, there's an event emitter class, proper tests, and all the other\nthings you've come to expect from node modules.\n\nAnd best of all, no compilation!\n\n## Usage\n\n```javascript\nvar glob = require(\"glob\")\n\n// options is optional\nglob(\"**/*.js\", options, function (er, files) {\n // files is an array of filenames.\n // If the `nonull` option is set, and nothing\n // was found, then files is [\"**/*.js\"]\n // er is an error object or null.\n})\n```\n\n## Features\n\nPlease see the [minimatch\ndocumentation](https://github.com/isaacs/minimatch) for more details.\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n* [minimatch documentation](https://github.com/isaacs/minimatch)\n\n## glob(pattern, [options], cb)\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* `cb` {Function}\n * `err` {Error | null}\n * `matches` {Array<String>} filenames found matching the pattern\n\nPerform an asynchronous glob search.\n\n## glob.sync(pattern, [options]\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* return: {Array<String>} filenames found matching the pattern\n\nPerform a synchronous glob search.\n\n## Class: glob.Glob\n\nCreate a Glob object by instanting the `glob.Glob` class.\n\n```javascript\nvar Glob = require(\"glob\").Glob\nvar mg = new Glob(pattern, options, cb)\n```\n\nIt's an EventEmitter, and starts walking the filesystem to find matches\nimmediately.\n\n### new glob.Glob(pattern, [options], [cb])\n\n* `pattern` {String} pattern to search for\n* `options` {Object}\n* `cb` {Function} Called when an error occurs, or matches are found\n * `err` {Error | null}\n * `matches` {Array<String>} filenames found matching the pattern\n\nNote that if the `sync` flag is set in the options, then matches will\nbe immediately available on the `g.found` member.\n\n### Properties\n\n* `minimatch` The minimatch object that the glob uses.\n* `options` The options object passed in.\n* `error` The error encountered. When an error is encountered, the\n glob object is in an undefined state, and should be discarded.\n* `aborted` Boolean which is set to true when calling `abort()`. There\n is no way at this time to continue a glob search after aborting, but\n you can re-use the statCache to avoid having to duplicate syscalls.\n\n### Events\n\n* `end` When the matching is finished, this is emitted with all the\n matches found. If the `nonull` option is set, and no match was found,\n then the `matches` list contains the original pattern. The matches\n are sorted, unless the `nosort` flag is set.\n* `match` Every time a match is found, this is emitted with the matched.\n* `error` Emitted when an unexpected error is encountered, or whenever\n any fs error occurs if `options.strict` is set.\n* `abort` When `abort()` is called, this event is raised.\n\n### Methods\n\n* `abort` Stop the search.\n\n### Options\n\nAll the options that can be passed to Minimatch can also be passed to\nGlob to change pattern matching behavior. Also, some have been added,\nor have glob-specific ramifications.\n\nAll options are false by default, unless otherwise noted.\n\nAll options are added to the glob object, as well.\n\n* `cwd` The current working directory in which to search. Defaults\n to `process.cwd()`.\n* `root` The place where patterns starting with `/` will be mounted\n onto. Defaults to `path.resolve(options.cwd, \"/\")` (`/` on Unix\n systems, and `C:\\` or some such on Windows.)\n* `nomount` By default, a pattern starting with a forward-slash will be\n \"mounted\" onto the root setting, so that a valid filesystem path is\n returned. Set this flag to disable that behavior.\n* `mark` Add a `/` character to directory matches. Note that this\n requires additional stat calls.\n* `nosort` Don't sort the results.\n* `stat` Set to true to stat *all* results. This reduces performance\n somewhat, and is completely unnecessary, unless `readdir` is presumed\n to be an untrustworthy indicator of file existence. It will cause\n ELOOP to be triggered one level sooner in the case of cyclical\n symbolic links.\n* `silent` When an unusual error is encountered\n when attempting to read a directory, a warning will be printed to\n stderr. Set the `silent` option to true to suppress these warnings.\n* `strict` When an unusual error is encountered\n when attempting to read a directory, the process will just continue on\n in search of other matches. Set the `strict` option to raise an error\n in these cases.\n* `statCache` A cache of results of filesystem information, to prevent\n unnecessary stat calls. While it should not normally be necessary to\n set this, you may pass the statCache from one glob() call to the\n options object of another, if you know that the filesystem will not\n change between calls. (See \"Race Conditions\" below.)\n* `sync` Perform a synchronous glob search.\n* `nounique` In some cases, brace-expanded patterns can result in the\n same file showing up multiple times in the result set. By default,\n this implementation prevents duplicates in the result set.\n Set this flag to disable that behavior.\n* `nonull` Set to never return an empty set, instead returning a set\n containing the pattern itself. This is the default in glob(3).\n* `nocase` Perform a case-insensitive match. Note that case-insensitive\n filesystems will sometimes result in glob returning results that are\n case-insensitively matched anyway, since readdir and stat will not\n raise an error.\n* `debug` Set to enable debug logging in minimatch and glob.\n* `globDebug` Set to enable debug logging in glob, but not minimatch.\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between node-glob and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not. **Note that this is different from the way that `**` is\nhandled by ruby's `Dir` class.**\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen glob returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`glob.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n## Windows\n\n**Please only use forward-slashes in glob expressions.**\n\nThough windows uses either `/` or `\\` as its path separator, only `/`\ncharacters are used by this glob implementation. You must use\nforward-slashes **only** in glob expressions. Back-slashes will always\nbe interpreted as escape characters, not path separators.\n\nResults from absolute patterns such as `/foo/*` are mounted onto the\nroot setting using `path.join`. On windows, this will by default result\nin `/foo/*` matching `C:\\foo\\bar.txt`.\n\n## Race Conditions\n\nGlob searching, by its very nature, is susceptible to race conditions,\nsince it relies on directory walking and such.\n\nAs a result, it is possible that a file that exists when glob looks for\nit may have been deleted or modified by the time it returns the result.\n\nAs part of its internal implementation, this program caches all stat\nand readdir calls that it makes, in order to cut down on system\noverhead. However, this also makes it even more susceptible to races,\nespecially if the statCache object is reused between glob calls.\n\nUsers are thus advised not to use a glob result as a\nguarantee of filesystem state in the face of rapid changes.\nFor the vast majority of operations, this is never a problem.\n",
- "_id": "glob@3.1.10",
+ "_id": "glob@3.1.11",
"_from": "glob@~3.1.9"
}
// put more patterns here.
, globs =
- [
- "test/a/*/+(c|g)/./d"
+ ["test/a/*/+(c|g)/./d"
,"test/a/**/[cg]/../[cg]"
,"test/a/{b,c,d,e,f}/**/g"
,"test/a/b/**"
cp.stderr.on("data", function (c) {
process.stderr.write(c)
})
- cp.stdout.on("close", function () {
+ cp.on("close", function () {
echoOutput = flatten(out)
if (!echoOutput) echoOutput = []
else {
var tap = require("tap")
, child_process = require("child_process")
// just some gnarly pattern with lots of matches
-, pattern = "test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**"
+, pattern = "test/a/!(symlink)/**"
, glob = require("../")
, Glob = glob.Glob
, path = require("path")
cp.stderr.on("data", function (c) {
process.stderr.write(c)
})
- cp.stdout.on("close", function () {
+ cp.on("close", function () {
bashResults = flatten(out)
if (!bashResults) return t.fail("Didn't get results from bash")
else {
, paused = false
, res = []
+ g.on("pause", function () {
+ console.error("pause")
+ })
+
+ g.on("resume", function () {
+ console.error("resume")
+ })
+
g.on("match", function (m) {
t.notOk(g.paused, "must not be paused")
globResults.push(m)
g.pause()
t.ok(g.paused, "must be paused")
- setTimeout(g.resume.bind(g), 1)
+ setTimeout(g.resume.bind(g), 10)
})
g.on("end", function (matches) {
if (fs.open === gracefulOpen) return
var queue = []
- , curOpen = 0
, constants = require("constants")
-
exports = module.exports = fs
-
+fs._curOpen = 0
fs.MIN_MAX_OPEN = 64
fs.MAX_OPEN = 1024
if (typeof mode === "function") cb = mode, mode = null
if (typeof cb !== "function") cb = noop
- if (curOpen >= fs.MAX_OPEN) {
+ if (fs._curOpen >= fs.MAX_OPEN) {
queue.push(new OpenReq(path, flags, mode, cb))
setTimeout(flush)
return
}
open(path, flags, mode, function (er, fd) {
- if (er && er.code === "EMFILE" && curOpen > fs.MIN_MAX_OPEN) {
+ if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) {
// that was too many. reduce max, get back in queue.
// this should only happen once in a great while, and only
// if the ulimit -n is set lower than 1024.
- fs.MAX_OPEN = curOpen - 1
+ fs.MAX_OPEN = fs._curOpen - 1
return fs.open(path, flags, mode, cb)
}
cb(er, fd)
function open (path, flags, mode, cb) {
cb = cb || noop
- curOpen ++
+ fs._curOpen ++
originalOpen.call(fs, path, flags, mode, function (er, fd) {
- if (er) {
- onclose()
- }
-
+ if (er) onclose()
cb(er, fd)
})
}
fs.openSync = function (path, flags, mode) {
- curOpen ++
- return originalOpenSync.call(fs, path, flags, mode)
+ var ret
+ try {
+ ret = originalOpenSync.call(fs, path, flags, mode)
+ fs._curOpen ++
+ } finally {}
+ return ret
}
function onclose () {
- curOpen --
+ fs._curOpen --
flush()
}
function flush () {
- while (curOpen < fs.MAX_OPEN) {
+ while (fs._curOpen < fs.MAX_OPEN) {
var req = queue.shift()
- if (!req) break
+ if (!req) return
open(req.path, req.flags || "r", req.mode || 0777, req.cb)
}
- if (queue.length === 0) return
}
fs.close = function (fd, cb) {
},
"name": "graceful-fs",
"description": "fs monkey-patching to avoid EMFILE and other problems",
- "version": "1.1.9",
+ "version": "1.1.10",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-graceful-fs.git"
"node": ">=0.4.0"
},
"devDependencies": {},
+ "directories": {
+ "test": "test"
+ },
+ "dependencies": {},
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "keywords": [
+ "fs",
+ "EMFILE",
+ "error",
+ "handling",
+ "monkeypatch"
+ ],
+ "license": "BSD",
"readme": "Just like node's `fs` module, but it does an incremental back-off when\nEMFILE is encountered.\n\nUseful in asynchronous situations where one needs to try to open lots\nand lots of files.\n",
- "_id": "graceful-fs@1.1.9",
+ "_id": "graceful-fs@1.1.10",
"_from": "graceful-fs@~1.1.1"
}
--- /dev/null
+var test = require('tap').test
+var fs = require('../graceful-fs.js')
+
+test('open an existing file works', function (t) {
+ var start = fs._curOpen
+ var fd = fs.openSync(__filename, 'r')
+ t.equal(fs._curOpen, start + 1)
+ fs.closeSync(fd)
+ t.equal(fs._curOpen, start)
+ fs.open(__filename, 'r', function (er, fd) {
+ if (er) throw er
+ t.equal(fs._curOpen, start + 1)
+ fs.close(fd, function (er) {
+ if (er) throw er
+ t.equal(fs._curOpen, start)
+ t.end()
+ })
+ })
+})
+
+test('open a non-existing file throws', function (t) {
+ var start = fs._curOpen
+ var er
+ try {
+ var fd = fs.openSync('this file does not exist', 'r')
+ } catch (x) {
+ er = x
+ }
+ t.ok(er, 'should throw')
+ t.notOk(fd, 'should not get an fd')
+ t.equal(er.code, 'ENOENT')
+ t.equal(fs._curOpen, start)
+
+ fs.open('neither does this file', 'r', function (er, fd) {
+ t.ok(er, 'should throw')
+ t.notOk(fd, 'should not get an fd')
+ t.equal(er.code, 'ENOENT')
+ t.equal(fs._curOpen, start)
+ t.end()
+ })
+})
Carlos Brito Lage <carlos@carloslage.net>
Marko Mikulicic <marko.mikulicic@isti.cnr.it>
Trent Mick <trentm@gmail.com>
+Kevin O'Hara <kevinohara80@gmail.com>
+Marco Rogers <marco.rogers@gmail.com>
var LRU = require("lru-cache")
, cache = LRU(10, // max length. default = Infinity
+
// calculate how "big" each item is
//
// defaults to function(){return 1}, ie, just limit
// the item count, without any knowledge as to their
// relative size.
- function (item) { return item.length })
+ function (item) { return item.length },
+
+ // maxAge in ms
+ // defaults to infinite
+ // items are not pre-emptively pruned, but they
+ // are deleted when fetched if they're too old.
+ 1000 * 60)
cache.set("key", "value")
cache.get("key") // "value"
module.exports = LRUCache
} else {
// just set the global for non-node platforms.
- ;(function () { return this })().LRUCache = LRUCache
+ this.LRUCache = LRUCache
}
function hOP (obj, key) {
function naiveLength () { return 1 }
-function LRUCache (maxLength, lengthCalculator) {
+function LRUCache (maxLength, lengthCalculator, maxAge) {
if (!(this instanceof LRUCache)) {
return new LRUCache(maxLength, lengthCalculator)
}
if (hOP(cache, key)) {
this.get(key)
cache[key].value = value
- return
+ return true
}
var hit = {key:key, value:value, lu:mru++, length:lengthCalculator(value)}
+ if (maxAge) hit.now = Date.now()
// oversized objects fall out of cache automatically.
- if (hit.length > maxLength) return
+ if (hit.length > maxLength) return false
length += hit.length
lruList[hit.lu] = cache[key] = hit
itemCount ++
if (length > maxLength) trim()
+ return true
}
this.get = function (key) {
if (!hOP(cache, key)) return
var hit = cache[key]
+ if (maxAge && Date.now() - hit.now > maxAge) {
+ this.del(key)
+ return
+ }
delete lruList[hit.lu]
if (hit.lu === lru) lruWalk()
hit.lu = mru ++
delete cache[ lruList[prune[i]].key ]
delete lruList[prune[i]]
}
+
lruWalk()
}
}
{
"name": "lru-cache",
"description": "A cache object that deletes the least-recently-used items.",
- "version": "1.1.0",
+ "version": "1.1.1",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me"
"type": "MIT",
"url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE"
},
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "_id": "lru-cache@1.1.0",
"contributors": [
{
"name": "Isaac Z. Schlueter",
{
"name": "Trent Mick",
"email": "trentm@gmail.com"
+ },
+ {
+ "name": "Kevin O'Hara",
+ "email": "kevinohara80@gmail.com"
+ },
+ {
+ "name": "Marco Rogers",
+ "email": "marco.rogers@gmail.com"
}
],
- "dependencies": {},
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "_engineSupported": true,
- "_npmVersion": "1.1.25",
- "_nodeVersion": "v0.7.10-pre",
- "_defaultsLoaded": true,
- "_from": "lru-cache@1"
+ "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\nUsage:\n\n var LRU = require(\"lru-cache\")\n , cache = LRU(10, // max length. default = Infinity\n\n // calculate how \"big\" each item is\n //\n // defaults to function(){return 1}, ie, just limit\n // the item count, without any knowledge as to their\n // relative size.\n function (item) { return item.length },\n\n // maxAge in ms\n // defaults to infinite\n // items are not pre-emptively pruned, but they\n // are deleted when fetched if they're too old.\n 1000 * 60)\n\n cache.set(\"key\", \"value\")\n cache.get(\"key\") // \"value\"\n\n cache.reset() // empty the cache\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\nRTFS for more info.\n",
+ "_id": "lru-cache@1.1.1",
+ "_from": "lru-cache@~1.1.0"
}
t.equal(cache.get("a"), "A")
t.end()
})
+
+test("set returns proper booleans", function(t) {
+ var cache = new LRU(5, function (item) { return item.length })
+ t.equal(cache.set("a", "A"), true)
+
+ // should return false for maxLength exceeded
+ t.equal(cache.set("b", "donuts"), false)
+
+ t.equal(cache.set("b", "B"), true)
+ t.equal(cache.set("c", "CCCC"), true)
+ t.end()
+})
+
+test("drop the old items", function(t) {
+ var cache = new LRU(5, null, 50)
+
+ cache.set("a", "A")
+
+ setTimeout(function () {
+ cache.set("b", "b")
+ t.equal(cache.get("a"), "A")
+ }, 25)
+
+ setTimeout(function () {
+ cache.set("c", "C")
+ // timed out
+ t.notOk(cache.get("a"))
+ }, 51)
+
+ setTimeout(function () {
+ t.notOk(cache.get("b"))
+ t.equal(cache.get("c"), "C")
+ }, 90)
+
+ setTimeout(function () {
+ t.notOk(cache.get("c"))
+ t.end()
+ }, 155)
+})
--- /dev/null
+node_modules/
+npm-debug.log
\ No newline at end of file
--- /dev/null
+--- /dev/null
++++ .gitignore
+@@ -0,0 +1,2 @@
++node_modules/
++npm-debug.log
\ No newline at end of file
--- /dev/null
+var mkdirp = require('mkdirp');
+
+mkdirp('/tmp/foo/bar/baz', 0755, function (err) {
+ if (err) console.error(err)
+ else console.log('pow!')
+});
--- /dev/null
+--- examples/pow.js
++++ examples/pow.js
+@@ -1,6 +1,15 @@
+-var mkdirp = require('mkdirp').mkdirp;
++var mkdirp = require('../').mkdirp,
++ mkdirpSync = require('../').mkdirpSync;
+
+ mkdirp('/tmp/foo/bar/baz', 0755, function (err) {
+ if (err) console.error(err)
+ else console.log('pow!')
+ });
++
++try {
++ mkdirpSync('/tmp/bar/foo/baz', 0755);
++ console.log('double pow!');
++}
++catch (ex) {
++ console.log(ex);
++}
\ No newline at end of file
prog.parseArgv(process.argv)
if (prog.todo.length === 0) {
- return prog.usageAndExit()
+ if (~process.argv.indexOf('-v') || ~process.argv.indexOf('--version')) {
+ console.log('v%s', prog.version)
+ } else {
+ console.log('%s', prog.usage())
+ }
+ return process.exit(0)
}
log.info('it worked if it ends with', 'ok')
, path = require('path')
, glob = require('glob')
, log = require('npmlog')
+ , osenv = require('osenv')
, which = require('which')
, semver = require('semver')
, mkdirp = require('mkdirp')
, exec = require('child_process').exec
+ , spawn = require('child_process').spawn
, win = process.platform == 'win32'
+ , hasVCExpress = false
+ , hasWin71SDK = false
exports.usage = 'Generates ' + (win ? 'MSVC project files' : 'a Makefile') + ' for the current module'
, configPath
, nodeDir
- checkPython()
+ if (win) {
+ checkVCExpress(function () {
+ if (hasVCExpress) {
+ checkWin71SDK(function () {
+ checkPython()
+ })
+ } else {
+ checkPython()
+ }
+ })
+ } else
+ checkPython()
// Make sure that Python is in the $PATH
function checkPython () {
if (err) {
return callback(err)
}
- log.verbose('check python version', '`python --version` returned: %j', stderr)
+ log.verbose('check python version', '`%s --version` returned: %j', python, stderr)
var version = stderr.trim().replace(/[^\d\.]+/g, '')
var numDots = 0
version.replace(/\./g, function () {
+ 'You can pass the --python switch to point to Python >= v2.5.0 & < 3.0.0.'))
}
+ function checkWin71SDK(cb) {
+ spawn('reg', ['query', 'HKLM\\Software\\Microsoft\\Microsoft SDKs\\Windows\\v7.1', '/v', 'InstallationFolder'])
+ .on('exit', function (code) {
+ hasWin71SDK = (code === 0)
+ cb()
+ })
+ }
+
+ function checkVCExpress64(cb) {
+ var cp = spawn('cmd', ['/C', '%WINDIR%\\SysWOW64\\reg', 'query', 'HKLM\\Software\\Microsoft\\VCExpress\\10.0\\Setup\\VC', '/v', 'ProductDir'])
+ cp.on('exit', function (code) {
+ hasVCExpress = (code === 0)
+ cb()
+ })
+ }
+
+ function checkVCExpress(cb) {
+ spawn('reg', ['query', 'HKLM\\Software\\Microsoft\\VCExpress\\10.0\\Setup\\VC', '/v', 'ProductDir'])
+ .on('exit', function (code) {
+ if (code !== 0) {
+ checkVCExpress64(cb)
+ } else {
+ cb()
+ }
+ })
+ }
+
function getNodeDir () {
// 'python' should be set by now
if (gyp.opts.nodedir) {
// --nodedir was specified. use that for the dev files
- nodeDir = gyp.opts.nodedir
-
- // simple ~ homedir expansion based on https://github.com/joyent/node/issues/2857
- if (win) {
- nodeDir = nodeDir.replace(/^~/, process.env.USERPROFILE)
- } else {
- nodeDir = nodeDir.replace(/^~/, process.env.HOME)
- }
+ nodeDir = gyp.opts.nodedir.replace(/^~/, osenv.home())
log.verbose('get node dir', 'compiling against specified --nodedir dev files: %s', nodeDir)
createBuildDir()
// set the target_arch variable
variables.target_arch = gyp.opts.arch || process.arch || 'ia32'
+ // set the toolset for 64-bit VCExpress users
+ if (win && variables.target_arch === 'x64' && hasVCExpress && hasWin71SDK) {
+ defaults.msbuild_toolset = 'Windows7.1SDK'
+ }
+
// set the node development directory
variables.nodedir = nodeDir
if (name === npm_config_prefix + 'loglevel') {
log.level = val
} else {
- // take the config name and check if it's one that node-gyp cares about
+ // add the user-defined options to the config
name = name.substring(npm_config_prefix.length)
- if (name in this.configDefs) {
- this.opts[name] = val
- }
+ this.opts[name] = val
}
}, this)
}
/**
- * Prints the usage instructions and then exits.
+ * Returns the usage instructions for node-gyp.
*/
-proto.usageAndExit = function usageAndExit () {
+proto.usage = function usage () {
var usage = [
''
, ' Usage: node-gyp <command> [options]'
, 'node-gyp@' + this.version + ' ' + path.resolve(__dirname, '..')
, 'node@' + process.versions.node
].join('\n')
-
- console.log(usage)
- process.exit(4)
+ return usage
}
/**
- * Version number proxy.
+ * Version number getter.
*/
Object.defineProperty(proto, 'version', {
"bindings",
"gyp"
],
- "version": "0.6.1",
+ "version": "0.6.3",
"installVersion": 9,
"author": {
"name": "Nathan Rajlich",
"node": ">= 0.6.0"
},
"readme": "node-gyp\n=========\n### Node.js native addon build tool\n\n`node-gyp` is a cross-platform command-line tool written in Node.js for compiling\nnative addon modules for Node.js, which takes away the pain of dealing with the\nvarious differences in build platforms. It is the replacement to the `node-waf`\nprogram which is removed for node `v0.8`. If you have a native addon for node that\nstill has a `wscript` file, then you should definitely add a `binding.gyp` file\nto support the latest versions of node.\n\nMultiple target versions of node are supported (i.e. `0.6`, `0.7`,..., `1.0`,\netc.), regardless of what version of node is actually installed on your system\n(`node-gyp` downloads the necessary development files for the target version).\n\n#### Features:\n\n * Easy to use, consistent interface\n * Same commands to build your module on every platform\n * Supports multiple target versions of Node\n\n\nInstallation\n------------\n\nYou can install with `npm`:\n\n``` bash\n$ npm install -g node-gyp\n```\n\nYou will also need to install:\n\n * On Unix:\n * `python`\n * `make`\n * A proper C/C++ compiler toolchain, like GCC\n * On Windows:\n * [Python][windows-python] ([`v2.7.2`][windows-python-v2.7.2] recommended, `v3.x.x` not yet supported)\n * Microsoft Visual C++ ([Express][msvc] version works well)\n * For 64-bit builds of node and native modules you will _also_ need the [Windows 7 64-bit SDK][win7sdk]\n\nHow to Use\n----------\n\nTo compile your native addon, first go to its root directory:\n\n``` bash\n$ cd my_node_addon\n```\n\nThe next step is to generate the appropriate project build files for the current\nplatform. Use `configure` for that:\n\n``` bash\n$ node-gyp configure\n```\n\n__Note__: The `configure` step looks for the `binding.gyp` file in the current\ndirectory to processs. See below for instructions on creating the `binding.gyp` file.\n\nNow you will have either a `Makefile` (on Unix platforms) or a `vcxproj` file\n(on Windows) in the `build/` directory. Next invoke the `build` command:\n\n``` bash\n$ node-gyp build\n```\n\nNow you have your compiled `.node` bindings file! The compiled bindings end up\nin `build/Debug/` or `build/Release/`, depending on the build mode. At this point\nyou can require the `.node` file with Node and run your tests!\n\n__Note:__ To create a _Debug_ build of the bindings file, pass the `--debug` (or\n`-d`) switch when running the either `configure` or `build` command.\n\n\nThe \"binding.gyp\" file\n----------------------\n\nPreviously when node had `node-waf` you had to write a `wscript` file. The\nreplacement for that is the `binding.gyp` file, which describes the configuration\nto build your module in a JSON-like format. This file gets placed in the root of\nyour package, alongside the `package.json` file.\n\nA barebones `gyp` file appropriate for building a node addon looks like:\n\n``` json\n{\n \"targets\": [\n {\n \"target_name\": \"binding\",\n \"sources\": [ \"src/binding.cc\" ]\n }\n ]\n}\n```\n\nSome additional resources for writing `gyp` files:\n\n * [\"Hello World\" node addon example](https://github.com/joyent/node/tree/master/test/addons/hello-world)\n * [gyp user documentation](http://code.google.com/p/gyp/wiki/GypUserDocumentation)\n * [gyp input format reference](http://code.google.com/p/gyp/wiki/InputFormatReference)\n * [*\"binding.gyp\" files out in the wild* wiki page](https://github.com/TooTallNate/node-gyp/wiki/%22binding.gyp%22-files-out-in-the-wild)\n\n\nCommands\n--------\n\n`node-gyp` responds to the following commands:\n\n| **Command** | **Description**\n|:--------------|:---------------------------------------------------------------\n| `build` | Invokes `make`/`msbuild.exe` and builds the native addon\n| `clean` | Removes any the `build` dir if it exists\n| `configure` | Generates project build files for the current platform\n| `rebuild` | Runs \"clean\", \"configure\" and \"build\" all in a row\n| `install` | Installs node development header files for the given version\n| `list` | Lists the currently installed node development file versions\n| `remove` | Removes the node development header files for the given version\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n[windows-python]: http://www.python.org/getit/windows\n[windows-python-v2.7.2]: http://www.python.org/download/releases/2.7.2#download\n[msvc]: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express\n[win7sdk]: http://www.microsoft.com/download/en/details.aspx?displayLang=en&id=8279\n",
- "_id": "node-gyp@0.6.1",
- "dist": {
- "shasum": "6b380fd3fbf21c0dc99147a5f99fd8fc8f79c794"
- },
- "_from": "node-gyp@latest"
+ "_id": "node-gyp@0.6.3",
+ "_from": "node-gyp@~0.6.1"
}
{
"name": "read-package-json",
- "version": "0.1.1",
+ "version": "0.1.2",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
"graceful-fs": "~1.1.8"
},
"readme": "# read-package-json\n\nThis is the thing that npm uses to read package.json files. It\nvalidates some stuff, and loads some default things.\n\nIt keeps a cache of the files you've read, so that you don't end\nup reading the same package.json file multiple times.\n\nNote that if you just want to see what's literally in the package.json\nfile, you can usually do `var data = require('some-module/package.json')`.\n\nThis module is basically only needed by npm, but it's handy to see what\nnpm will see when it looks at your package.\n\n## Usage\n\n```javascript\nvar readJson = require('read-package-json')\n\nreadJson('/path/to/package.json', function (er, data) {\n if (er) {\n console.error(\"There was an error reading the file\")\n return\n }\n\n console.error('the package data is', data)\n}\n```\n\n## readJson(file, cb)\n\n* `file` {String} The path to the package.json file\n* `cb` {Function}\n\nReads the JSON file and does the things.\n\n## `package.json` Fields\n\nSee `man 5 package.json` or `npm help json`.\n\n## readJson.log\n\nBy default this is a reference to the `npmlog` module. But if that\nmodule can't be found, then it'll be set to just a dummy thing that does\nnothing.\n\nReplace with your own `{log,warn,error}` object for fun loggy time.\n\n## readJson.extras(file, data, cb)\n\nRun all the extra stuff relative to the file, with the parsed data.\n\nModifies the data as it does stuff. Calls the cb when it's done.\n\n## readJson.extraSet = [fn, fn, ...]\n\nArray of functions that are called by `extras`. Each one receives the\narguments `fn(file, data, cb)` and is expected to call `cb(er, data)`\nwhen done or when an error occurs.\n\nOrder is indeterminate, so each function should be completely\nindependent.\n\nMix and match!\n\n## readJson.cache\n\nThe `lru-cache` object that readJson uses to not read the same file over\nand over again. See\n[lru-cache](https://github.com/isaacs/node-lru-cache) for details.\n\n## Other Relevant Files Besides `package.json`\n\nSome other files have an effect on the resulting data object, in the\nfollowing ways:\n\n### `README?(.*)`\n\nIf there is a `README` or `README.*` file present, then npm will attach\na `readme` field to the data with the contents of this file.\n\nOwing to the fact that roughly 100% of existing node modules have\nMarkdown README files, it will generally be assumed to be Markdown,\nregardless of the extension. Please plan accordingly.\n\n### `server.js`\n\nIf there is a `server.js` file, and there is not already a\n`scripts.start` field, then `scripts.start` will be set to `node\nserver.js`.\n\n### `AUTHORS`\n\nIf there is not already a `contributors` field, then the `contributors`\nfield will be set to the contents of the `AUTHORS` file, split by lines,\nand parsed.\n\n### `bindings.gyp`\n\nIf a bindings.gyp file exists, and there is not already a\n`scripts.install` field, then the `scripts.install` field will be set to\n`node-gyp rebuild`.\n\n### `wscript`\n\nIf a wscript file exists, and there is not already a `scripts.install`\nfield, then the `scripts.install` field will be set to `node-waf clean ;\nnode-waf configure build`.\n\nNote that the `bindings.gyp` file supercedes this, since node-waf has\nbeen deprecated in favor of node-gyp.\n\n### `index.js`\n\nIf the json file does not exist, but there is a `index.js` file\npresent instead, and that file has a package comment, then it will try\nto parse the package comment, and use that as the data instead.\n\nA package comment looks like this:\n\n```javascript\n/**package\n * { \"name\": \"my-bare-module\"\n * , \"version\": \"1.2.3\"\n * , \"description\": \"etc....\" }\n **/\n\n// or...\n\n/**package\n{ \"name\": \"my-bare-module\"\n, \"version\": \"1.2.3\"\n, \"description\": \"etc....\" }\n**/\n```\n\nThe important thing is that it starts with `/**package`, and ends with\n`**/`. If the package.json file exists, then the index.js is not\nparsed.\n\n### `{directories.man}/*.[0-9]`\n\nIf there is not already a `man` field defined as an array of files or a\nsingle file, and\nthere is a `directories.man` field defined, then that directory will\nbe searched for manpages.\n\nAny valid manpages found in that directory will be assigned to the `man`\narray, and installed in the appropriate man directory at package install\ntime, when installed globally on a Unix system.\n\n### `{directories.bin}/*`\n\nIf there is not already a `bin` field defined as a string filename or a\nhash of `<name> : <filename>` pairs, then the `directories.bin`\ndirectory will be searched and all the files within it will be linked as\nexecutables at install time.\n\nWhen installing locally, npm links bins into `node_modules/.bin`, which\nis in the `PATH` environ when npm runs scripts. When\ninstalling globally, they are linked into `{prefix}/bin`, which is\npresumably in the `PATH` environment variable.\n",
- "_id": "read-package-json@0.1.1",
- "_from": "read-package-json@~0.1.0"
+ "_id": "read-package-json@0.1.2",
+ "_from": "read-package-json@~0.1.1"
}
function readJson_ (file, cb) {
fs.readFile(file, "utf8", function (er, d) {
- if (er && er.code === "ENOENT") {
- indexjs(file, er, cb)
- return
- }
- if (er) return cb(er);
- try {
- d = JSON.parse(d)
- } catch (er) {
- er = parseError(er, file);
- return cb(er);
- }
- extras(file, d, cb)
+ parseJson(file, er, d, cb)
})
}
+function parseJson (file, er, d, cb) {
+ if (er && er.code === "ENOENT") {
+ indexjs(file, er, cb)
+ return
+ }
+ if (er) return cb(er);
+ try {
+ d = JSON.parse(d)
+ } catch (er) {
+ d = parseIndex(d)
+ if (!d) return cb(parseError(er, file));
+ }
+ extras(file, d, cb)
+}
+
function indexjs (file, er, cb) {
if (path.basename(file) === "index.js") {
var globOpts = { cwd: dir, nocase: true }
glob("README?(.*)", globOpts, function (er, files) {
if (er) return cb(er);
- if (!files.length) return cb()
+ if (!files.length) return cb();
var rm = path.resolve(dir, files[0])
readme_(file, data, rm, cb)
})
// a warning for deprecated or likely-incorrect fields
function typoWarn (file, data) {
- if (typoWarned[data._id]) return;
- typoWarned[data._id] = true
if (data.modules) {
warn(file, data,
"'modules' is deprecated")
bugsTypoWarn(file, data)
scriptTypoWarn(file, data)
noreadmeWarn(file, data)
+ typoWarned[data._id] = true
}
function noreadmeWarn (file, data) {
function warn (f, d, m) {
+ if (typoWarned[d._id]) return;
readJson.log.warn("package.json", d._id, m)
}
+// vim: set softtabstop=16 shiftwidth=16:
var tap = require("tap")
var readJson = require("../")
var path = require("path")
--- /dev/null
+body {
+ height: yo mama
+}
+
+/**package
+{
+ "name": "read-package-json",
+ "version": "0.1.1",
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
+ "description": "The thing npm uses to read package.json files with semantics and defaults and validation",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/read-package-json.git"
+ },
+ "main": "read-json.js",
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "dependencies": {
+ "glob": "~3.1.9",
+ "lru-cache": "~1.1.0",
+ "semver": "~1.0.14",
+ "slide": "~1.1.3"
+ },
+ "devDependencies": {
+ "tap": "~0.2.5"
+ },
+ "optionalDependencies": {
+ "npmlog": "0",
+ "graceful-fs": "~1.1.8"
+ }
+}
+**/
+
+html {
+ width: so fat
+}
--- /dev/null
+// vim: set softtabstop=16 shiftwidth=16:
+var tap = require('tap')
+var readJson = require('../')
+var path = require('path')
+var fs = require('fs')
+var expect =
+{ name: 'read-package-json',
+ version: '0.1.1',
+ author:
+ { name: 'Isaac Z. Schlueter',
+ email: 'i@izs.me',
+ url: 'http://blog.izs.me/' },
+ description: 'The thing npm uses to read package.json files with semantics and defaults and validation',
+ repository:
+ { type: 'git',
+ url: 'git://github.com/isaacs/read-package-json.git' },
+ main: 'read-json.js',
+ scripts: { test: 'tap test/*.js' },
+ dependencies:
+ { glob: '~3.1.9',
+ 'lru-cache': '~1.1.0',
+ semver: '~1.0.14',
+ slide: '~1.1.3',
+ npmlog: '0',
+ 'graceful-fs': '~1.1.8' },
+ devDependencies: { tap: '~0.2.5' },
+ optionalDependencies: { npmlog: '0', 'graceful-fs': '~1.1.8' },
+ _id: 'read-package-json@0.1.1',
+ readme: 'ERROR: No README.md file found!' }
+
+tap.test('from css', function (t) {
+ var c = path.join(__dirname, 'fixtures', 'not-json.css')
+ readJson(c, function (er, d) {
+ t.same(d, expect)
+ t.end()
+ })
+})
+
+tap.test('from js', function (t) {
+ readJson(__filename, function (er, d) {
+ t.same(d, expect)
+ t.end()
+ })
+})
+
+
+
+/**package
+{
+ "name": "read-package-json",
+ "version": "0.1.1",
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
+ "description": "The thing npm uses to read package.json files with semantics and defaults and validation",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/read-package-json.git"
+ },
+ "main": "read-json.js",
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "dependencies": {
+ "glob": "~3.1.9",
+ "lru-cache": "~1.1.0",
+ "semver": "~1.0.14",
+ "slide": "~1.1.3"
+ },
+ "devDependencies": {
+ "tap": "~0.2.5"
+ },
+ "optionalDependencies": {
+ "npmlog": "0",
+ "graceful-fs": "~1.1.8"
+ }
+}
+**/
+
* `prompt` What to write to stdout before reading input.
* `silent` Don't echo the output as the user types it.
+* `replace` Replace silenced characters with the supplied character value.
* `timeout` Number of ms to wait for user input before giving up.
* `default` The default value if the user enters nothing.
* `edit` Allow the user to edit the default value.
var input = opts.input || process.stdin
var output = opts.output || process.stdout
- var m = new Mute()
+ var m = new Mute({ replace: opts.replace })
m.pipe(output)
output = m
var def = opts.default || ''
```javascript
var MuteStream = require('mute-stream')
-var ms = new MuteStream
+var ms = new MuteStream(options)
ms.pipe(process.stdout)
ms.write('foo') // writes 'foo' to stdout
input.emit('data', 'baz') // logs 'baz'
```
+## Options
+
+All options are optional.
+
+* `replace` Set to a string to replace each character with the
+ specified string when muted. (So you can show `****` instead of the
+ password, for example.)
+
## ms.mute()
Set `muted` to `true`. Turns `.write()` into a no-op.
// var out = new MuteStream(process.stdout)
// argument auto-pipes
-function MuteStream (dest) {
+function MuteStream (opts) {
Stream.apply(this)
+ opts = opts || {}
this.writable = this.readable = true
this.muted = false
this.on('pipe', this._onpipe)
+ this.replace = opts.replace
}
MuteStream.prototype = Object.create(Stream.prototype)
}
MuteStream.prototype.write = function (c) {
- if (this.muted) return true
+ if (this.muted) {
+ if (!this.replace) return true
+ c = c.toString().replace(/./g, this.replace)
+ }
this.emit('data', c)
}
MuteStream.prototype.end = function (c) {
- if (!this.muted) this.emit('data', c)
+ if (this.muted) {
+ if (c && this.replace) {
+ c = c.toString().replace(/./g, this.replace)
+ } else {
+ c = null
+ }
+ }
+ if (c) this.emit('data', c)
this.emit('end')
}
{
"name": "mute-stream",
- "version": "0.0.1",
+ "version": "0.0.2",
"main": "mute.js",
"directories": {
"test": "test"
},
"license": "BSD",
"description": "Bytes go in, but they don't come out (when muted).",
- "readme": "# mute-stream\n\nBytes go in, but they don't come out (when muted).\n\nThis is a basic pass-through stream, but when muted, the bytes are\nsilently dropped, rather than being passed through.\n\n## Usage\n\n```javascript\nvar MuteStream = require('mute-stream')\n\nvar ms = new MuteStream\n\nms.pipe(process.stdout)\nms.write('foo') // writes 'foo' to stdout\nms.mute()\nms.write('bar') // does not write 'bar'\nms.unmute()\nms.write('baz') // writes 'baz' to stdout\n\n// can also be used to mute incoming data\nvar ms = new MuteStream\ninput.pipe(ms)\n\nms.on('data', function (c) {\n console.log('data: ' + c)\n})\n\ninput.emit('data', 'foo') // logs 'foo'\nms.mute()\ninput.emit('data', 'bar') // does not log 'bar'\nms.unmute()\ninput.emit('data', 'baz') // logs 'baz'\n```\n\n## ms.mute()\n\nSet `muted` to `true`. Turns `.write()` into a no-op.\n\n## ms.unmute()\n\nSet `muted` to `false`\n\n## ms.isTTY\n\nTrue if the pipe destination is a TTY, or if the incoming pipe source is\na TTY.\n\n## Other stream methods...\n\nThe other standard readable and writable stream methods are all\navailable. The MuteStream object acts as a facade to its pipe source\nand destination.\n",
- "_id": "mute-stream@0.0.1",
- "_from": "mute-stream@0"
+ "readme": "# mute-stream\n\nBytes go in, but they don't come out (when muted).\n\nThis is a basic pass-through stream, but when muted, the bytes are\nsilently dropped, rather than being passed through.\n\n## Usage\n\n```javascript\nvar MuteStream = require('mute-stream')\n\nvar ms = new MuteStream(options)\n\nms.pipe(process.stdout)\nms.write('foo') // writes 'foo' to stdout\nms.mute()\nms.write('bar') // does not write 'bar'\nms.unmute()\nms.write('baz') // writes 'baz' to stdout\n\n// can also be used to mute incoming data\nvar ms = new MuteStream\ninput.pipe(ms)\n\nms.on('data', function (c) {\n console.log('data: ' + c)\n})\n\ninput.emit('data', 'foo') // logs 'foo'\nms.mute()\ninput.emit('data', 'bar') // does not log 'bar'\nms.unmute()\ninput.emit('data', 'baz') // logs 'baz'\n```\n\n## Options\n\nAll options are optional.\n\n* `replace` Set to a string to replace each character with the\n specified string when muted. (So you can show `****` instead of the\n password, for example.)\n\n## ms.mute()\n\nSet `muted` to `true`. Turns `.write()` into a no-op.\n\n## ms.unmute()\n\nSet `muted` to `false`\n\n## ms.isTTY\n\nTrue if the pipe destination is a TTY, or if the incoming pipe source is\na TTY.\n\n## Other stream methods...\n\nThe other standard readable and writable stream methods are all\navailable. The MuteStream object acts as a facade to its pipe source\nand destination.\n",
+ "_id": "mute-stream@0.0.2",
+ "dist": {
+ "shasum": "75d4466df24a57e80fec806bda88561cd0560d2d"
+ },
+ "_from": "mute-stream@~0.0.2"
}
t.equal(expect.length, 0, 'saw all events')
t.end()
})
+
+tap.test('replace with *', function (t) {
+ var str = new PassThrough
+ var ms = new MS({replace: '*'})
+ str.pipe(ms)
+ var expect = ['foo', '*****', 'bar', '***', 'baz', 'boo', '**', '****']
+
+ ms.on('data', function (c) {
+ t.equal(c, expect.shift())
+ })
+
+ str.write('foo')
+ ms.mute()
+ str.write('12345')
+ ms.unmute()
+ str.write('bar')
+ ms.mute()
+ str.write('baz')
+ ms.unmute()
+ str.write('baz')
+ str.write('boo')
+ ms.mute()
+ str.write('xy')
+ str.write('xyzΩ')
+
+ t.equal(expect.length, 0)
+ t.end()
+})
+
+tap.test('replace with ~YARG~', function (t) {
+ var str = new PassThrough
+ var ms = new MS({replace: '~YARG~'})
+ str.pipe(ms)
+ var expect = ['foo', '~YARG~~YARG~~YARG~~YARG~~YARG~', 'bar',
+ '~YARG~~YARG~~YARG~', 'baz', 'boo', '~YARG~~YARG~',
+ '~YARG~~YARG~~YARG~~YARG~']
+
+ ms.on('data', function (c) {
+ t.equal(c, expect.shift())
+ })
+
+ // also throw some unicode in there, just for good measure.
+ str.write('foo')
+ ms.mute()
+ str.write('ΩΩ')
+ ms.unmute()
+ str.write('bar')
+ ms.mute()
+ str.write('Ω')
+ ms.unmute()
+ str.write('baz')
+ str.write('boo')
+ ms.mute()
+ str.write('Ω')
+ str.write('ΩΩ')
+
+ t.equal(expect.length, 0)
+ t.end()
+})
{
"name": "read",
- "version": "1.0.1",
+ "version": "1.0.2",
"main": "lib/read.js",
"dependencies": {
- "mute-stream": "0"
+ "mute-stream": "~0.0.2"
},
"devDependencies": {
"tap": "*"
"scripts": {
"test": "tap test/*.js"
},
- "readme": "## read\n\nFor reading user input from stdin.\n\nSimilar to the `readline` builtin's `question()` method, but with a\nfew more features.\n\n## USAGE\n\n```javascript\nvar read = require(\"read\")\nread(options, callback)\n```\n\nThe callback gets called with either the user input, or the default\nspecified, or an error, as `callback(error, result, isDefault)`\nnode style.\n\n## OPTIONS\n\nEvery option is optional.\n\n* `prompt` What to write to stdout before reading input.\n* `silent` Don't echo the output as the user types it.\n* `timeout` Number of ms to wait for user input before giving up.\n* `default` The default value if the user enters nothing.\n* `edit` Allow the user to edit the default value.\n* `terminal` Treat the output as a TTY, whether it is or not.\n* `stdin` Readable stream to get input data from. (default `process.stdin`)\n* `stdout` Writeable stream to write prompts to. (default: `process.stdout`)\n\nIf silent is true, and the input is a TTY, then read will set raw\nmode, and read character by character.\n\n## CONTRIBUTING\n\nPatches welcome.\n",
- "_id": "read@1.0.1",
- "_from": "read@latest"
+ "readme": "## read\n\nFor reading user input from stdin.\n\nSimilar to the `readline` builtin's `question()` method, but with a\nfew more features.\n\n## USAGE\n\n```javascript\nvar read = require(\"read\")\nread(options, callback)\n```\n\nThe callback gets called with either the user input, or the default\nspecified, or an error, as `callback(error, result, isDefault)`\nnode style.\n\n## OPTIONS\n\nEvery option is optional.\n\n* `prompt` What to write to stdout before reading input.\n* `silent` Don't echo the output as the user types it.\n* `replace` Replace silenced characters with the supplied character value.\n* `timeout` Number of ms to wait for user input before giving up.\n* `default` The default value if the user enters nothing.\n* `edit` Allow the user to edit the default value.\n* `terminal` Treat the output as a TTY, whether it is or not.\n* `stdin` Readable stream to get input data from. (default `process.stdin`)\n* `stdout` Writeable stream to write prompts to. (default: `process.stdout`)\n\nIf silent is true, and the input is a TTY, then read will set raw\nmode, and read character by character.\n\n## CONTRIBUTING\n\nPatches welcome.\n",
+ "_id": "read@1.0.2",
+ "_from": "read@~1"
}
{
- "version": "1.1.45",
+ "version": "1.1.46",
"name": "npm",
"publishConfig": {
"proprietary-attribs": false
--- /dev/null
+just an npm test
--- /dev/null
+{ "name":"npm-test-blerg3"
+, "homepage": "https://github.com/isaacs/npm/issues/2658"
+, "version" : "0.0.0"
+, "scripts" : { "test" : "node test.js" }
+}
--- /dev/null
+
+var assert = require("assert")
+assert.equal(undefined, process.env.npm_config__password, "password exposed!")
+assert.equal(undefined, process.env.npm_config__auth, "auth exposed!")
+assert.equal(undefined, process.env.npm_config__authCrypt, "authCrypt exposed!")