npm: Upgrade to 1.1.33

Support for parallel use of the cache folder
Retry on registry timeouts or network failures
Reduce 'engines' failures to a warning
Use new zsh completion if aviailable
This commit is contained in:
isaacs 2012-06-28 19:08:32 -07:00
parent f2a9ed4873
commit c721604d25
131 changed files with 1539 additions and 245 deletions

22
deps/npm/.npmignore vendored
View File

@ -1,16 +1,16 @@
*.swp *.swp
test/bin
test/output.log
test/packages/*/node_modules
test/packages/npm-test-depends-on-spark/which-spark.log
test/packages/test-package/random-data.txt
test/root
node_modules/ronn
node_modules/.bin
npm-debug.log npm-debug.log
./npmrc /test/bin
.gitignore /test/output.log
release/ /test/packages/*/node_modules
/test/packages/npm-test-depends-on-spark/which-spark.log
/test/packages/test-package/random-data.txt
/test/root
/node_modules/ronn
/node_modules/tap
/node_modules/.bin
/npmrc
/release/
# don't need these in the npm package. # don't need these in the npm package.
html/*.png html/*.png

View File

@ -195,6 +195,27 @@ See also the `strict-ssl` config.
The location of npm's cache directory. See `npm-cache(1)` The location of npm's cache directory. See `npm-cache(1)`
### cache-lock-stale
* Default: 60000 (1 minute)
* Type: Number
The number of ms before cache folder lockfiles are considered stale.
### cache-lock-retries
* Default: 10
* Type: Number
Number of times to retry to acquire a lock on cache folder lockfiles.
### cache-lock-wait
* Default: 10000 (10 seconds)
* Type: Number
Number of ms to wait for cache lock files to expire.
### cache-max ### cache-max
* Default: Infinity * Default: Infinity
@ -266,6 +287,15 @@ set.
The command to run for `npm edit` or `npm config edit`. The command to run for `npm edit` or `npm config edit`.
### engine-strict
* Default: false
* Type: Boolean
If set to true, then npm will stubbornly refuse to install (or even
consider installing) any package that claims to not be compatible with
the current Node.js version.
### force ### force
* Default: false * Default: false
@ -278,6 +308,38 @@ Makes various commands more forceful.
* skips cache when requesting from the registry. * skips cache when requesting from the registry.
* prevents checks against clobbering non-npm files. * prevents checks against clobbering non-npm files.
### fetch-retries
* Default: 2
* Type: Number
The "retries" config for the `retry` module to use when fetching
packages from the registry.
### fetch-retry-factor
* Default: 10
* Type: Number
The "factor" config for the `retry` module to use when fetching
packages.
### fetch-retry-mintimeout
* Default: 10000 (10 seconds)
* Type: Number
The "minTimeout" config for the `retry` module to use when fetching
packages.
### fetch-retry-maxtimeout
* Default: 60000 (1 minute)
* Type: Number
The "maxTimeout" config for the `retry` module to use when fetching
packages.
### git ### git
* Default: `"git"` * Default: `"git"`

View File

@ -453,8 +453,7 @@ Entries in `optionalDependencies` will override entries of the same name in
## engines ## engines
You can specify the version of You can specify the version of node that your stuff works on:
node that your stuff works on:
{ "engines" : { "node" : ">=0.1.27 <0.1.30" } } { "engines" : { "node" : ">=0.1.27 <0.1.30" } }
@ -470,6 +469,22 @@ are capable of properly installing your program. For example:
{ "engines" : { "npm" : "~1.0.20" } } { "engines" : { "npm" : "~1.0.20" } }
Note that, unless the user has set the `engine-strict` config flag, this
field is advisory only.
## engineStrict
If you are sure that your module will *definitely not* run properly on
versions of Node/npm other than those specified in the `engines` hash,
then you can set `"engineStrict": true` in your package.json file.
This will override the user's `engine-strict` config setting.
Please do not do this unless you are really very very sure. If your
engines hash is something overly restrictive, you can quite easily and
inadvertently lock yourself into obscurity and prevent your users from
updating to new versions of Node. Consider this choice carefully. If
people abuse it, it will be removed in a future version of npm.
## os ## os
You can specify which operating systems your You can specify which operating systems your

View File

@ -19,7 +19,7 @@
<p>This function should not be used programmatically. Instead, just refer <p>This function should not be used programmatically. Instead, just refer
to the <code>npm.bin</code> member.</p> to the <code>npm.bin</code> member.</p>
</div> </div>
<p id="footer">bin &mdash; npm@1.1.32</p> <p id="footer">bin &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -25,7 +25,7 @@ optional version number.</p>
<p>This command will launch a browser, so this command may not be the most <p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p> friendly for programmatic use.</p>
</div> </div>
<p id="footer">bugs &mdash; npm@1.1.32</p> <p id="footer">bugs &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -28,7 +28,7 @@ usage, or <code>man 3 npm-&lt;command&gt;</code> for programmatic usage.</p>
<ul><li><a href="../doc/index.html">index(1)</a></li></ul> <ul><li><a href="../doc/index.html">index(1)</a></li></ul>
</div> </div>
<p id="footer">commands &mdash; npm@1.1.32</p> <p id="footer">commands &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -33,7 +33,7 @@ functions instead.</p>
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul> <ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
</div> </div>
<p id="footer">config &mdash; npm@1.1.32</p> <p id="footer">config &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -30,7 +30,7 @@ install the package.</p></li></ul>
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../api/unpublish.html">unpublish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> <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> </div>
<p id="footer">deprecate &mdash; npm@1.1.32</p> <p id="footer">deprecate &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -25,7 +25,7 @@ optional version number.</p>
<p>This command will launch a browser, so this command may not be the most <p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p> friendly for programmatic use.</p>
</div> </div>
<p id="footer">docs &mdash; npm@1.1.32</p> <p id="footer">docs &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -30,7 +30,7 @@ to open. The package can optionally have a version number attached.</p>
<p>Since this command opens an editor in a new process, be careful about where <p>Since this command opens an editor in a new process, be careful about where
and how this is used.</p> and how this is used.</p>
</div> </div>
<p id="footer">edit &mdash; npm@1.1.32</p> <p id="footer">edit &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -24,7 +24,7 @@ sure to use <code>npm rebuild &lt;pkg&gt;</code> if you make any changes.</p>
<p>The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p> <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> </div>
<p id="footer">explore &mdash; npm@1.1.32</p> <p id="footer">explore &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -32,7 +32,7 @@ Name of the file that matched</li></ul>
<p>The silent parameter is not neccessary not used, but it may in the future.</p> <p>The silent parameter is not neccessary not used, but it may in the future.</p>
</div> </div>
<p id="footer">help-search &mdash; npm@1.1.32</p> <p id="footer">help-search &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -35,7 +35,7 @@ then go ahead and use this programmatically.</p>
<p><a href="../doc/json.html">json(1)</a></p> <p><a href="../doc/json.html">json(1)</a></p>
</div> </div>
<p id="footer">init &mdash; npm@1.1.32</p> <p id="footer">init &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -25,7 +25,7 @@ the name of a package to be installed.</p>
<p>Finally, 'callback' is a function that will be called when all packages have been <p>Finally, 'callback' is a function that will be called when all packages have been
installed or when an error has been encountered.</p> installed or when an error has been encountered.</p>
</div> </div>
<p id="footer">install &mdash; npm@1.1.32</p> <p id="footer">install &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -39,7 +39,7 @@ npm.commands.link('redis', cb) # link-install the package</code></pre>
<p>Now, any changes to the redis package will be reflected in <p>Now, any changes to the redis package will be reflected in
the package in the current working directory</p> the package in the current working directory</p>
</div> </div>
<p id="footer">link &mdash; npm@1.1.32</p> <p id="footer">link &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -32,7 +32,7 @@ config object.</p>
<p>For a list of all the available command-line configs, see <code>npm help config</code></p> <p>For a list of all the available command-line configs, see <code>npm help config</code></p>
</div> </div>
<p id="footer">load &mdash; npm@1.1.32</p> <p id="footer">load &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -59,7 +59,7 @@ project.</p>
This means that if a submodule a same dependency as a parent module, then the This means that if a submodule a same dependency as a parent module, then the
dependency will only be output once.</p> dependency will only be output once.</p>
</div> </div>
<p id="footer">ls &mdash; npm@1.1.32</p> <p id="footer">ls &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -24,7 +24,7 @@ npm.load(configObject, function (er, npm) {
<h2 id="VERSION">VERSION</h2> <h2 id="VERSION">VERSION</h2>
<p>1.1.32</p> <p>1.1.33</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2> <h2 id="DESCRIPTION">DESCRIPTION</h2>
@ -91,7 +91,7 @@ method names. Use the <code>npm.deref</code> method to find the real name.</p>
<pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre> <pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre>
</div> </div>
<p id="footer">npm &mdash; npm@1.1.32</p> <p id="footer">npm &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -19,7 +19,7 @@ currently outdated.</p>
<p>If the 'packages' parameter is left out, npm will check all packages.</p> <p>If the 'packages' parameter is left out, npm will check all packages.</p>
</div> </div>
<p id="footer">outdated &mdash; npm@1.1.32</p> <p id="footer">outdated &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -34,7 +34,7 @@ that is not implemented at this time.</p>
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> <ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div> </div>
<p id="footer">owner &mdash; npm@1.1.32</p> <p id="footer">owner &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -25,7 +25,7 @@ overwritten the second time.</p>
<p>If no arguments are supplied, then npm packs the current package folder.</p> <p>If no arguments are supplied, then npm packs the current package folder.</p>
</div> </div>
<p id="footer">pack &mdash; npm@1.1.32</p> <p id="footer">pack &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -21,7 +21,7 @@
<p>This function is not useful programmatically</p> <p>This function is not useful programmatically</p>
</div> </div>
<p id="footer">prefix &mdash; npm@1.1.32</p> <p id="footer">prefix &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -23,7 +23,7 @@
<p>Extraneous packages are packages that are not listed on the parent <p>Extraneous packages are packages that are not listed on the parent
package's dependencies list.</p> package's dependencies list.</p>
</div> </div>
<p id="footer">prune &mdash; npm@1.1.32</p> <p id="footer">prune &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -32,7 +32,7 @@ the registry. Overwrites when the "force" environment variable is set.</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../api/owner.html">owner(3)</a></li></ul> <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> </div>
<p id="footer">publish &mdash; npm@1.1.32</p> <p id="footer">publish &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -22,7 +22,7 @@ the new binary. If no 'packages' parameter is specify, every package will be reb
<p>See <code>npm help build</code></p> <p>See <code>npm help build</code></p>
</div> </div>
<p id="footer">rebuild &mdash; npm@1.1.32</p> <p id="footer">rebuild &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -27,7 +27,7 @@ in the <code>packages</code> parameter.</p>
<ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul> <ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
</div> </div>
<p id="footer">restart &mdash; npm@1.1.32</p> <p id="footer">restart &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -21,7 +21,7 @@
<p>This function is not useful programmatically.</p> <p>This function is not useful programmatically.</p>
</div> </div>
<p id="footer">root &mdash; npm@1.1.32</p> <p id="footer">root &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -29,7 +29,7 @@ assumed to be the command to run. All other elements are ignored.</p>
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../api/test.html">test(3)</a></li><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/restart.html">restart(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul> <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> </div>
<p id="footer">run-script &mdash; npm@1.1.32</p> <p id="footer">run-script &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -32,7 +32,7 @@ excluded term (the "searchexclude" config). The search is case insensitive
and doesn't try to read your mind (it doesn't do any verb tense matching or the and doesn't try to read your mind (it doesn't do any verb tense matching or the
like).</p> like).</p>
</div> </div>
<p id="footer">search &mdash; npm@1.1.32</p> <p id="footer">search &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -26,7 +26,7 @@ but the shrinkwrap file will still be written.</p>
<p>Finally, 'callback' is a function that will be called when the shrinkwrap has <p>Finally, 'callback' is a function that will be called when the shrinkwrap has
been saved.</p> been saved.</p>
</div> </div>
<p id="footer">shrinkwrap &mdash; npm@1.1.32</p> <p id="footer">shrinkwrap &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -19,7 +19,7 @@
<p>npm can run tests on multiple packages. Just specify multiple packages <p>npm can run tests on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p> in the <code>packages</code> parameter.</p>
</div> </div>
<p id="footer">start &mdash; npm@1.1.32</p> <p id="footer">start &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -19,7 +19,7 @@
<p>npm can run stop on multiple packages. Just specify multiple packages <p>npm can run stop on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p> in the <code>packages</code> parameter.</p>
</div> </div>
<p id="footer">stop &mdash; npm@1.1.32</p> <p id="footer">stop &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
<ul><li>npm help json</li><li>git help submodule</li></ul> <ul><li>npm help json</li><li>git help submodule</li></ul>
</div> </div>
<p id="footer">submodule &mdash; npm@1.1.32</p> <p id="footer">submodule &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -29,7 +29,7 @@ parameter is missing or falsey (empty), the default froom the config will be
used. For more information about how to set this config, check 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> <code>man 3 npm-config</code> for programmatic usage or <code>man npm-config</code> for cli usage.</p>
</div> </div>
<p id="footer">tag &mdash; npm@1.1.32</p> <p id="footer">tag &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -22,7 +22,7 @@ true.</p>
<p>npm can run tests on multiple packages. Just specify multiple packages <p>npm can run tests on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p> in the <code>packages</code> parameter.</p>
</div> </div>
<p id="footer">test &mdash; npm@1.1.32</p> <p id="footer">test &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -22,7 +22,7 @@ the name of a package to be uninstalled.</p>
<p>Finally, 'callback' is a function that will be called when all packages have been <p>Finally, 'callback' is a function that will be called when all packages have been
uninstalled or when an error has been encountered.</p> uninstalled or when an error has been encountered.</p>
</div> </div>
<p id="footer">uninstall &mdash; npm@1.1.32</p> <p id="footer">uninstall &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -26,7 +26,7 @@ is what is meant.</p>
<p>If no version is specified, or if all versions are removed then <p>If no version is specified, or if all versions are removed then
the root package entry is removed from the registry entirely.</p> the root package entry is removed from the registry entirely.</p>
</div> </div>
<p id="footer">unpublish &mdash; npm@1.1.32</p> <p id="footer">unpublish &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -18,7 +18,7 @@
<p>The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.</p> <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> </div>
<p id="footer">update &mdash; npm@1.1.32</p> <p id="footer">update &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -24,7 +24,7 @@ fail if the repo is not clean.</p>
parameter. The difference, however, is this function will fail if it does 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> not have exactly one element. The only element should be a version number.</p>
</div> </div>
<p id="footer">version &mdash; npm@1.1.32</p> <p id="footer">version &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -99,7 +99,7 @@ the field name.</p>
<p>corresponding to the list of fields selected.</p> <p>corresponding to the list of fields selected.</p>
</div> </div>
<p id="footer">view &mdash; npm@1.1.32</p> <p id="footer">view &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -21,7 +21,7 @@
<p>This function is not useful programmatically</p> <p>This function is not useful programmatically</p>
</div> </div>
<p id="footer">whoami &mdash; npm@1.1.32</p> <p id="footer">whoami &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -261,7 +261,7 @@ will no doubt tell you to put the output in a gist or email.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul> <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> </div>
<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.1.32</p> <p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -39,7 +39,7 @@ authorize on a new machine.</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li></ul> <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> </div>
<p id="footer">adduser &mdash; npm@1.1.32</p> <p id="footer">adduser &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -20,7 +20,7 @@
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">bin &mdash; npm@1.1.32</p> <p id="footer">bin &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -36,7 +36,7 @@ config param.</p>
<ul><li><a href="../doc/docs.html">docs(1)</a></li><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul> <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> </div>
<p id="footer">bugs &mdash; npm@1.1.32</p> <p id="footer">bugs &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -25,7 +25,7 @@ A folder containing a <code>package.json</code> file in its root.</li></ul>
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul> <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> </div>
<p id="footer">build &mdash; npm@1.1.32</p> <p id="footer">build &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -20,7 +20,7 @@ install packages into the local space.</p>
<ul><li><a href="../doc/install.html">install(1)</a></li></ul> <ul><li><a href="../doc/install.html">install(1)</a></li></ul>
</div> </div>
<p id="footer">bundle &mdash; npm@1.1.32</p> <p id="footer">bundle &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -66,7 +66,7 @@ they do not make an HTTP request to the registry.</p>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li></ul> <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> </div>
<p id="footer">cache &mdash; npm@1.1.32</p> <p id="footer">cache &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -65,7 +65,7 @@
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul> <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul>
</div> </div>
<p id="footer">changelog &mdash; npm@1.1.32</p> <p id="footer">changelog &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -180,7 +180,7 @@ set to anything."</p>
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul> <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> </div>
<p id="footer">coding-style &mdash; npm@1.1.32</p> <p id="footer">coding-style &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -33,7 +33,7 @@ completions based on the arguments.</p>
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul> <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> </div>
<p id="footer">completion &mdash; npm@1.1.32</p> <p id="footer">completion &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -176,6 +176,24 @@ to trust only that specific signing authority.</p>
<p>The location of npm's cache directory. See <code><a href="../doc/cache.html">cache(1)</a></code></p> <p>The location of npm's cache directory. See <code><a href="../doc/cache.html">cache(1)</a></code></p>
<h3 id="cache-lock-stale">cache-lock-stale</h3>
<ul><li>Default: 60000 (1 minute)</li><li>Type: Number</li></ul>
<p>The number of ms before cache folder lockfiles are considered stale.</p>
<h3 id="cache-lock-retries">cache-lock-retries</h3>
<ul><li>Default: 10</li><li>Type: Number</li></ul>
<p>Number of times to retry to acquire a lock on cache folder lockfiles.</p>
<h3 id="cache-lock-wait">cache-lock-wait</h3>
<ul><li>Default: 10000 (10 seconds)</li><li>Type: Number</li></ul>
<p>Number of ms to wait for cache lock files to expire.</p>
<h3 id="cache-max">cache-max</h3> <h3 id="cache-max">cache-max</h3>
<ul><li>Default: Infinity</li><li>Type: Number</li></ul> <ul><li>Default: Infinity</li><li>Type: Number</li></ul>
@ -239,6 +257,14 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
<p>The command to run for <code>npm edit</code> or <code>npm config edit</code>.</p> <p>The command to run for <code>npm edit</code> or <code>npm config edit</code>.</p>
<h3 id="engine-strict">engine-strict</h3>
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
<p>If set to true, then npm will stubbornly refuse to install (or even
consider installing) any package that claims to not be compatible with
the current Node.js version.</p>
<h3 id="force">force</h3> <h3 id="force">force</h3>
<ul><li>Default: false</li><li>Type: Boolean</li></ul> <ul><li>Default: false</li><li>Type: Boolean</li></ul>
@ -247,6 +273,34 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
<ul><li>lifecycle script failure does not block progress.</li><li>publishing clobbers previously published versions.</li><li>skips cache when requesting from the registry.</li><li>prevents checks against clobbering non-npm files.</li></ul> <ul><li>lifecycle script failure does not block progress.</li><li>publishing clobbers previously published versions.</li><li>skips cache when requesting from the registry.</li><li>prevents checks against clobbering non-npm files.</li></ul>
<h3 id="fetch-retries">fetch-retries</h3>
<ul><li>Default: 2</li><li>Type: Number</li></ul>
<p>The "retries" config for the <code>retry</code> module to use when fetching
packages from the registry.</p>
<h3 id="fetch-retry-factor">fetch-retry-factor</h3>
<ul><li>Default: 10</li><li>Type: Number</li></ul>
<p>The "factor" config for the <code>retry</code> module to use when fetching
packages.</p>
<h3 id="fetch-retry-mintimeout">fetch-retry-mintimeout</h3>
<ul><li>Default: 10000 (10 seconds)</li><li>Type: Number</li></ul>
<p>The "minTimeout" config for the <code>retry</code> module to use when fetching
packages.</p>
<h3 id="fetch-retry-maxtimeout">fetch-retry-maxtimeout</h3>
<ul><li>Default: 60000 (1 minute)</li><li>Type: Number</li></ul>
<p>The "maxTimeout" config for the <code>retry</code> module to use when fetching
packages.</p>
<h3 id="git">git</h3> <h3 id="git">git</h3>
<ul><li>Default: <code>"git"</code></li><li>Type: String</li></ul> <ul><li>Default: <code>"git"</code></li><li>Type: String</li></ul>
@ -681,7 +735,7 @@ then answer "no" to any prompt.</p>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul> <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
</div> </div>
<p id="footer">config &mdash; npm@1.1.32</p> <p id="footer">config &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -29,7 +29,7 @@ something like this:</p>
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> <ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div> </div>
<p id="footer">deprecate &mdash; npm@1.1.32</p> <p id="footer">deprecate &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -160,7 +160,7 @@ from a fresh checkout.</p>
<ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> <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> </div>
<p id="footer">developers &mdash; npm@1.1.32</p> <p id="footer">developers &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -80,7 +80,7 @@ license statement)</li><li>Illegal content.</li></ol>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul> <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
</div> </div>
<p id="footer">disputes &mdash; npm@1.1.32</p> <p id="footer">disputes &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -37,7 +37,7 @@ config param.</p>
<ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul> <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> </div>
<p id="footer">docs &mdash; npm@1.1.32</p> <p id="footer">docs &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -37,7 +37,7 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/explore.html">explore(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">edit &mdash; npm@1.1.32</p> <p id="footer">edit &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -40,7 +40,7 @@ Windows</li><li>Type: path</li></ul>
<ul><li><a href="../doc/submodule.html">submodule(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/edit.html">edit(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul> <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> </div>
<p id="footer">explore &mdash; npm@1.1.32</p> <p id="footer">explore &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -241,7 +241,7 @@ We'll have someone kick it or something.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul> <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> </div>
<p id="footer">faq &mdash; npm@1.1.32</p> <p id="footer">faq &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -205,7 +205,7 @@ cannot be found elsewhere. See <code><a href="../doc/json.html">json(1)</a></co
<ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li></ul> <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> </div>
<p id="footer">folders &mdash; npm@1.1.32</p> <p id="footer">folders &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -38,7 +38,7 @@ where the terms were found in the documentation.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li></ul> <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> </div>
<p id="footer">help-search &mdash; npm@1.1.32</p> <p id="footer">help-search &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -36,7 +36,7 @@ matches are equivalent to specifying a topic name.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/help-search.html">help-search(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul> <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> </div>
<p id="footer">help &mdash; npm@1.1.32</p> <p id="footer">help &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -384,7 +384,7 @@
<p> Display npm username</p> <p> Display npm username</p>
</div> </div>
<p id="footer">index &mdash; npm@1.1.32</p> <p id="footer">index &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -29,7 +29,7 @@ without a really good reason to do so.</p>
<ul><li><a href="https://github.com/isaacs/init-package-json">https://github.com/isaacs/init-package-json</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/version.html">version(1)</a></li></ul> <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> </div>
<p id="footer">init &mdash; npm@1.1.32</p> <p id="footer">init &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -133,7 +133,7 @@ affects a real use-case, it will be investigated.</p>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/shrinkwrap.html">shrinkwrap(1)</a></li></ul> <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> </div>
<p id="footer">install &mdash; npm@1.1.32</p> <p id="footer">install &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -425,8 +425,7 @@ if (foo) {
<h2 id="engines">engines</h2> <h2 id="engines">engines</h2>
<p>You can specify the version of <p>You can specify the version of node that your stuff works on:</p>
node that your stuff works on:</p>
<pre><code>{ "engines" : { "node" : "&gt;=0.1.27 &lt;0.1.30" } }</code></pre> <pre><code>{ "engines" : { "node" : "&gt;=0.1.27 &lt;0.1.30" } }</code></pre>
@ -442,6 +441,22 @@ are capable of properly installing your program. For example:</p>
<pre><code>{ "engines" : { "npm" : "~1.0.20" } }</code></pre> <pre><code>{ "engines" : { "npm" : "~1.0.20" } }</code></pre>
<p>Note that, unless the user has set the <code>engine-strict</code> config flag, this
field is advisory only.</p>
<h2 id="engineStrict">engineStrict</h2>
<p>If you are sure that your module will <em>definitely not</em> run properly on
versions of Node/npm other than those specified in the <code>engines</code> hash,
then you can set <code>"engineStrict": true</code> in your package.json file.
This will override the user's <code>engine-strict</code> config setting.</p>
<p>Please do not do this unless you are really very very sure. If your
engines hash is something overly restrictive, you can quite easily and
inadvertently lock yourself into obscurity and prevent your users from
updating to new versions of Node. Consider this choice carefully. If
people abuse it, it will be removed in a future version of npm.</p>
<h2 id="os">os</h2> <h2 id="os">os</h2>
<p>You can specify which operating systems your <p>You can specify which operating systems your
@ -509,7 +524,7 @@ overridden.</p>
<ul><li><a href="../doc/semver.html">semver(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/version.html">version(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li></ul> <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> </div>
<p id="footer">json &mdash; npm@1.1.32</p> <p id="footer">json &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -58,7 +58,7 @@ installation target into your project's <code>node_modules</code> folder.</p>
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">link &mdash; npm@1.1.32</p> <p id="footer">link &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -58,7 +58,7 @@ project.</p>
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/update.html">update(1)</a></li></ul> <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> </div>
<p id="footer">list &mdash; npm@1.1.32</p> <p id="footer">list &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -14,7 +14,7 @@
<h2 id="VERSION">VERSION</h2> <h2 id="VERSION">VERSION</h2>
<p>1.1.32</p> <p>1.1.33</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2> <h2 id="DESCRIPTION">DESCRIPTION</h2>
@ -135,7 +135,7 @@ will no doubt tell you to put the output in a gist or email.</p>
<ul><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/index.html">index(1)</a></li><li><a href="../api/npm.html">npm(3)</a></li></ul> <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> </div>
<p id="footer">npm &mdash; npm@1.1.32</p> <p id="footer">npm &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -21,7 +21,7 @@ packages are currently outdated.</p>
<ul><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul> <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> </div>
<p id="footer">outdated &mdash; npm@1.1.32</p> <p id="footer">outdated &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -34,7 +34,7 @@ that is not implemented at this time.</p>
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul> <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> </div>
<p id="footer">owner &mdash; npm@1.1.32</p> <p id="footer">owner &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -29,7 +29,7 @@ overwritten the second time.</p>
<ul><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">pack &mdash; npm@1.1.32</p> <p id="footer">pack &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -20,7 +20,7 @@
<ul><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">prefix &mdash; npm@1.1.32</p> <p id="footer">prefix &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -25,7 +25,7 @@ package's dependencies list.</p>
<ul><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul> <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> </div>
<p id="footer">prune &mdash; npm@1.1.32</p> <p id="footer">prune &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -29,7 +29,7 @@ the registry. Overwrites when the "--force" flag is set.</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li></ul> <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> </div>
<p id="footer">publish &mdash; npm@1.1.32</p> <p id="footer">publish &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -25,7 +25,7 @@ the new binary.</p>
<ul><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul> <ul><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
</div> </div>
<p id="footer">rebuild &mdash; npm@1.1.32</p> <p id="footer">rebuild &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -97,7 +97,7 @@ ask for help on the <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul> <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> </div>
<p id="footer">registry &mdash; npm@1.1.32</p> <p id="footer">registry &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -58,7 +58,7 @@ modules. To track those down, you can do the following:</p>
<ul><li><a href="../doc/README.html">README</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li></ul> <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> </div>
<p id="footer">removing-npm &mdash; npm@1.1.32</p> <p id="footer">removing-npm &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -24,7 +24,7 @@ the "start" script.</p>
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> <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> </div>
<p id="footer">restart &mdash; npm@1.1.32</p> <p id="footer">restart &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -20,7 +20,7 @@
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">root &mdash; npm@1.1.32</p> <p id="footer">root &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -23,7 +23,7 @@ called directly, as well.</p>
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> <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> </div>
<p id="footer">run-script &mdash; npm@1.1.32</p> <p id="footer">run-script &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -177,7 +177,7 @@ will sudo the npm command in question.</li></ul>
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul> <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> </div>
<p id="footer">scripts &mdash; npm@1.1.32</p> <p id="footer">scripts &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -24,7 +24,7 @@ expression characters must be escaped or quoted in most shells.)</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/view.html">view(1)</a></li></ul> <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> </div>
<p id="footer">search &mdash; npm@1.1.32</p> <p id="footer">search &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -104,7 +104,7 @@ that satisfies the range, or null if none of them do.</li></ul>
<ul><li><a href="../doc/json.html">json(1)</a></li></ul> <ul><li><a href="../doc/json.html">json(1)</a></li></ul>
</div> </div>
<p id="footer">semver &mdash; npm@1.1.32</p> <p id="footer">semver &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -169,7 +169,7 @@ versions.</p>
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul> <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> </div>
<p id="footer">shrinkwrap &mdash; npm@1.1.32</p> <p id="footer">shrinkwrap &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -26,7 +26,7 @@ a vaguely positive way to show that you care.</p>
<ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul> <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> </div>
<p id="footer">star &mdash; npm@1.1.32</p> <p id="footer">star &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -20,7 +20,7 @@
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> <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> </div>
<p id="footer">start &mdash; npm@1.1.32</p> <p id="footer">start &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -20,7 +20,7 @@
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li></ul> <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> </div>
<p id="footer">stop &mdash; npm@1.1.32</p> <p id="footer">stop &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
<ul><li><a href="../doc/json.html">json(1)</a></li><li>git help submodule</li></ul> <ul><li><a href="../doc/json.html">json(1)</a></li><li>git help submodule</li></ul>
</div> </div>
<p id="footer">submodule &mdash; npm@1.1.32</p> <p id="footer">submodule &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -21,7 +21,7 @@
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">tag &mdash; npm@1.1.32</p> <p id="footer">tag &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -23,7 +23,7 @@ true.</p>
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> <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> </div>
<p id="footer">test &mdash; npm@1.1.32</p> <p id="footer">test &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -22,7 +22,7 @@ on its behalf.</p>
<ul><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">uninstall &mdash; npm@1.1.32</p> <p id="footer">uninstall &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -34,7 +34,7 @@ the root package entry is removed from the registry entirely.</p>
<ul><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul> <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> </div>
<p id="footer">unpublish &mdash; npm@1.1.32</p> <p id="footer">unpublish &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -23,7 +23,7 @@
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul> <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> </div>
<p id="footer">update &mdash; npm@1.1.32</p> <p id="footer">update &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -31,7 +31,7 @@ will use it as a commit message when creating a version commit.</p>
<ul><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/semver.html">semver(1)</a></li></ul> <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> </div>
<p id="footer">version &mdash; npm@1.1.32</p> <p id="footer">version &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -88,7 +88,7 @@ the field name.</p>
<ul><li><a href="../doc/search.html">search(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/docs.html">docs(1)</a></li></ul> <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> </div>
<p id="footer">view &mdash; npm@1.1.32</p> <p id="footer">view &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

View File

@ -20,7 +20,7 @@
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul> <ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
</div> </div>
<p id="footer">whoami &mdash; npm@1.1.32</p> <p id="footer">whoami &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

276
deps/npm/lib/cache.js vendored
View File

@ -1,6 +1,30 @@
// XXX lib/utils/tar.js and this file need to be rewritten. // XXX lib/utils/tar.js and this file need to be rewritten.
// URL-to-cache folder mapping:
// : -> !
// @ -> _
// http://registry.npmjs.org/foo/version -> cache/http!/...
//
/* /*
fetching a url:
1. Check for url in inFlightUrls. If present, add cb, and return.
2. create inFlightURL list
3. Acquire lock at {cache}/{sha(url)}.lock
retries = {cache-lock-retries, def=3}
stale = {cache-lock-stale, def=30000}
wait = {cache-lock-wait, def=100}
4. if lock can't be acquired, then fail
5. fetch url, clear lock, call cbs
cache folders:
1. urls: http!/server.com/path/to/thing
2. c:\path\to\thing: file!/c!/path/to/thing
3. /path/to/thing: file!/path/to/thing
4. git@ private: git_github.com!isaacs/npm
5. git://public: git!/github.com/isaacs/npm
6. git+blah:// git-blah!/server.com/foo/bar
adding a folder: adding a folder:
1. tar into tmp/random/package.tgz 1. tar into tmp/random/package.tgz
2. untar into tmp/random/contents/package, stripping one dir piece 2. untar into tmp/random/contents/package, stripping one dir piece
@ -49,6 +73,9 @@ var mkdir = require("mkdirp")
, fileCompletion = require("./utils/completion/file-completion.js") , fileCompletion = require("./utils/completion/file-completion.js")
, url = require("url") , url = require("url")
, chownr = require("chownr") , chownr = require("chownr")
, lockFile = require("lockfile")
, crypto = require("crypto")
, retry = require("retry")
cache.usage = "npm cache add <tarball file>" cache.usage = "npm cache add <tarball file>"
+ "\nnpm cache add <folder>" + "\nnpm cache add <folder>"
@ -238,10 +265,26 @@ function add (args, cb) {
default: default:
// if we have a name and a spec, then try name@spec // if we have a name and a spec, then try name@spec
// if not, then try just spec (which may try name@"" if not found) // if not, then try just spec (which may try name@"" if not found)
return name ? addNamed(name, spec, cb) : addLocal(spec, cb) if (name) {
addNamed(name, spec, cb)
} else {
addLocal(spec, cb)
}
} }
} }
function fetchAndShaCheck (u, tmp, shasum, cb) {
fetch(u, tmp, function (er, response) {
if (er) {
log.error("fetch failed", u)
return cb(er, response)
}
if (!shasum) return cb()
// validate that the url we just downloaded matches the expected shasum.
sha.check(tmp, shasum, cb)
})
}
// Only have a single download action at once for a given url // Only have a single download action at once for a given url
// additional calls stack the callbacks. // additional calls stack the callbacks.
var inFlightURLs = {} var inFlightURLs = {}
@ -255,29 +298,48 @@ function addRemoteTarball (u, shasum, name, cb_) {
if (iF.length > 1) return if (iF.length > 1) return
function cb (er, data) { function cb (er, data) {
var c unlock(u, function () {
while (c = iF.shift()) c(er, data) var c
delete inFlightURLs[u] while (c = iF.shift()) c(er, data)
delete inFlightURLs[u]
})
} }
log.verbose("addRemoteTarball", [u, shasum]) lock(u, function (er) {
var tmp = path.join(npm.tmp, Date.now()+"-"+Math.random(), "tmp.tgz")
mkdir(path.dirname(tmp), function (er) {
if (er) return cb(er) if (er) return cb(er)
fetch(u, tmp, function (er) {
if (er) { log.verbose("addRemoteTarball", [u, shasum])
log.error("fetch failed", u) var tmp = path.join(npm.tmp, Date.now()+"-"+Math.random(), "tmp.tgz")
return cb(er) mkdir(path.dirname(tmp), function (er) {
} if (er) return cb(er)
if (!shasum) return done() // Tuned to spread 3 attempts over about a minute.
// validate that the url we just downloaded matches the expected shasum. // See formula at <https://github.com/tim-kos/node-retry>.
sha.check(tmp, shasum, done) var operation = retry.operation
( { retries: npm.config.get("fetch-retries")
, factor: npm.config.get("fetch-retry-factor")
, minTimeout: npm.config.get("fetch-retry-mintimeout")
, maxTimeout: npm.config.get("fetch-retry-maxtimeout") })
operation.attempt(function (currentAttempt) {
log.info("retry", "fetch attempt " + currentAttempt
+ " at " + (new Date()).toLocaleTimeString())
fetchAndShaCheck(u, tmp, shasum, function (er, response) {
// Only retry on 408, 5xx or no `response`.
var statusCode = response && response.statusCode
var statusRetry = !statusCode || (statusCode === 408 || statusCode >= 500)
if (er && statusRetry && operation.retry(er)) {
log.info("retry", "will retry, error on last attempt: " + er)
return
}
done(er)
})
})
}) })
function done (er) {
if (er) return cb(er)
addLocalTarball(tmp, name, cb)
}
}) })
function done (er) {
if (er) return cb(er)
addLocalTarball(tmp, name, cb)
}
} }
// For now, this is kind of dumb. Just basically treat git as // For now, this is kind of dumb. Just basically treat git as
@ -292,48 +354,54 @@ function addRemoteGit (u, parsed, name, cb_) {
if (iF.length > 1) return if (iF.length > 1) return
function cb (er, data) { function cb (er, data) {
var c unlock(u, function () {
while (c = iF.shift()) c(er, data) var c
delete inFlightURLs[u] while (c = iF.shift()) c(er, data)
delete inFlightURLs[u]
})
} }
// figure out what we should check out. lock(u, function (er) {
var co = parsed.hash && parsed.hash.substr(1) || "master"
// git is so tricky!
// if the path is like ssh://foo:22/some/path then it works, but
// it needs the ssh://
// If the path is like ssh://foo:some/path then it works, but
// only if you remove the ssh://
u = u.replace(/^git\+/, "")
.replace(/#.*$/, "")
// ssh paths that are scp-style urls don't need the ssh://
if (parsed.pathname.match(/^\/?:/)) {
u = u.replace(/^ssh:\/\//, "")
}
log.verbose("addRemoteGit", [u, co])
var tmp = path.join(npm.tmp, Date.now()+"-"+Math.random())
mkdir(path.dirname(tmp), function (er) {
if (er) return cb(er) if (er) return cb(er)
exec( npm.config.get("git"), ["clone", u, tmp], null, false
, function (er, code, stdout, stderr) { // figure out what we should check out.
stdout = (stdout + "\n" + stderr).trim() var co = parsed.hash && parsed.hash.substr(1) || "master"
if (er) { // git is so tricky!
log.error("git clone " + u, stdout) // if the path is like ssh://foo:22/some/path then it works, but
return cb(er) // it needs the ssh://
} // If the path is like ssh://foo:some/path then it works, but
log.verbose("git clone "+u, stdout) // only if you remove the ssh://
exec( npm.config.get("git"), ["checkout", co], null, false, tmp u = u.replace(/^git\+/, "")
.replace(/#.*$/, "")
// ssh paths that are scp-style urls don't need the ssh://
if (parsed.pathname.match(/^\/?:/)) {
u = u.replace(/^ssh:\/\//, "")
}
log.verbose("addRemoteGit", [u, co])
var tmp = path.join(npm.tmp, Date.now()+"-"+Math.random())
mkdir(path.dirname(tmp), function (er) {
if (er) return cb(er)
exec( npm.config.get("git"), ["clone", u, tmp], null, false
, function (er, code, stdout, stderr) { , function (er, code, stdout, stderr) {
stdout = (stdout + "\n" + stderr).trim() stdout = (stdout + "\n" + stderr).trim()
if (er) { if (er) {
log.error("git checkout " + co, stdout) log.error("git clone " + u, stdout)
return cb(er) return cb(er)
} }
log.verbose("git checkout " + co, stdout) log.verbose("git clone "+u, stdout)
addLocalDirectory(tmp, cb) exec( npm.config.get("git"), ["checkout", co], null, false, tmp
, function (er, code, stdout, stderr) {
stdout = (stdout + "\n" + stderr).trim()
if (er) {
log.error("git checkout " + co, stdout)
return cb(er)
}
log.verbose("git checkout " + co, stdout)
addLocalDirectory(tmp, cb)
})
}) })
}) })
}) })
@ -343,8 +411,10 @@ function addRemoteGit (u, parsed, name, cb_) {
// only have one request in flight for a given // only have one request in flight for a given
// name@blah thing. // name@blah thing.
var inFlightNames = {} var inFlightNames = {}
function addNamed (name, x, cb_) { function addNamed (name, x, data, cb_) {
if (typeof cb_ !== "function") cb_ = data, data = null
log.verbose("addNamed", [name, x]) log.verbose("addNamed", [name, x])
var k = name + "@" + x var k = name + "@" + x
if (!inFlightNames[k]) inFlightNames[k] = [] if (!inFlightNames[k]) inFlightNames[k] = []
var iF = inFlightNames[k] var iF = inFlightNames[k]
@ -352,19 +422,27 @@ function addNamed (name, x, cb_) {
if (iF.length > 1) return if (iF.length > 1) return
function cb (er, data) { function cb (er, data) {
var c unlock(k, function () {
while (c = iF.shift()) c(er, data) var c
delete inFlightNames[k] while (c = iF.shift()) c(er, data)
delete inFlightNames[k]
})
} }
log.verbose("addNamed", [semver.valid(x), semver.validRange(x)]) log.verbose("addNamed", [semver.valid(x), semver.validRange(x)])
return ( null !== semver.valid(x) ? addNameVersion lock(k, function (er, fd) {
: null !== semver.validRange(x) ? addNameRange if (er) return cb(er)
: addNameTag
)(name, x, cb) var fn = ( null !== semver.valid(x) ? addNameVersion
: null !== semver.validRange(x) ? addNameRange
: addNameTag
)
fn(name, x, data, cb)
})
} }
function addNameTag (name, tag, cb) { function addNameTag (name, tag, data, cb) {
if (typeof cb !== "function") cb = data, data = null
log.info("addNameTag", [name, tag]) log.info("addNameTag", [name, tag])
var explicit = true var explicit = true
if (!tag) { if (!tag) {
@ -378,10 +456,10 @@ function addNameTag (name, tag, cb) {
if (data["dist-tags"] && data["dist-tags"][tag] if (data["dist-tags"] && data["dist-tags"][tag]
&& data.versions[data["dist-tags"][tag]]) { && data.versions[data["dist-tags"][tag]]) {
var ver = data["dist-tags"][tag] var ver = data["dist-tags"][tag]
return addNameVersion(name, ver, data.versions[ver], cb) return addNamed(name, ver, data.versions[ver], cb)
} }
if (!explicit && Object.keys(data.versions).length) { if (!explicit && Object.keys(data.versions).length) {
return addNameRange(name, "*", data, cb) return addNamed(name, "*", data, cb)
} }
return cb(installTargetsError(tag, data)) return cb(installTargetsError(tag, data))
}) })
@ -390,12 +468,14 @@ function addNameTag (name, tag, cb) {
function engineFilter (data) { function engineFilter (data) {
var npmv = npm.version var npmv = npm.version
, nodev = npm.config.get("node-version") , nodev = npm.config.get("node-version")
, strict = npm.config.get("engine-strict")
if (!nodev || npm.config.get("force")) return data if (!nodev || npm.config.get("force")) return data
Object.keys(data.versions || {}).forEach(function (v) { Object.keys(data.versions || {}).forEach(function (v) {
var eng = data.versions[v].engines var eng = data.versions[v].engines
if (!eng) return if (!eng) return
if (!strict && !data.versions[v].engineStrict) return
if (eng.node && !semver.satisfies(nodev, eng.node) if (eng.node && !semver.satisfies(nodev, eng.node)
|| eng.npm && !semver.satisfies(npmv, eng.npm)) { || eng.npm && !semver.satisfies(npmv, eng.npm)) {
delete data.versions[v] delete data.versions[v]
@ -438,12 +518,12 @@ function addNameRange (name, range, data, cb) {
function next_ () { function next_ () {
log.silly("addNameRange", "versions" log.silly("addNameRange", "versions"
, [data.name, Object.keys(data.versions)]) , [data.name, Object.keys(data.versions || {})])
// if the tagged version satisfies, then use that. // if the tagged version satisfies, then use that.
var tagged = data["dist-tags"][npm.config.get("tag")] var tagged = data["dist-tags"][npm.config.get("tag")]
if (tagged && data.versions[tagged] && semver.satisfies(tagged, range)) { if (tagged && data.versions[tagged] && semver.satisfies(tagged, range)) {
return addNameVersion(name, tagged, data.versions[tagged], cb) return addNamed(name, tagged, data.versions[tagged], cb)
} }
// find the max satisfying version. // find the max satisfying version.
@ -454,7 +534,7 @@ function addNameRange (name, range, data, cb) {
// if we don't have a registry connection, try to see if // if we don't have a registry connection, try to see if
// there's a cached copy that will be ok. // there's a cached copy that will be ok.
addNameVersion(name, ms, data.versions[ms], cb) addNamed(name, ms, data.versions[ms], cb)
} }
} }
@ -573,24 +653,29 @@ function addLocal (p, name, cb_) {
if (typeof cb_ !== "function") cb_ = name, name = "" if (typeof cb_ !== "function") cb_ = name, name = ""
function cb (er, data) { function cb (er, data) {
if (er) { unlock(p, function () {
// if it doesn't have a / in it, it might be a if (er) {
// remote thing. // if it doesn't have a / in it, it might be a
if (p.indexOf("/") === -1 && p.charAt(0) !== "." // remote thing.
&& (process.platform !== "win32" || p.indexOf("\\") === -1)) { if (p.indexOf("/") === -1 && p.charAt(0) !== "."
return addNamed(p, "", cb_) && (process.platform !== "win32" || p.indexOf("\\") === -1)) {
return addNamed(p, "", cb_)
}
log.error("addLocal", "Could not install %s", p)
return cb_(er)
} }
log.error("addLocal", "Could not install %s", p) return cb_(er, data)
return cb_(er) })
}
return cb_(er, data)
} }
// figure out if this is a folder or file. lock(p, function (er) {
fs.stat(p, function (er, s) {
if (er) return cb(er) if (er) return cb(er)
if (s.isDirectory()) addLocalDirectory(p, name, cb) // figure out if this is a folder or file.
else addLocalTarball(p, name, cb) fs.stat(p, function (er, s) {
if (er) return cb(er)
if (s.isDirectory()) addLocalDirectory(p, name, cb)
else addLocalTarball(p, name, cb)
})
}) })
} }
@ -847,3 +932,32 @@ function deprCheck (data) {
log.warn("deprecated", "%s: %s", data._id, data.deprecated) log.warn("deprecated", "%s: %s", data._id, data.deprecated)
} }
} }
function lockFileName (u) {
var c = u.replace(/[^a-zA-Z0-9]+/g, '-')
, h = crypto.createHash("sha1").update(u).digest("hex")
return path.resolve(npm.config.get("cache"), h + "-" + c + ".lock")
}
var madeCache = false
function lock (u, cb) {
// the cache dir needs to exist already for this.
if (madeCache) then()
else mkdir(npm.config.get("cache"), function (er) {
if (er) return cb(er)
madeCache = true
then()
})
function then () {
var opts = { stale: npm.config.get("cache-lock-stale")
, retries: npm.config.get("cache-lock-retries")
, wait: npm.config.get("cache-lock-wait") }
var lf = lockFileName(u)
log.verbose("lock", u, lf)
lockFile.lock(lf, opts, cb)
}
}
function unlock (u, cb) {
lockFile.unlock(lockFileName(u), cb)
}

View File

@ -710,15 +710,21 @@ function checkEngine (target, cb) {
var npmv = npm.version var npmv = npm.version
, force = npm.config.get("force") , force = npm.config.get("force")
, nodev = force ? null : npm.config.get("node-version") , nodev = force ? null : npm.config.get("node-version")
, strict = npm.config.get("engine-strict") || target.engineStrict
, eng = target.engines , eng = target.engines
if (!eng) return cb() if (!eng) return cb()
if (nodev && eng.node && !semver.satisfies(nodev, eng.node) if (nodev && eng.node && !semver.satisfies(nodev, eng.node)
|| eng.npm && !semver.satisfies(npmv, eng.npm)) { || eng.npm && !semver.satisfies(npmv, eng.npm)) {
var er = new Error("Unsupported") if (strict) {
er.code = "ENOTSUP" var er = new Error("Unsupported")
er.required = eng er.code = "ENOTSUP"
er.pkgid = target._id er.required = eng
return cb(er) er.pkgid = target._id
return cb(er)
} else {
log.warn( "engine", "%s: wanted: %j (current: %j)"
, target._id, eng, {node: nodev, npm: npm.version} )
}
} }
return cb() return cb()
} }

21
deps/npm/lib/npm.js vendored
View File

@ -57,13 +57,13 @@ try {
npm.version = j.version npm.version = j.version
npm.nodeVersionRequired = j.engines.node npm.nodeVersionRequired = j.engines.node
if (!semver.satisfies(process.version, j.engines.node)) { if (!semver.satisfies(process.version, j.engines.node)) {
log.error("unsupported version", ["" log.warn("unsupported version", [""
,"npm requires node version: "+j.engines.node ,"npm requires node version: "+j.engines.node
,"And you have: "+process.version ,"And you have: "+process.version
,"which is not satisfactory." ,"which is not satisfactory."
,"" ,""
,"Bad things will likely happen. You have been warned." ,"Bad things will likely happen. You have been warned."
,""].join("\n")) ,""].join("\n"))
} }
} catch (ex) { } catch (ex) {
try { try {
@ -98,6 +98,7 @@ var commandCache = {}
, "apihelp" : "help" , "apihelp" : "help"
, "login": "adduser" , "login": "adduser"
, "add-user": "adduser" , "add-user": "adduser"
, "tst": "test"
} }
, aliasNames = Object.keys(aliases) , aliasNames = Object.keys(aliases)
@ -287,6 +288,10 @@ function load (npm, conf, cb) {
, E404: npm.E404 , E404: npm.E404
, EPUBLISHCONFLICT: npm.EPUBLISHCONFLICT , EPUBLISHCONFLICT: npm.EPUBLISHCONFLICT
, log: log , log: log
, retries: npm.config.get("fetch-retries")
, retryFactor: npm.config.get("fetch-retry-factor")
, retryMinTimeout: npm.config.get("fetch-retry-mintimeout")
, retryMaxTimeout: npm.config.get("fetch-retry-maxtimeout")
}) })
var umask = parseInt(conf.umask, 8) var umask = parseInt(conf.umask, 8)
@ -443,7 +448,7 @@ Object.defineProperty(npm, "cache",
var tmpFolder var tmpFolder
Object.defineProperty(npm, "tmp", Object.defineProperty(npm, "tmp",
{ get : function () { { get : function () {
if (!tmpFolder) tmpFolder = "npm-"+Date.now() if (!tmpFolder) tmpFolder = "npm-" + process.pid
return path.resolve(npm.config.get("tmp"), tmpFolder) return path.resolve(npm.config.get("tmp"), tmpFolder)
} }
, enumerable : true , enumerable : true

Some files were not shown because too many files have changed in this diff Show More