diff --git a/ChangeLog b/ChangeLog index 9d34c82b898..06a9a4ff2c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,29 @@ -2011.11.25, Version 0.6.3 (stable) +2011.12.02, Version 0.6.4 (stable), 9170077f13e5e5475b23d1d3c2e7f69bfe139727 + +* doc improvements (Kyle Young, Tim Oxley, Roman Shtylman, Mathias Bynens) + +* upgrade bundled npm (Isaac Schlueter) + +* polish Windows installer (Igor Zinkovsky, Isaac Schlueter) + +* punycode: upgrade to v0.2.1 (Mathias Bynens) + +* build: add –without-npm flag to configure script + +* sys: deprecate module some more, print stack trace if NODE_DEBUG=sys + +* cli: add -p switch, prints result of –eval + +* #1997: fix Blowfish ECB encryption and decryption (Ingmar Runge) + +* #2223: fix socket ‘close’ event being emitted twice + +* #2224: fix RSS memory usage > 4 GB reporting (Russ Bradberry) + +* #2225: fix util.inspect() object stringification bug (Nathan Rajlich) + + +2011.11.25, Version 0.6.3 (stable), b159c6d62e5756d3f8847419d29c6959ea288b56 * #2083 Land NPM in Node. It is included in packages/installers and installed on `make install`. @@ -26,27 +51,27 @@ 2011.11.18, Version 0.6.2 (stable), a4402f0b2e410b19375a1d5c5fb7fe7f66f3c7f8 - * doc improvements (Artur Adib, Trevor Burnham, Ryan Emery, Trent Mick) +* doc improvements (Artur Adib, Trevor Burnham, Ryan Emery, Trent Mick) - * timers: remember extra setTimeout() arguments when timeout==0 +* timers: remember extra setTimeout() arguments when timeout==0 - * punycode: use Mathias Bynens's punycode library, it's more compliant +* punycode: use Mathias Bynens's punycode library, it's more compliant - * repl: improved tab completion (Ryan Emery) +* repl: improved tab completion (Ryan Emery) - * buffer: fix range checks in .writeInt() functions (Lukasz Walukiewicz) +* buffer: fix range checks in .writeInt() functions (Lukasz Walukiewicz) - * tls: make cipher list configurable +* tls: make cipher list configurable - * addons: make Buffer and ObjectWrap visible to Windows add-ons (Bert Belder) +* addons: make Buffer and ObjectWrap visible to Windows add-ons (Bert Belder) - * crypto: add PKCS#1 a.k.a RSA public key verification support +* crypto: add PKCS#1 a.k.a RSA public key verification support - * windows: fix stdout writes when redirected to nul +* windows: fix stdout writes when redirected to nul - * sunos: fix build on Solaris and Illumos +* sunos: fix build on Solaris and Illumos - * Upgrade V8 to 3.6.6.8 +* Upgrade V8 to 3.6.6.8 2011.11.11, Version 0.6.1 (stable), 170f2addb2dd0c625bc4a6d461e89a31ad68b79b diff --git a/deps/npm/.gitignore b/deps/npm/.gitignore deleted file mode 100644 index e3424f5f6df..00000000000 --- a/deps/npm/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -*.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 -html/api/*.html -html/doc/*.html -man/ -doc/*/index.md -./npmrc diff --git a/deps/npm/.gitmodules b/deps/npm/.gitmodules index 7faf2ae1537..c705633663a 100644 --- a/deps/npm/.gitmodules +++ b/deps/npm/.gitmodules @@ -33,7 +33,7 @@ url = https://github.com/isaacs/node-which.git [submodule "node_modules/request"] path = node_modules/request - url = https://github.com/isaacs/request.git + url = https://github.com/mikeal/request.git [submodule "node_modules/tar"] path = node_modules/tar url = git://github.com/isaacs/node-tar.git diff --git a/deps/npm/.npmignore b/deps/npm/.npmignore index c0a5f571a17..7ba078e516c 100644 --- a/deps/npm/.npmignore +++ b/deps/npm/.npmignore @@ -9,3 +9,4 @@ node_modules/ronn node_modules/.bin npm-debug.log ./npmrc +.gitignore diff --git a/deps/npm/CHANGES b/deps/npm/CHANGES deleted file mode 120000 index 6b73a616159..00000000000 --- a/deps/npm/CHANGES +++ /dev/null @@ -1 +0,0 @@ -doc/cli/changelog.md \ No newline at end of file diff --git a/deps/npm/README.md b/deps/npm/README.md index df1fdfc25c5..d5e285ab0e6 100644 --- a/deps/npm/README.md +++ b/deps/npm/README.md @@ -9,91 +9,75 @@ Much more info available via `npm help` once it's installed. ## IMPORTANT -**You need node v0.4 or higher to run this program.** +**You need node v0.6 or higher to run this program.** To install an old **and unsupported** version of npm that works on node 0.3 and prior, clone the git repo and dig through the old tags and branches. -## Simple Install (Unix only, sorry) +## Super Easy Install -To install npm with one command, do this: - - curl http://npmjs.org/install.sh | sh +npm comes with node now. -To skip the npm 0.x cleanup, do this: - - curl http://npmjs.org/install.sh | clean=no sh +### Windows Computers -To say "yes" to the 0.x cleanup, but skip the prompt: +Get the MSI. npm is in it. - curl http://npmjs.org/install.sh | clean=yes sh +### Apple Macintosh Computers -If you get permission errors, see the section below, entitled -"Permission Errors on Installation". +Get the pkg. npm is in it. -## Installing on Windows -- Experimental +### Other Sorts of Unices -Yes, this sucks. A convenient one-liner is coming soon. +Run `make install`. npm will be installed with node. -### Step 1: Drop the node.exe somewhere +If you want a more fancy pants install (a different version, customized +paths, etc.) then read on. -You will probably need the latest version of node, **at least** version -`0.5.8` or higher. You can get it from -. +## Fancy Install (Unix) -### Step 2 (optional): Update the %PATH% environment variable +To install npm with one command, do this: -Update your `%PATH%` environment variable in System Properties: -Advanced: Environment, so that it includes the `bin` folder you chose. -The entries are separated by semicolons. + curl http://npmjs.org/install.sh | sh -You *may* be able to do this from the command line using `set` and -`setx`. `cd` into the `bin` folder you created in step 1, and do this: +To skip the npm 0.x cleanup, do this: - set path=%PATH%;%CD% - setx path "%PATH%" + curl http://npmjs.org/install.sh | clean=no sh -This will have the added advantage that you'll be able to simply type -`npm` or `node` in any project folder to access those commands. +To say "yes" to the 0.x cleanup, but skip the prompt: -If you decide not to update the PATH, and put the node.exe file in -`C:\node\node.exe`, then the npm executable will end up `C:\node\npm.cmd`, -and you'll have to type `C:\node\npm ` to use it. + curl http://npmjs.org/install.sh | clean=yes sh -### Step 3: Install git +If you get permission errors, you'll need to **run** the script as root. +(Note, just putting `sudo` in front of the `curl` will **fetch** the script +as root.) -If you don't already have git, -[install it](https://git.wiki.kernel.org/index.php/MSysGit:InstallMSysGit). +### Slightly Fancier -Run `git --version` to make sure that it's at least version 1.7.6. +You can set any npm configuration params with that script: -### Step 4: install npm + curl http://npmjs.org/install.sh | npm_config_prefix=/some/path sh -Lastly, **after** node.exe, git, and your %PATH% have *all* been set up -properly, install npm itself: +Or, you can run it in uber-debuggery mode: - git config --system http.sslcainfo /bin/curl-ca-bundle.crt - git clone --recursive git://github.com/isaacs/npm.git - cd npm - node cli.js install npm -gf + curl http://npmjs.org/install.sh | npm_debug=1 sh -## Permission Errors (`EACCES` or `EACCESS`) on Installation +### Even Fancier -On Windows, you may need to run the command prompt in elevated -permission mode. (Right-click on cmd.exe, Run as Administrator.) +Get the code with git. Use `make` to build the docs and do other stuff. +If you plan on hacking on npm, `make link` is your friend. -On Unix, you may need to run as root, or use `sudo`. +If you've got the npm source code, you can also semi-permanently set +arbitrary config keys using the `./configure --key=val ...`, and then +run npm commands by doing `node cli.js `. (This is helpful +for testing, or running stuff without actually installing npm itself.) -**Note**: You would need to `sudo` the `sh`, **not** the `curl`. Fetching -stuff from the internet typically doesn't require elevated permissions. -Running it might. +## Fancy Windows Install -I highly recommend that you first download the file, and make sure that -it is what you expect, and *then* run it. +You can download a zip file from , and unpack it +in the same folder where node.exe lives. - curl -O http://npmjs.org/install.sh - # inspect file.. - sudo sh install.sh +If that's not fancy enough for you, then you can fetch the code with +git, and mess with it directly. ## Installing on Cygwin @@ -116,12 +100,6 @@ terminal, then you've already got the code. Just do: and npm will install itself. -If you don't have make, and don't have curl or git, and ALL you have is -this code and node, you can probably do this: - - git submodule update --init --recursive - sudo node ./cli.js install -g - Note that github tarballs **do not contain submodules**, so those won't work. You'll have to also fetch the appropriate submodules listed in the .gitmodules file. @@ -218,8 +196,7 @@ help config` to learn about all the options you can set there. ## More Docs Check out the [docs](http://npmjs.org/doc/), -especially the -[faq](http://npmjs.org/doc/faq.html). +especially the [faq](http://npmjs.org/doc/faq.html). You can use the `npm help` command to read any of them. @@ -266,6 +243,21 @@ process for published modules. If this concerns you, inspect the source before using packages. +## BUGS + +When you find issues, please report them: + +* web: + +* email: + + +Be sure to include *all* of the output from the npm command that didn't work +as expected. The `npm-debug.log` file is also helpful to provide. + +You can also look for isaacs in #node.js on irc://irc.freenode.net. He +will no doubt tell you to put the output in a gist or email. + ## SEE ALSO * npm(1) diff --git a/deps/npm/doc/api/author.md b/deps/npm/doc/api/author.md deleted file mode 120000 index b7a53cb66be..00000000000 --- a/deps/npm/doc/api/author.md +++ /dev/null @@ -1 +0,0 @@ -owner.md \ No newline at end of file diff --git a/deps/npm/doc/api/find.md b/deps/npm/doc/api/find.md deleted file mode 120000 index 5b3debb8f1d..00000000000 --- a/deps/npm/doc/api/find.md +++ /dev/null @@ -1 +0,0 @@ -ls.md \ No newline at end of file diff --git a/deps/npm/doc/api/get.md b/deps/npm/doc/api/get.md deleted file mode 120000 index 3dc87373663..00000000000 --- a/deps/npm/doc/api/get.md +++ /dev/null @@ -1 +0,0 @@ -config.md \ No newline at end of file diff --git a/deps/npm/doc/api/home.md b/deps/npm/doc/api/home.md deleted file mode 120000 index 8828313f5be..00000000000 --- a/deps/npm/doc/api/home.md +++ /dev/null @@ -1 +0,0 @@ -docs.md \ No newline at end of file diff --git a/deps/npm/doc/api/list.md b/deps/npm/doc/api/list.md deleted file mode 120000 index 5b3debb8f1d..00000000000 --- a/deps/npm/doc/api/list.md +++ /dev/null @@ -1 +0,0 @@ -ls.md \ No newline at end of file diff --git a/deps/npm/doc/api/ln.md b/deps/npm/doc/api/ln.md deleted file mode 120000 index 243f9941451..00000000000 --- a/deps/npm/doc/api/ln.md +++ /dev/null @@ -1 +0,0 @@ -link.md \ No newline at end of file diff --git a/deps/npm/doc/api/rm.md b/deps/npm/doc/api/rm.md deleted file mode 120000 index 32d3b511f92..00000000000 --- a/deps/npm/doc/api/rm.md +++ /dev/null @@ -1 +0,0 @@ -uninstall.md \ No newline at end of file diff --git a/deps/npm/doc/api/set.md b/deps/npm/doc/api/set.md deleted file mode 120000 index 3dc87373663..00000000000 --- a/deps/npm/doc/api/set.md +++ /dev/null @@ -1 +0,0 @@ -config.md \ No newline at end of file diff --git a/deps/npm/doc/cli/author.md b/deps/npm/doc/cli/author.md deleted file mode 120000 index b7a53cb66be..00000000000 --- a/deps/npm/doc/cli/author.md +++ /dev/null @@ -1 +0,0 @@ -owner.md \ No newline at end of file diff --git a/deps/npm/doc/cli/config.md b/deps/npm/doc/cli/config.md index 1ede36292e2..e380e65eff2 100644 --- a/deps/npm/doc/cli/config.md +++ b/deps/npm/doc/cli/config.md @@ -212,7 +212,7 @@ See also the `strict-ssl` config. ### cache -* Default: Windows: `~/npm-cache`, Posix: `~/.npm` +* Default: Windows: `%APPDATA%\npm-cache`, Posix: `~/.npm` * Type: path The location of npm's cache directory. See `npm-cache(1)` @@ -474,6 +474,18 @@ Set to true to run in "production" mode. local `npm install` without any arguments. 2. Set the NODE_ENV="production" for lifecycle scripts. +### proprietary-attribs + +* Default: true +* Type: Boolean + +Whether or not to include proprietary extended attributes in the +tarballs created by npm. + +Unless you are expecting to unpack package tarballs with something other +than npm -- particularly a very outdated tar implementation -- leave +this as true. + ### proxy * Default: `HTTP_PROXY` or `http_proxy` environment variable, or null diff --git a/deps/npm/doc/cli/find.md b/deps/npm/doc/cli/find.md deleted file mode 120000 index 9b687d1c192..00000000000 --- a/deps/npm/doc/cli/find.md +++ /dev/null @@ -1 +0,0 @@ -search.md \ No newline at end of file diff --git a/deps/npm/doc/cli/get.md b/deps/npm/doc/cli/get.md deleted file mode 120000 index 3dc87373663..00000000000 --- a/deps/npm/doc/cli/get.md +++ /dev/null @@ -1 +0,0 @@ -config.md \ No newline at end of file diff --git a/deps/npm/doc/cli/global.md b/deps/npm/doc/cli/global.md deleted file mode 120000 index c3598dd7df2..00000000000 --- a/deps/npm/doc/cli/global.md +++ /dev/null @@ -1 +0,0 @@ -folders.md \ No newline at end of file diff --git a/deps/npm/doc/cli/home.md b/deps/npm/doc/cli/home.md deleted file mode 120000 index 8828313f5be..00000000000 --- a/deps/npm/doc/cli/home.md +++ /dev/null @@ -1 +0,0 @@ -docs.md \ No newline at end of file diff --git a/deps/npm/doc/cli/index.md b/deps/npm/doc/cli/index.md new file mode 100644 index 00000000000..b355042df00 --- /dev/null +++ b/deps/npm/doc/cli/index.md @@ -0,0 +1,365 @@ +npm-index(1) -- Index of all npm documentation +============================================== + +## npm-README(1) + + node package manager + +# Command Line Documentation +## npm-adduser(1) + + Add a registry user account + +## npm-bin(1) + + Display npm bin folder + +## npm-bugs(1) + + Bugs for a package in a web browser maybe + +## npm-build(1) + + Build a package + +## npm-bundle(1) + + REMOVED + +## npm-cache(1) + + Manipulates packages cache + +## npm-changelog(1) + + Changes + +## npm-coding-style(1) + + npm's "funny" coding style + +## npm-completion(1) + + Tab Completion for npm + +## npm-config(1) + + Manage the npm configuration file + +## npm-deprecate(1) + + Deprecate a version of a package + +## npm-developers(1) + + Developer Guide + +## npm-docs(1) + + Docs for a package in a web browser maybe + +## npm-edit(1) + + Edit an installed package + +## npm-explore(1) + + Browse an installed package + +## npm-faq(1) + + Frequently Asked Questions + +## npm-folders(1) + + Folder Structures Used by npm + +## npm-help-search(1) + + Search npm help documentation + +## npm-help(1) + + Get help on npm + +## npm-init(1) + + Interactively create a package.json file + +## npm-install(1) + + Install a package + +## npm-json(1) + + Specifics of npm's package.json handling + +## npm-link(1) + + Symlink a package folder + +## npm-list(1) + + List installed packages + +## npm-npm(1) + + node package manager + +## npm-outdated(1) + + Check for outdated packages + +## npm-owner(1) + + Manage package owners + +## npm-pack(1) + + Create a tarball from a package + +## npm-prefix(1) + + Display prefix + +## npm-prune(1) + + Remove extraneous packages + +## npm-publish(1) + + Publish a package + +## npm-rebuild(1) + + Rebuild a package + +## npm-registry(1) + + The JavaScript Package Registry + +## npm-removing-npm(1) + + Cleaning the Slate + +## npm-restart(1) + + Start a package + +## npm-root(1) + + Display npm root + +## npm-run-script(1) + + Run arbitrary package scripts + +## npm-scripts(1) + + How npm handles the "scripts" field + +## npm-search(1) + + Search for packages + +## npm-semver(1) + + The semantic versioner for npm + +## npm-star(1) + + Mark your favorite packages + +## npm-start(1) + + Start a package + +## npm-stop(1) + + Stop a package + +## npm-submodule(1) + + Add a package as a git submodule + +## npm-tag(1) + + Tag a published version + +## npm-test(1) + + Test a package + +## npm-uninstall(1) + + Remove a package + +## npm-unpublish(1) + + Remove a package from the registry + +## npm-update(1) + + Update a package + +## npm-version(1) + + Bump a package version + +## npm-view(1) + + View registry info + +## npm-whoami(1) + + Display npm username + +# API Documentation +## npm-bin(3) + + Display npm bin folder + +## npm-bugs(3) + + Bugs for a package in a web browser maybe + +## npm-commands(3) + + npm commands + +## npm-config(3) + + Manage the npm configuration files + +## npm-deprecate(3) + + Deprecate a version of a package + +## npm-docs(3) + + Docs for a package in a web browser maybe + +## npm-edit(3) + + Edit an installed package + +## npm-explore(3) + + Browse an installed package + +## npm-help-search(3) + + Search the help pages + +## npm-init(3) + + Interactively create a package.json file + +## npm-install(3) + + install a package programmatically + +## npm-link(3) + + Symlink a package folder + +## npm-load(3) + + Load config settings + +## npm-ls(3) + + List installed packages + +## npm-npm(3) + + node package manager + +## npm-outdated(3) + + Check for outdated packages + +## npm-owner(3) + + Manage package owners + +## npm-pack(3) + + Create a tarball from a package + +## npm-prefix(3) + + Display prefix + +## npm-prune(3) + + Remove extraneous packages + +## npm-publish(3) + + Publish a package + +## npm-rebuild(3) + + Rebuild a package + +## npm-restart(3) + + Start a package + +## npm-root(3) + + Display npm root + +## npm-run-script(3) + + Run arbitrary package scripts + +## npm-search(3) + + Search for packages + +## npm-start(3) + + Start a package + +## npm-stop(3) + + Stop a package + +## npm-submodule(3) + + Add a package as a git submodule + +## npm-tag(3) + + Tag a published version + +## npm-test(3) + + Test a package + +## npm-uninstall(3) + + uninstall a package programmatically + +## npm-unpublish(3) + + Remove a package from the registry + +## npm-update(3) + + Update a package + +## npm-version(3) + + Bump a package version + +## npm-view(3) + + View registry info + +## npm-whoami(3) + + Display npm username + diff --git a/deps/npm/doc/cli/ln.md b/deps/npm/doc/cli/ln.md deleted file mode 120000 index 243f9941451..00000000000 --- a/deps/npm/doc/cli/ln.md +++ /dev/null @@ -1 +0,0 @@ -link.md \ No newline at end of file diff --git a/deps/npm/doc/cli/ls.md b/deps/npm/doc/cli/ls.md deleted file mode 120000 index eaad7acae20..00000000000 --- a/deps/npm/doc/cli/ls.md +++ /dev/null @@ -1 +0,0 @@ -list.md \ No newline at end of file diff --git a/deps/npm/doc/cli/registry.md b/deps/npm/doc/cli/registry.md index 8073ea0820f..13c872494c6 100644 --- a/deps/npm/doc/cli/registry.md +++ b/deps/npm/doc/cli/registry.md @@ -13,9 +13,9 @@ account information. The official public npm registry is at . It is powered by a CouchDB database at -. The code for the couchapp is +. The code for the couchapp is available at . npm user accounts -are CouchDB users, stored in the +are CouchDB users, stored in the database. The registry URL is supplied by the `registry` config parameter. See diff --git a/deps/npm/doc/cli/rm.md b/deps/npm/doc/cli/rm.md deleted file mode 120000 index 32d3b511f92..00000000000 --- a/deps/npm/doc/cli/rm.md +++ /dev/null @@ -1 +0,0 @@ -uninstall.md \ No newline at end of file diff --git a/deps/npm/doc/cli/set.md b/deps/npm/doc/cli/set.md deleted file mode 120000 index 3dc87373663..00000000000 --- a/deps/npm/doc/cli/set.md +++ /dev/null @@ -1 +0,0 @@ -config.md \ No newline at end of file diff --git a/deps/npm/html/api/author.html b/deps/npm/html/api/author.html new file mode 100644 index 00000000000..0625fbc183e --- /dev/null +++ b/deps/npm/html/api/author.html @@ -0,0 +1,69 @@ + + + author + + + + +
+

owner

Manage package owners

+ +

SYNOPSIS

+ +
npm.commands.owner(args, callback)
+ +

DESCRIPTION

+ +

The first element of the 'args' parameter defines what to do, and the subsequent +elements depend on the action. Possible values for the action are (order of +parameters are given in parenthesis):

+ +
  • ls (package): +List all the users who have access to modify a package and push new versions. +Handy when you need to know who to bug for help.
  • add (user, package): +Add a new user as a maintainer of a package. This user is enabled to modify +metadata, publish new versions, and add other owners.
  • rm (user, package): +Remove a user from the package owner list. This immediately revokes their +privileges.
+ +

Note that there is only one level of access. Either you can modify a package, +or you can't. Future versions may contain more fine-grained access levels, but +that is not implemented at this time.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/api/bin.html b/deps/npm/html/api/bin.html new file mode 100644 index 00000000000..accd17cc853 --- /dev/null +++ b/deps/npm/html/api/bin.html @@ -0,0 +1,54 @@ + + + bin + + + + +
+

bin

Display npm bin folder

+ +

SYNOPSIS

+ +
npm.commands.bin(args, cb)
+ +

DESCRIPTION

+ +

Print the folder where npm will install executables.

+ +

This function should not be used programmatically. Instead, just refer +to the npm.bin member.

+
+ + + diff --git a/deps/npm/html/api/bugs.html b/deps/npm/html/api/bugs.html new file mode 100644 index 00000000000..71f7da204e6 --- /dev/null +++ b/deps/npm/html/api/bugs.html @@ -0,0 +1,60 @@ + + + bugs + + + + +
+

bugs

Bugs for a package in a web browser maybe

+ +

SYNOPSIS

+ +
npm.commands.bugs(package, callback)
+ +

DESCRIPTION

+ +

This command tries to guess at the likely location of a package's +bug tracker URL, and then tries to open it using the --browser +config param.

+ +

Like other commands, the first parameter is an array. This command only +uses the first element, which is expected to be a package name with an +optional version number.

+ +

This command will launch a browser, so this command may not be the most +friendly for programmatic use.

+
+ + + diff --git a/deps/npm/html/api/commands.html b/deps/npm/html/api/commands.html new file mode 100644 index 00000000000..7102efdd143 --- /dev/null +++ b/deps/npm/html/api/commands.html @@ -0,0 +1,63 @@ + + + commands + + + + +
+

commands

npm commands

+ +

SYNOPSIS

+ +
npm.commands[<command>](args, callback)
+ +

DESCRIPTION

+ +

npm comes with a full set of commands, and each of the commands takes a +similar set of arguments.

+ +

In general, all commands on the command object take an array of positional +argument strings. The last argument to any function is a callback. Some +commands are special and take other optional arguments.

+ +

All commands have their own man page. See man npm-<command> for command-line +usage, or man 3 npm-<command> for programmatic usage.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/api/config.html b/deps/npm/html/api/config.html new file mode 100644 index 00000000000..f91ef57a2f3 --- /dev/null +++ b/deps/npm/html/api/config.html @@ -0,0 +1,68 @@ + + + config + + + + +
+

config

Manage the npm configuration files

+ +

SYNOPSIS

+ +
npm.commands.config(args, callback)
+var val = npm.config.get(key)
+npm.config.set(key, val)
+ +

DESCRIPTION

+ +

This function acts much the same way as the command-line version. The first +element in the array tells config what to do. Possible values are:

+ +
  • set

    Sets a config parameter. The second element in args is interpreted as the +key, and the third element is interpreted as the value.

  • get

    Gets the value of a config parameter. The second element in args is the +key to get the value of.

  • delete (rm or del)

    Deletes a parameter from the config. The second element in args is the +key to delete.

  • list (ls)

    Show all configs that aren't secret. No parameters necessary.

  • edit:

    Opens the config file in the default editor. This command isn't very useful +programmatically, but it is made available.

+ +

To programmatically access npm configuration settings, or set them for +the duration of a program, use the npm.config.set and npm.config.get +functions instead.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/api/deprecate.html b/deps/npm/html/api/deprecate.html new file mode 100644 index 00000000000..0e77dbad489 --- /dev/null +++ b/deps/npm/html/api/deprecate.html @@ -0,0 +1,65 @@ + + + deprecate + + + + +
+

deprecate

Deprecate a version of a package

+ +

SYNOPSIS

+ +
npm.commands.deprecate(args, callback)
+ +

DESCRIPTION

+ +

This command will update the npm registry entry for a package, providing +a deprecation warning to all who attempt to install it.

+ +

The 'args' parameter must have exactly two elements:

+ +
  • package[@version]

    The version portion is optional, and may be either a range, or a +specific version, or a tag.

  • message

    The warning message that will be printed whenever a user attempts to +install the package.

+ +

Note that you must be the package owner to deprecate something. See the +owner and adduser help topics.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/api/docs.html b/deps/npm/html/api/docs.html new file mode 100644 index 00000000000..b2a5ca26937 --- /dev/null +++ b/deps/npm/html/api/docs.html @@ -0,0 +1,60 @@ + + + docs + + + + +
+

docs

Docs for a package in a web browser maybe

+ +

SYNOPSIS

+ +
npm.commands.docs(package, callback)
+ +

DESCRIPTION

+ +

This command tries to guess at the likely location of a package's +documentation URL, and then tries to open it using the --browser +config param.

+ +

Like other commands, the first parameter is an array. This command only +uses the first element, which is expected to be a package name with an +optional version number.

+ +

This command will launch a browser, so this command may not be the most +friendly for programmatic use.

+
+ + + diff --git a/deps/npm/html/api/edit.html b/deps/npm/html/api/edit.html new file mode 100644 index 00000000000..52c48308538 --- /dev/null +++ b/deps/npm/html/api/edit.html @@ -0,0 +1,65 @@ + + + edit + + + + +
+

edit

Edit an installed package

+ +

SYNOPSIS

+ +
npm.commands.edit(package, callback)
+ +

DESCRIPTION

+ +

Opens the package folder in the default editor (or whatever you've +configured as the npm editor config -- see npm help config.)

+ +

After it has been edited, the package is rebuilt so as to pick up any +changes in compiled packages.

+ +

For instance, you can do npm install connect to install connect +into your package, and then npm.commands.edit(["connect"], callback) +to make a few changes to your locally installed copy.

+ +

The first parameter is a string array with a single element, the package +to open. The package can optionally have a version number attached.

+ +

Since this command opens an editor in a new process, be careful about where +and how this is used.

+
+ + + diff --git a/deps/npm/html/api/explore.html b/deps/npm/html/api/explore.html new file mode 100644 index 00000000000..bc052c55ce3 --- /dev/null +++ b/deps/npm/html/api/explore.html @@ -0,0 +1,59 @@ + + + explore + + + + +
+

explore

Browse an installed package

+ +

SYNOPSIS

+ +
npm.commands.explore(args, callback)
+ +

DESCRIPTION

+ +

Spawn a subshell in the directory of the installed package specified.

+ +

If a command is specified, then it is run in the subshell, which then +immediately terminates.

+ +

Note that the package is not automatically rebuilt afterwards, so be +sure to use npm rebuild <pkg> if you make any changes.

+ +

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.

+
+ + + diff --git a/deps/npm/html/api/find.html b/deps/npm/html/api/find.html new file mode 100644 index 00000000000..6647f2fae5b --- /dev/null +++ b/deps/npm/html/api/find.html @@ -0,0 +1,88 @@ + + + find + + + + +
+

ls

List installed packages

+ +

SYNOPSIS

+ +
npm.commands.ls(args, [silent,] callback)
+ +

DESCRIPTION

+ +

This command will print to stdout all the versions of packages that are +installed, as well as their dependencies, in a tree-structure. It will also +return that data using the callback.

+ +

This command does not take any arguments, but args must be defined. +Beyond that, if any arguments are passed in, npm will politely warn that it +does not take positional arguments, though you may set config flags +like with any other command, such as global to list global packages.

+ +

It will print out extraneous, missing, and invalid packages.

+ +

If the silent parameter is set to true, nothing will be output to the screen, +but the data will still be returned.

+ +

CONFIGURATION

+ +

long

+ +
  • Default: false
  • Type: Boolean
+ +

Show extended information.

+ +

parseable

+ +
  • Default: false
  • Type: Boolean
+ +

Show parseable output instead of tree view.

+ +

global

+ +
  • Default: false
  • Type: Boolean
+ +

List packages in the global install prefix instead of in the current +project.

+ +

Note, if parseable is set or long isn't set, then duplicates will be trimmed. +This means that if a submodule a same dependency as a parent module, then the +dependency will only be output once.

+
+ + + diff --git a/deps/npm/html/api/get.html b/deps/npm/html/api/get.html new file mode 100644 index 00000000000..46d372ad6b0 --- /dev/null +++ b/deps/npm/html/api/get.html @@ -0,0 +1,68 @@ + + + get + + + + +
+

config

Manage the npm configuration files

+ +

SYNOPSIS

+ +
npm.commands.config(args, callback)
+var val = npm.config.get(key)
+npm.config.set(key, val)
+ +

DESCRIPTION

+ +

This function acts much the same way as the command-line version. The first +element in the array tells config what to do. Possible values are:

+ +
  • set

    Sets a config parameter. The second element in args is interpreted as the +key, and the third element is interpreted as the value.

  • get

    Gets the value of a config parameter. The second element in args is the +key to get the value of.

  • delete (rm or del)

    Deletes a parameter from the config. The second element in args is the +key to delete.

  • list (ls)

    Show all configs that aren't secret. No parameters necessary.

  • edit:

    Opens the config file in the default editor. This command isn't very useful +programmatically, but it is made available.

+ +

To programmatically access npm configuration settings, or set them for +the duration of a program, use the npm.config.set and npm.config.get +functions instead.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/api/help-search.html b/deps/npm/html/api/help-search.html new file mode 100644 index 00000000000..a603fe53f44 --- /dev/null +++ b/deps/npm/html/api/help-search.html @@ -0,0 +1,67 @@ + + + help-search + + + + +
+

help-search

Search the help pages

+ +

SYNOPSIS

+ +
npm.commands.helpSearch(args, [silent,] callback)
+ +

DESCRIPTION

+ +

This command is rarely useful, but it exists in the rare case that it is.

+ +

This command takes an array of search terms and returns the help pages that +match in order of best match.

+ +

If there is only one match, then npm displays that help section. If there +are multiple results, the results are printed to the screen formatted and the +array of results is returned. Each result is an object with these properties:

+ +
  • hits: +A map of args to number of hits on that arg. For example, {"npm": 3}
  • found: +Total number of unique args that matched.
  • totalHits: +Total number of hits.
  • lines: +An array of all matching lines (and some adjacent lines).
  • file: +Name of the file that matched
+ +

The silent parameter is not neccessary not used, but it may in the future.

+
+ + + diff --git a/deps/npm/html/api/home.html b/deps/npm/html/api/home.html new file mode 100644 index 00000000000..ee1cf16c93d --- /dev/null +++ b/deps/npm/html/api/home.html @@ -0,0 +1,60 @@ + + + home + + + + +
+

docs

Docs for a package in a web browser maybe

+ +

SYNOPSIS

+ +
npm.commands.docs(package, callback)
+ +

DESCRIPTION

+ +

This command tries to guess at the likely location of a package's +documentation URL, and then tries to open it using the --browser +config param.

+ +

Like other commands, the first parameter is an array. This command only +uses the first element, which is expected to be a package name with an +optional version number.

+ +

This command will launch a browser, so this command may not be the most +friendly for programmatic use.

+
+ + + diff --git a/deps/npm/html/api/init.html b/deps/npm/html/api/init.html new file mode 100644 index 00000000000..e693070be32 --- /dev/null +++ b/deps/npm/html/api/init.html @@ -0,0 +1,70 @@ + + + init + + + + +
+

npm init(3)

Interactively create a package.json file

+ +

SYNOPSIS

+ +
npm.commands.init(args, callback)
+ +

DESCRIPTION

+ +

This will ask you a bunch of questions, and then write a package.json for you.

+ +

It attempts to make reasonable guesses about what you want things to be set to, +and then writes a package.json file with the options you've selected.

+ +

If you already have a package.json file, it'll read that first, and default to +the options in there.

+ +

It is strictly additive, so it does not delete options from your package.json +without a really good reason to do so.

+ +

Since this function expects to be run on the command-line, it doesn't work very +well as a programmatically. The best option is to roll your own, and since +JavaScript makes it stupid simple to output formatted JSON, that is the +preferred method. If you're sure you want to handle command-line prompting, +then go ahead and use this programmatically.

+ +

SEE ALSO

+ +

json(1)

+
+ + + diff --git a/deps/npm/html/api/install.html b/deps/npm/html/api/install.html new file mode 100644 index 00000000000..135ac355753 --- /dev/null +++ b/deps/npm/html/api/install.html @@ -0,0 +1,60 @@ + + + install + + + + +
+

install

install a package programmatically

+ +

SYNOPSIS

+ +
npm.commands.install([where,] packages, callback)
+ +

DESCRIPTION

+ +

This acts much the same ways as installing on the command-line.

+ +

The 'where' parameter is optional and only used internally, and it specifies +where the packages should be installed to.

+ +

The 'packages' parameter is an array of strings. Each element in the array is +the name of a package to be installed.

+ +

Finally, 'callback' is a function that will be called when all packages have been +installed or when an error has been encountered.

+
+ + + diff --git a/deps/npm/html/api/link.html b/deps/npm/html/api/link.html new file mode 100644 index 00000000000..70cb2adf4af --- /dev/null +++ b/deps/npm/html/api/link.html @@ -0,0 +1,74 @@ + + + link + + + + +
+

link

Symlink a package folder

+ +

SYNOPSIS

+ +
npm.command.link(callback)
+npm.command.link(packages, callback)
+ +

DESCRIPTION

+ +

Package linking is a two-step process.

+ +

Without parameters, link will create a globally-installed +symbolic link from prefix/package-name to the current folder.

+ +

With a parameters, link will create a symlink from the local node_modules +folder to the global symlink.

+ +

When creating tarballs for npm publish, the linked packages are +"snapshotted" to their current state by resolving the symbolic links.

+ +

This is +handy for installing your own stuff, so that you can work on it and test it +iteratively without having to continually rebuild.

+ +

For example:

+ +
npm.commands.link(cb)           # creates global link from the cwd
+                                # (say redis package)
+npm.commands.link('redis', cb)  # link-install the package
+ +

Now, any changes to the redis package will be reflected in +the package in the current working directory

+
+ + + diff --git a/deps/npm/html/api/list.html b/deps/npm/html/api/list.html new file mode 100644 index 00000000000..96aa5d18586 --- /dev/null +++ b/deps/npm/html/api/list.html @@ -0,0 +1,88 @@ + + + list + + + + +
+

ls

List installed packages

+ +

SYNOPSIS

+ +
npm.commands.ls(args, [silent,] callback)
+ +

DESCRIPTION

+ +

This command will print to stdout all the versions of packages that are +installed, as well as their dependencies, in a tree-structure. It will also +return that data using the callback.

+ +

This command does not take any arguments, but args must be defined. +Beyond that, if any arguments are passed in, npm will politely warn that it +does not take positional arguments, though you may set config flags +like with any other command, such as global to list global packages.

+ +

It will print out extraneous, missing, and invalid packages.

+ +

If the silent parameter is set to true, nothing will be output to the screen, +but the data will still be returned.

+ +

CONFIGURATION

+ +

long

+ +
  • Default: false
  • Type: Boolean
+ +

Show extended information.

+ +

parseable

+ +
  • Default: false
  • Type: Boolean
+ +

Show parseable output instead of tree view.

+ +

global

+ +
  • Default: false
  • Type: Boolean
+ +

List packages in the global install prefix instead of in the current +project.

+ +

Note, if parseable is set or long isn't set, then duplicates will be trimmed. +This means that if a submodule a same dependency as a parent module, then the +dependency will only be output once.

+
+ + + diff --git a/deps/npm/html/api/ln.html b/deps/npm/html/api/ln.html new file mode 100644 index 00000000000..0629e06425e --- /dev/null +++ b/deps/npm/html/api/ln.html @@ -0,0 +1,74 @@ + + + ln + + + + +
+

link

Symlink a package folder

+ +

SYNOPSIS

+ +
npm.command.link(callback)
+npm.command.link(packages, callback)
+ +

DESCRIPTION

+ +

Package linking is a two-step process.

+ +

Without parameters, link will create a globally-installed +symbolic link from prefix/package-name to the current folder.

+ +

With a parameters, link will create a symlink from the local node_modules +folder to the global symlink.

+ +

When creating tarballs for npm publish, the linked packages are +"snapshotted" to their current state by resolving the symbolic links.

+ +

This is +handy for installing your own stuff, so that you can work on it and test it +iteratively without having to continually rebuild.

+ +

For example:

+ +
npm.commands.link(cb)           # creates global link from the cwd
+                                # (say redis package)
+npm.commands.link('redis', cb)  # link-install the package
+ +

Now, any changes to the redis package will be reflected in +the package in the current working directory

+
+ + + diff --git a/deps/npm/html/api/load.html b/deps/npm/html/api/load.html new file mode 100644 index 00000000000..985f8795ff5 --- /dev/null +++ b/deps/npm/html/api/load.html @@ -0,0 +1,67 @@ + + + load + + + + +
+

load

Load config settings

+ +

SYNOPSIS

+ +
npm.load(conf, cb)
+ +

DESCRIPTION

+ +

npm.load() must be called before any other function call. Both parameters are +optional, but the second is recommended.

+ +

The first parameter is an object hash of command-line config params, and the +second parameter is a callback that will be called when npm is loaded and +ready to serve.

+ +

The first parameter should follow a similar structure as the package.json +config object.

+ +

For example, to emulate the --dev flag, pass an object that looks like this:

+ +
{
+  "dev": true
+}
+ +

For a list of all the available command-line configs, see npm help config

+
+ + + diff --git a/deps/npm/html/api/ls.html b/deps/npm/html/api/ls.html new file mode 100644 index 00000000000..3842221ce3c --- /dev/null +++ b/deps/npm/html/api/ls.html @@ -0,0 +1,88 @@ + + + ls + + + + +
+

ls

List installed packages

+ +

SYNOPSIS

+ +
npm.commands.ls(args, [silent,] callback)
+ +

DESCRIPTION

+ +

This command will print to stdout all the versions of packages that are +installed, as well as their dependencies, in a tree-structure. It will also +return that data using the callback.

+ +

This command does not take any arguments, but args must be defined. +Beyond that, if any arguments are passed in, npm will politely warn that it +does not take positional arguments, though you may set config flags +like with any other command, such as global to list global packages.

+ +

It will print out extraneous, missing, and invalid packages.

+ +

If the silent parameter is set to true, nothing will be output to the screen, +but the data will still be returned.

+ +

CONFIGURATION

+ +

long

+ +
  • Default: false
  • Type: Boolean
+ +

Show extended information.

+ +

parseable

+ +
  • Default: false
  • Type: Boolean
+ +

Show parseable output instead of tree view.

+ +

global

+ +
  • Default: false
  • Type: Boolean
+ +

List packages in the global install prefix instead of in the current +project.

+ +

Note, if parseable is set or long isn't set, then duplicates will be trimmed. +This means that if a submodule a same dependency as a parent module, then the +dependency will only be output once.

+
+ + + diff --git a/deps/npm/html/api/npm.html b/deps/npm/html/api/npm.html new file mode 100644 index 00000000000..7121387d0a0 --- /dev/null +++ b/deps/npm/html/api/npm.html @@ -0,0 +1,126 @@ + + + npm + + + + +
+

npm

node package manager

+ +

SYNOPSIS

+ +
var npm = require("npm")
+npm.load(configObject, function (er, npm) {
+  // use the npm object, now that it's loaded.
+
+  npm.config.set(key, val)
+  val = npm.config.get(key)
+
+  console.log("prefix = %s", npm.prefix)
+
+  npm.commands.install(["package"], cb)
+})
+ +

VERSION

+ +

1.1.0-alpha-6

+ +

DESCRIPTION

+ +

This is the API documentation for npm. +To find documentation of the command line +client, see npm(1).

+ +

Prior to using npm's commands, +npm.load() must be called with an object hash of +top-level configs. In the npm command line client, +this set of configs is parsed from the command line options. Additional +configuration params are loaded from two configuration files. See +config(1) for more information.

+ +

After that, each of the functions are accessible in the +commands object: npm.commands.<cmd>. See index(1) for a list of +all possible commands.

+ +

All commands on the command object take an array of positional argument +strings. The last argument to any function is a callback. Some +commands take other optional arguments.

+ +

Configs cannot currently be set on a per function basis, as each call to +npm.config.set will change the value for all npm commands in that process.

+ +

To find API documentation for a specific command, run the npm apihelp +command.

+ +

METHODS AND PROPERTIES

+ +
  • npm.load(configs, cb)

    Load the configuration params, and call the cb function once the +globalconfig and userconfig files have been loaded as well, or on +nextTick if they've already been loaded.

  • npm.config

    An object for accessing npm configuration parameters.

    • npm.config.get(key)

    • npm.config.set(key, val)
    • npm.config.del(key)

  • npm.dir or npm.root

    The node_modules directory where npm will operate.

  • npm.prefix

    The prefix where npm is operating. (Most often the current working +directory.)

  • npm.cache

    The place where npm keeps JSON and tarballs it fetches from the +registry (or uploads to the registry).

  • npm.tmp

    npm's temporary working directory.

  • npm.deref

    Get the "real" name for a command that has either an alias or +abbreviation.

+ +

MAGIC

+ +

For each of the methods in the npm.commands hash, a method is added to +the npm object, which takes a set of positional string arguments rather +than an array and a callback.

+ +

If the last argument is a callback, then it will use the supplied +callback. However, if no callback is provided, then it will print out +the error or results.

+ +

For example, this would work in a node repl:

+ +
> npm = require("npm")
+> npm.load()  // wait a sec...
+> npm.install("dnode", "express")
+ +

Note that that won't work in a node program, since the install +method will get called before the configuration load is completed.

+ +

ABBREVS

+ +

In order to support npm ins foo instead of npm install foo, the +npm.commands object has a set of abbreviations as well as the full +method names. Use the npm.deref method to find the real name.

+ +

For example:

+ +
var cmd = npm.deref("unp") // cmd === "unpublish"
+
+ + + diff --git a/deps/npm/html/api/outdated.html b/deps/npm/html/api/outdated.html new file mode 100644 index 00000000000..08258050b3b --- /dev/null +++ b/deps/npm/html/api/outdated.html @@ -0,0 +1,54 @@ + + + outdated + + + + +
+

outdated

Check for outdated packages

+ +

SYNOPSIS

+ +
npm.commands.outdated([packages,] callback)
+ +

DESCRIPTION

+ +

This command will check the registry to see if the specified packages are +currently outdated.

+ +

If the 'packages' parameter is left out, npm will check all packages.

+
+ + + diff --git a/deps/npm/html/api/owner.html b/deps/npm/html/api/owner.html new file mode 100644 index 00000000000..dc5408dccbe --- /dev/null +++ b/deps/npm/html/api/owner.html @@ -0,0 +1,69 @@ + + + owner + + + + +
+

owner

Manage package owners

+ +

SYNOPSIS

+ +
npm.commands.owner(args, callback)
+ +

DESCRIPTION

+ +

The first element of the 'args' parameter defines what to do, and the subsequent +elements depend on the action. Possible values for the action are (order of +parameters are given in parenthesis):

+ +
  • ls (package): +List all the users who have access to modify a package and push new versions. +Handy when you need to know who to bug for help.
  • add (user, package): +Add a new user as a maintainer of a package. This user is enabled to modify +metadata, publish new versions, and add other owners.
  • rm (user, package): +Remove a user from the package owner list. This immediately revokes their +privileges.
+ +

Note that there is only one level of access. Either you can modify a package, +or you can't. Future versions may contain more fine-grained access levels, but +that is not implemented at this time.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/api/pack.html b/deps/npm/html/api/pack.html new file mode 100644 index 00000000000..d3a315998e7 --- /dev/null +++ b/deps/npm/html/api/pack.html @@ -0,0 +1,60 @@ + + + pack + + + + +
+

pack

Create a tarball from a package

+ +

SYNOPSIS

+ +
npm.commands.pack([packages,] callback)
+ +

DESCRIPTION

+ +

For anything that's installable (that is, a package folder, tarball, +tarball url, name@tag, name@version, or name), this command will fetch +it to the cache, and then copy the tarball to the current working +directory as <name>-<version>.tgz, and then write the filenames out to +stdout.

+ +

If the same package is specified multiple times, then the file will be +overwritten the second time.

+ +

If no arguments are supplied, then npm packs the current package folder.

+
+ + + diff --git a/deps/npm/html/api/prefix.html b/deps/npm/html/api/prefix.html new file mode 100644 index 00000000000..c184ea64fe8 --- /dev/null +++ b/deps/npm/html/api/prefix.html @@ -0,0 +1,56 @@ + + + prefix + + + + +
+

prefix

Display prefix

+ +

SYNOPSIS

+ +
npm.commands.prefix(args, callback)
+ +

DESCRIPTION

+ +

Print the prefix to standard out.

+ +

'args' is never used and callback is never called with data. +'args' must be present or things will break.

+ +

This function is not useful programmatically

+
+ + + diff --git a/deps/npm/html/api/prune.html b/deps/npm/html/api/prune.html new file mode 100644 index 00000000000..9358fb46e9e --- /dev/null +++ b/deps/npm/html/api/prune.html @@ -0,0 +1,58 @@ + + + prune + + + + +
+

prune

Remove extraneous packages

+ +

SYNOPSIS

+ +
npm.commands.prune([packages,] callback)
+ +

DESCRIPTION

+ +

This command removes "extraneous" packages.

+ +

The first parameter is optional, and it specifies packages to be removed.

+ +

No packages are specified, then all packages will be checked.

+ +

Extraneous packages are packages that are not listed on the parent +package's dependencies list.

+
+ + + diff --git a/deps/npm/html/api/publish.html b/deps/npm/html/api/publish.html new file mode 100644 index 00000000000..81e25707ee2 --- /dev/null +++ b/deps/npm/html/api/publish.html @@ -0,0 +1,67 @@ + + + publish + + + + +
+

publish

Publish a package

+ +

SYNOPSIS

+ +
npm.commands.publish([packages,] callback)
+ +

DESCRIPTION

+ +

Publishes a package to the registry so that it can be installed by name. +Possible values in the 'packages' array are:

+ +
  • <folder>: +A folder containing a package.json file

  • <tarball>: +A url or file path to a gzipped tar archive containing a single folder +with a package.json file inside.

+ +

If the package array is empty, npm will try to publish something in the +current working directory.

+ +

This command could fails if one of the packages specified already exists in +the registry. Overwrites when the "force" environment variable is set.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/api/rebuild.html b/deps/npm/html/api/rebuild.html new file mode 100644 index 00000000000..05932ebcf57 --- /dev/null +++ b/deps/npm/html/api/rebuild.html @@ -0,0 +1,57 @@ + + + rebuild + + + + +
+

rebuild

Rebuild a package

+ +

SYNOPSIS

+ +
npm.commands.rebuild([packages,] callback)
+ +

DESCRIPTION

+ +

This command runs the npm build command on each of the matched packages. This is useful +when you install a new version of node, and must recompile all your C++ addons with +the new binary. If no 'packages' parameter is specify, every package will be rebuilt.

+ +

CONFIGURATION

+ +

See npm help build

+
+ + + diff --git a/deps/npm/html/api/restart.html b/deps/npm/html/api/restart.html new file mode 100644 index 00000000000..f51bd12e167 --- /dev/null +++ b/deps/npm/html/api/restart.html @@ -0,0 +1,62 @@ + + + restart + + + + +
+

restart

Start a package

+ +

SYNOPSIS

+ +
npm.commands.restart(packages, callback)
+ +

DESCRIPTION

+ +

This runs a package's "restart" script, if one was provided. +Otherwise it runs package's "stop" script, if one was provided, and then +the "start" script.

+ +

If no version is specified, then it restarts the "active" version.

+ +

npm can run tests on multiple packages. Just specify multiple packages +in the packages parameter.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/api/rm.html b/deps/npm/html/api/rm.html new file mode 100644 index 00000000000..732aec23a93 --- /dev/null +++ b/deps/npm/html/api/rm.html @@ -0,0 +1,57 @@ + + + rm + + + + +
+

uninstall

uninstall a package programmatically

+ +

SYNOPSIS

+ +
npm.commands.uninstall(packages, callback)
+ +

DESCRIPTION

+ +

This acts much the same ways as uninstalling on the command-line.

+ +

The 'packages' parameter is an array of strings. Each element in the array is +the name of a package to be uninstalled.

+ +

Finally, 'callback' is a function that will be called when all packages have been +uninstalled or when an error has been encountered.

+
+ + + diff --git a/deps/npm/html/api/root.html b/deps/npm/html/api/root.html new file mode 100644 index 00000000000..b8ed4cd9d53 --- /dev/null +++ b/deps/npm/html/api/root.html @@ -0,0 +1,56 @@ + + + root + + + + +
+

root

Display npm root

+ +

SYNOPSIS

+ +
npm.commands.root(args, callback)
+ +

DESCRIPTION

+ +

Print the effective node_modules folder to standard out.

+ +

'args' is never used and callback is never called with data. +'args' must be present or things will break.

+ +

This function is not useful programmatically.

+
+ + + diff --git a/deps/npm/html/api/run-script.html b/deps/npm/html/api/run-script.html new file mode 100644 index 00000000000..9afd96da952 --- /dev/null +++ b/deps/npm/html/api/run-script.html @@ -0,0 +1,64 @@ + + + run-script + + + + +
+

run-script

Run arbitrary package scripts

+ +

SYNOPSIS

+ +
npm.commands.run-script(args, callback)
+ +

DESCRIPTION

+ +

This runs an arbitrary command from a package's "scripts" object.

+ +

It is used by the test, start, restart, and stop commands, but can be +called directly, as well.

+ +

The 'args' parameter is an array of strings. Behavior depends on the number +of elements. If there is only one element, npm assumes that the element +represents a command to be run on the local repository. If there is more than +one element, then the first is assumed to be the package and the second is +assumed to be the command to run. All other elements are ignored.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/api/search.html b/deps/npm/html/api/search.html new file mode 100644 index 00000000000..3cf9710bcec --- /dev/null +++ b/deps/npm/html/api/search.html @@ -0,0 +1,67 @@ + + + search + + + + +
+

search

Search for packages

+ +

SYNOPSIS

+ +
npm.commands.search(searchTerms, [silent,] [staleness,] callback)
+ +

DESCRIPTION

+ +

Search the registry for packages matching the search terms. The available parameters are:

+ +
  • searchTerms: +Array of search terms. These terms are case-insensitive.
  • silent: +If true, npm will not log anything to the console.
  • staleness: +This is the threshold for stale packages. "Fresh" packages are not refreshed +from the registry. This value is measured in seconds.
  • callback: +Returns an object where each key is the name of a package, and the value +is information about that package along with a 'words' property, which is +a space-delimited string of all of the interesting words in that package. +The only properties included are those that are searched, which generally include:

    • name
    • description
    • maintainers
    • url
    • keywords
+ +

A search on the registry excludes any result that does not match all of the +search terms. It also removes any items from the results that contain an +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 +like).

+
+ + + diff --git a/deps/npm/html/api/set.html b/deps/npm/html/api/set.html new file mode 100644 index 00000000000..7ef6b24525e --- /dev/null +++ b/deps/npm/html/api/set.html @@ -0,0 +1,68 @@ + + + set + + + + +
+

config

Manage the npm configuration files

+ +

SYNOPSIS

+ +
npm.commands.config(args, callback)
+var val = npm.config.get(key)
+npm.config.set(key, val)
+ +

DESCRIPTION

+ +

This function acts much the same way as the command-line version. The first +element in the array tells config what to do. Possible values are:

+ +
  • set

    Sets a config parameter. The second element in args is interpreted as the +key, and the third element is interpreted as the value.

  • get

    Gets the value of a config parameter. The second element in args is the +key to get the value of.

  • delete (rm or del)

    Deletes a parameter from the config. The second element in args is the +key to delete.

  • list (ls)

    Show all configs that aren't secret. No parameters necessary.

  • edit:

    Opens the config file in the default editor. This command isn't very useful +programmatically, but it is made available.

+ +

To programmatically access npm configuration settings, or set them for +the duration of a program, use the npm.config.set and npm.config.get +functions instead.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/api/start.html b/deps/npm/html/api/start.html new file mode 100644 index 00000000000..8a6a2c67098 --- /dev/null +++ b/deps/npm/html/api/start.html @@ -0,0 +1,54 @@ + + + start + + + + +
+

start

Start a package

+ +

SYNOPSIS

+ +
npm.commands.start(packages, callback)
+ +

DESCRIPTION

+ +

This runs a package's "start" script, if one was provided.

+ +

npm can run tests on multiple packages. Just specify multiple packages +in the packages parameter.

+
+ + + diff --git a/deps/npm/html/api/stop.html b/deps/npm/html/api/stop.html new file mode 100644 index 00000000000..a1a59313f79 --- /dev/null +++ b/deps/npm/html/api/stop.html @@ -0,0 +1,54 @@ + + + stop + + + + +
+

stop

Stop a package

+ +

SYNOPSIS

+ +
npm.commands.stop(packages, callback)
+ +

DESCRIPTION

+ +

This runs a package's "stop" script, if one was provided.

+ +

npm can run stop on multiple packages. Just specify multiple packages +in the packages parameter.

+
+ + + diff --git a/deps/npm/html/api/submodule.html b/deps/npm/html/api/submodule.html new file mode 100644 index 00000000000..6ba9e46715f --- /dev/null +++ b/deps/npm/html/api/submodule.html @@ -0,0 +1,68 @@ + + + submodule + + + + +
+

submodule

Add a package as a git submodule

+ +

SYNOPSIS

+ +
npm.commands.submodule(packages, callback)
+ +

DESCRIPTION

+ +

For each package specified, npm will check if it has a git repository url +in its package.json description then add it as a git submodule at +node_modules/<pkg name>.

+ +

This is a convenience only. From then on, it's up to you to manage +updates by using the appropriate git commands. npm will stubbornly +refuse to update, modify, or remove anything with a .git subfolder +in it.

+ +

This command also does not install missing dependencies, if the package +does not include them in its git repository. If npm ls reports that +things are missing, you can either install, link, or submodule them yourself, +or you can do npm explore <pkgname> -- npm install to install the +dependencies into the submodule folder.

+ +

SEE ALSO

+ +
  • npm help json
  • git help submodule
+
+ + + diff --git a/deps/npm/html/api/tag.html b/deps/npm/html/api/tag.html new file mode 100644 index 00000000000..2921500ea04 --- /dev/null +++ b/deps/npm/html/api/tag.html @@ -0,0 +1,64 @@ + + + tag + + + + +
+

tag

Tag a published version

+ +

SYNOPSIS

+ +
npm.commands.tag(package@version, tag, callback)
+ +

DESCRIPTION

+ +

Tags the specified version of the package with the specified tag, or the +--tag config if not specified.

+ +

The 'package@version' is an array of strings, but only the first two elements are +currently used.

+ +

The first element must be in the form package@version, where package +is the package name and version is the version number (much like installing a +specific version).

+ +

The second element is the name of the tag to tag this version with. If this +parameter is missing or falsey (empty), the default froom the config will be +used. For more information about how to set this config, check +man 3 npm-config for programmatic usage or man npm-config for cli usage.

+
+ + + diff --git a/deps/npm/html/api/test.html b/deps/npm/html/api/test.html new file mode 100644 index 00000000000..e1d1e6c7716 --- /dev/null +++ b/deps/npm/html/api/test.html @@ -0,0 +1,57 @@ + + + test + + + + +
+

test

Test a package

+ +

SYNOPSIS

+ +
  npm.commands.test(packages, callback)
+ +

DESCRIPTION

+ +

This runs a package's "test" script, if one was provided.

+ +

To run tests as a condition of installation, set the npat config to +true.

+ +

npm can run tests on multiple packages. Just specify multiple packages +in the packages parameter.

+
+ + + diff --git a/deps/npm/html/api/uninstall.html b/deps/npm/html/api/uninstall.html new file mode 100644 index 00000000000..3508abb31b5 --- /dev/null +++ b/deps/npm/html/api/uninstall.html @@ -0,0 +1,57 @@ + + + uninstall + + + + +
+

uninstall

uninstall a package programmatically

+ +

SYNOPSIS

+ +
npm.commands.uninstall(packages, callback)
+ +

DESCRIPTION

+ +

This acts much the same ways as uninstalling on the command-line.

+ +

The 'packages' parameter is an array of strings. Each element in the array is +the name of a package to be uninstalled.

+ +

Finally, 'callback' is a function that will be called when all packages have been +uninstalled or when an error has been encountered.

+
+ + + diff --git a/deps/npm/html/api/unpublish.html b/deps/npm/html/api/unpublish.html new file mode 100644 index 00000000000..186eed8a567 --- /dev/null +++ b/deps/npm/html/api/unpublish.html @@ -0,0 +1,61 @@ + + + unpublish + + + + +
+

unpublish

Remove a package from the registry

+ +

SYNOPSIS

+ +
npm.commands.unpublish(package, callback)
+ +

DESCRIPTION

+ +

This removes a package version from the registry, deleting its +entry and removing the tarball.

+ +

The package parameter must be defined.

+ +

Only the first element in the package parameter is used. If there is no first +element, then npm assumes that the package at the current working directory +is what is meant.

+ +

If no version is specified, or if all versions are removed then +the root package entry is removed from the registry entirely.

+
+ + + diff --git a/deps/npm/html/api/update.html b/deps/npm/html/api/update.html new file mode 100644 index 00000000000..c1f4c14b4e1 --- /dev/null +++ b/deps/npm/html/api/update.html @@ -0,0 +1,53 @@ + + + update + + + + +
+

update

Update a package

+ +

SYNOPSIS

+ +
npm.commands.update(packages, callback)
+ +

DESCRIPTION

+ +

Updates a package, upgrading it to the latest version. It also installs any missing packages.

+ +

The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.

+
+ + + diff --git a/deps/npm/html/api/version.html b/deps/npm/html/api/version.html new file mode 100644 index 00000000000..174ec680d2e --- /dev/null +++ b/deps/npm/html/api/version.html @@ -0,0 +1,59 @@ + + + version + + + + +
+

version

Bump a package version

+ +

SYNOPSIS

+ +
npm.commands.version(newversion, callback)
+ +

DESCRIPTION

+ +

Run this in a package directory to bump the version and write the new +data back to the package.json file.

+ +

If run in a git repo, it will also create a version commit and tag, and +fail if the repo is not clean.

+ +

Like all other commands, this function takes a string array as its first +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.

+
+ + + diff --git a/deps/npm/html/api/view.html b/deps/npm/html/api/view.html new file mode 100644 index 00000000000..5da1895485c --- /dev/null +++ b/deps/npm/html/api/view.html @@ -0,0 +1,134 @@ + + + view + + + + +
+

view

View registry info

+ +

SYNOPSIS

+ +
npm.commands.view(args, [silent,] callback)
+ +

DESCRIPTION

+ +

This command shows data about a package and prints it to the stream +referenced by the outfd config, which defaults to stdout.

+ +

The "args" parameter is an ordered list that closely resembles the command-line +usage. The elements should be ordered such that the first element is +the package and version (package@version). The version is optional. After that, +the rest of the parameters are fields with optional subfields ("field.subfield") +which can be used to get only the information desired from the registry.

+ +

The callback will be passed all of the data returned by the query.

+ +

For example, to get the package registry entry for the connect package, +you can do this:

+ +
npm.commands.view(["connect"], callback)
+ +

If no version is specified, "latest" is assumed.

+ +

Field names can be specified after the package descriptor. +For example, to show the dependencies of the ronn package at version +0.3.5, you could do the following:

+ +
npm.commands.view(["ronn@0.3.5", "dependencies"], callback)
+ +

You can view child field by separating them with a period. +To view the git repository URL for the latest version of npm, you could +do this:

+ +
npm.commands.view(["npm", "repository.url"], callback)
+ +

For fields that are arrays, requesting a non-numeric field will return +all of the values from the objects in the list. For example, to get all +the contributor names for the "express" project, you can do this:

+ +
npm.commands.view(["express", "contributors.email"], callback)
+ +

You may also use numeric indices in square braces to specifically select +an item in an array field. To just get the email address of the first +contributor in the list, you can do this:

+ +
npm.commands.view(["express", "contributors[0].email"], callback)
+ +

Multiple fields may be specified, and will be printed one after another. +For exampls, to get all the contributor names and email addresses, you +can do this:

+ +
npm.commands.view(["express", "contributors.name", "contributors.email"], callback)
+ +

"Person" fields are shown as a string if they would be shown as an +object. So, for example, this will show the list of npm contributors in +the shortened string format. (See npm help json for more on this.)

+ +
npm.commands.view(["npm", "contributors"], callback)
+ +

If a version range is provided, then data will be printed for every +matching version of the package. This will show which version of jsdom +was required by each matching version of yui3:

+ +
npm.commands.view(["yui3@'>0.5.4'", "dependencies.jsdom"], callback)
+ +

OUTPUT

+ +

If only a single string field for a single version is output, then it +will not be colorized or quoted, so as to enable piping the output to +another command.

+ +

If the version range matches multiple versions, than each printed value +will be prefixed with the version it applies to.

+ +

If multiple fields are requested, than each of them are prefixed with +the field name.

+ +

Console output can be disabled by setting the 'silent' parameter to true.

+ +

RETURN VALUE

+ +

The data returned will be an object in this formation:

+ +
{ <version>:
+  { <field>: <value>
+  , ... }
+, ... }
+ +

corresponding to the list of fields selected.

+
+ + + diff --git a/deps/npm/html/api/whoami.html b/deps/npm/html/api/whoami.html new file mode 100644 index 00000000000..937ee8907c5 --- /dev/null +++ b/deps/npm/html/api/whoami.html @@ -0,0 +1,56 @@ + + + whoami + + + + +
+

whoami

Display npm username

+ +

SYNOPSIS

+ +
npm.commands.whoami(args, callback)
+ +

DESCRIPTION

+ +

Print the username config to standard output.

+ +

'args' is never used and callback is never called with data. +'args' must be present or things will break.

+ +

This function is not useful programmatically

+
+ + + diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html new file mode 100644 index 00000000000..2abe2554593 --- /dev/null +++ b/deps/npm/html/doc/README.html @@ -0,0 +1,302 @@ + + + README + + + + +
+

npm

node package manager

+ +

SYNOPSIS

+ +

This is just enough info to get you up and running.

+ +

Much more info available via npm help once it's installed.

+ +

IMPORTANT

+ +

You need node v0.6 or higher to run this program.

+ +

To install an old and unsupported version of npm that works on node 0.3 +and prior, clone the git repo and dig through the old tags and branches.

+ +

Super Easy Install

+ +

npm comes with node now.

+ +

Windows Computers

+ +

Get the MSI. npm is in it.

+ +

Apple Macintosh Computers

+ +

Get the pkg. npm is in it.

+ +

Other Sorts of Unices

+ +

Run make install. npm will be installed with node.

+ +

If you want a more fancy pants install (a different version, customized +paths, etc.) then read on.

+ +

Fancy Install (Unix)

+ +

To install npm with one command, do this:

+ +
curl http://npmjs.org/install.sh | sh
+ +

To skip the npm 0.x cleanup, do this:

+ +
curl http://npmjs.org/install.sh | clean=no sh
+ +

To say "yes" to the 0.x cleanup, but skip the prompt:

+ +
curl http://npmjs.org/install.sh | clean=yes sh
+ +

If you get permission errors, you'll need to run the script as root. +(Note, just putting sudo in front of the curl will fetch the script +as root.)

+ +

Slightly Fancier

+ +

You can set any npm configuration params with that script:

+ +
curl http://npmjs.org/install.sh | npm_config_prefix=/some/path sh
+ +

Or, you can run it in uber-debuggery mode:

+ +
curl http://npmjs.org/install.sh | npm_debug=1 sh
+ +

Even Fancier

+ +

Get the code with git. Use make to build the docs and do other stuff. +If you plan on hacking on npm, make link is your friend.

+ +

If you've got the npm source code, you can also semi-permanently set +arbitrary config keys using the ./configure --key=val ..., and then +run npm commands by doing node cli.js <cmd> <args>. (This is helpful +for testing, or running stuff without actually installing npm itself.)

+ +

Fancy Windows Install

+ +

You can download a zip file from http://npmjs.org/dist/, and unpack it +in the same folder where node.exe lives.

+ +

If that's not fancy enough for you, then you can fetch the code with +git, and mess with it directly.

+ +

Installing on Cygwin

+ +

No.

+ +

Dev Install

+ +

To install the latest unstable development version from git:

+ +
git clone https://github.com/isaacs/npm.git
+cd npm
+git submodule update --init --recursive
+sudo make install     # (or: `node cli.js install -gf`)
+ +

If you're sitting in the code folder reading this document in your +terminal, then you've already got the code. Just do:

+ +
git submodule update --init --recursive
+sudo make install
+ +

and npm will install itself.

+ +

Note that github tarballs do not contain submodules, so +those won't work. You'll have to also fetch the appropriate submodules +listed in the .gitmodules file.

+ +

Permissions when Using npm to Install Other Stuff

+ +

tl;dr

+ +
  • Use sudo for greater safety. Or don't, if you prefer not to.
  • npm will downgrade permissions if it's root before running any build +scripts that package authors specified.
+ +

More details...

+ +

As of version 0.3, it is recommended to run npm as root. +This allows npm to change the user identifier to the nobody user prior +to running any package build or test commands.

+ +

If you are not the root user, or if you are on a platform that does not +support uid switching, then npm will not attempt to change the userid.

+ +

If you would like to ensure that npm always runs scripts as the +"nobody" user, and have it fail if it cannot downgrade permissions, then +set the following configuration param:

+ +
npm config set unsafe-perm false
+ +

This will prevent running in unsafe mode, even as non-root users.

+ +

Uninstalling

+ +

So sad to see you go.

+ +
sudo npm uninstall npm -g
+ +

Or, if that fails,

+ +
sudo make uninstall
+ +

More Severe Uninstalling

+ +

Usually, the above instructions are sufficient. That will remove +npm, but leave behind anything you've installed.

+ +

If you would like to remove all the packages that you have installed, +then you can use the npm ls command to find them, and then npm rm to +remove them.

+ +

To remove cruft left behind by npm 0.x, you can use the included +clean-old.sh script file. You can run it conveniently like this:

+ +
npm explore npm -g -- sh scripts/clean-old.sh
+ +

npm uses two configuration files, one for per-user configs, and another +for global (every-user) configs. You can view them by doing:

+ +
npm config get userconfig   # defaults to ~/.npmrc
+npm config get globalconfig # defaults to /usr/local/etc/npmrc
+ +

Uninstalling npm does not remove configuration files by default. You +must remove them yourself manually if you want them gone. Note that +this means that future npm installs will not remember the settings that +you have chosen.

+ +

Using npm Programmatically

+ +

If you would like to use npm programmatically, you can do that. +It's not very well documented, but it is rather simple.

+ +
var npm = require("npm")
+npm.load(myConfigObject, function (er) {
+  if (er) return handlError(er)
+  npm.commands.install(["some", "args"], function (er, data) {
+    if (er) return commandFailed(er)
+    // command succeeded, and data might have some info
+  })
+  npm.on("log", function (message) { .... })
+})
+ +

The load function takes an object hash of the command-line configs. +The various npm.commands.<cmd> functions take an array of +positional argument strings. The last argument to any +npm.commands.<cmd> function is a callback. Some commands take other +optional arguments. Read the source.

+ +

You cannot set configs individually for any single npm function at this +time. Since npm is a singleton, any call to npm.config.set will +change the value for all npm commands in that process.

+ +

See ./bin/npm-cli.js for an example of pulling config values off of the +command line arguments using nopt. You may also want to check out npm +help config to learn about all the options you can set there.

+ +

More Docs

+ +

Check out the docs, +especially the faq.

+ +

You can use the npm help command to read any of them.

+ +

If you're a developer, and you want to use npm to publish your program, +you should +read this

+ + + +

"npm" and "the npm registry" are owned by Isaac Z. Schlueter. All +rights not explicitly granted in the MIT license are reserved. See the +included LICENSE file for more details.

+ +

"Node.js" and "node" are trademarks owned by Joyent, Inc. npm is not +officially part of the Node.js project, and is neither owned by nor +officially affiliated with Joyent, Inc.

+ +

The packages in the npm registry are not part of npm itself, and are the +sole property of their respective maintainers. While every effort is +made to ensure accountability, there is absolutely no guarantee, +warrantee, or assertion made as to the quality, fitness for a specific +purpose, or lack of malice in any given npm package. Modules +published on the npm registry are not affiliated with or endorsed by +Joyent, Inc., Isaac Z. Schlueter, Ryan Dahl, or the Node.js project.

+ +

If you have a complaint about a package in the npm registry, and cannot +resolve it with the package owner, please express your concerns to +Isaac Z. Schlueter at i@izs.me.

+ +

In plain english

+ +

This is mine; not my employer's, not Node's, not Joyent's, not Ryan +Dahl's.

+ +

If you publish something, it's yours, and you are solely accountable +for it. Not me, not Node, not Joyent, not Ryan Dahl.

+ +

If other people publish something, it's theirs. Not mine, not Node's, +not Joyent's, not Ryan Dahl's.

+ +

Yes, you can publish something evil. It will be removed promptly if +reported, and we'll lose respect for you. But there is no vetting +process for published modules.

+ +

If this concerns you, inspect the source before using packages.

+ +

BUGS

+ +

When you find issues, please report them:

+ + + +

Be sure to include all of the output from the npm command that didn't work +as expected. The npm-debug.log file is also helpful to provide.

+ +

You can also look for isaacs in #node.js on irc://irc.freenode.net. He +will no doubt tell you to put the output in a gist or email.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/adduser.html b/deps/npm/html/doc/adduser.html new file mode 100644 index 00000000000..2eefce6788a --- /dev/null +++ b/deps/npm/html/doc/adduser.html @@ -0,0 +1,74 @@ + + + adduser + + + + +
+

adduser

Add a registry user account

+ +

SYNOPSIS

+ +
npm adduser
+ +

DESCRIPTION

+ +

Create or verify a user named <username> in the npm registry, and +save the credentials to the .npmrc file.

+ +

The username, password, and email are read in from prompts.

+ +

You may use this command to change your email address, but not username +or password.

+ +

To reset your password, go to http://admin.npmjs.org/

+ +

You may use this command multiple times with the same user account to +authorize on a new machine.

+ +

CONFIGURATION

+ +

registry

+ +

Default: http://registry.npmjs.org/

+ +

The base URL of the npm package registry.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/author.html b/deps/npm/html/doc/author.html new file mode 100644 index 00000000000..5cf237cb323 --- /dev/null +++ b/deps/npm/html/doc/author.html @@ -0,0 +1,69 @@ + + + author + + + + +
+

owner

Manage package owners

+ +

SYNOPSIS

+ +
npm owner ls <package name>
+npm owner add <user> <package name>
+npm owner rm <user> <package name>
+ +

DESCRIPTION

+ +

Manage ownership of published packages.

+ +
  • ls: +List all the users who have access to modify a package and push new versions. +Handy when you need to know who to bug for help.
  • add: +Add a new user as a maintainer of a package. This user is enabled to modify +metadata, publish new versions, and add other owners.
  • rm: +Remove a user from the package owner list. This immediately revokes their +privileges.
+ +

Note that there is only one level of access. Either you can modify a package, +or you can't. Future versions may contain more fine-grained access levels, but +that is not implemented at this time.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/bin.html b/deps/npm/html/doc/bin.html new file mode 100644 index 00000000000..313f2fb036f --- /dev/null +++ b/deps/npm/html/doc/bin.html @@ -0,0 +1,55 @@ + + + bin + + + + +
+

bin

Display npm bin folder

+ +

SYNOPSIS

+ +
npm bin
+ +

DESCRIPTION

+ +

Print the folder where npm will install executables.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/bugs.html b/deps/npm/html/doc/bugs.html new file mode 100644 index 00000000000..4770f5f2844 --- /dev/null +++ b/deps/npm/html/doc/bugs.html @@ -0,0 +1,71 @@ + + + bugs + + + + +
+

bugs

Bugs for a package in a web browser maybe

+ +

SYNOPSIS

+ +
npm bugs <pkgname>
+ +

DESCRIPTION

+ +

This command tries to guess at the likely location of a package's +bug tracker URL, and then tries to open it using the --browser +config param.

+ +

CONFIGURATION

+ +

browser

+ +
  • Default: OS X: "open", others: "google-chrome"
  • Type: String
+ +

The browser that is called by the npm bugs command to open websites.

+ +

registry

+ +
  • Default: https://registry.npmjs.org/
  • Type: url
+ +

The base URL of the npm package registry.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/build.html b/deps/npm/html/doc/build.html new file mode 100644 index 00000000000..2217e88a36b --- /dev/null +++ b/deps/npm/html/doc/build.html @@ -0,0 +1,60 @@ + + + build + + + + +
+

build

Build a package

+ +

SYNOPSIS

+ +
npm build <package-folder>
+ +
  • <package-folder>: +A folder containing a package.json file in its root.
+ +

DESCRIPTION

+ +

This is the plumbing command called by npm link and npm install.

+ +

It should generally not be called directly.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/bundle.html b/deps/npm/html/doc/bundle.html new file mode 100644 index 00000000000..a582db80160 --- /dev/null +++ b/deps/npm/html/doc/bundle.html @@ -0,0 +1,55 @@ + + + bundle + + + + +
+

bundle

REMOVED

+ +

DESCRIPTION

+ +

The npm bundle command has been removed in 1.0, for the simple reason +that it is no longer necessary, as the default behavior is now to +install packages into the local space.

+ +

Just use npm install now to do what npm bundle used to do.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/cache.html b/deps/npm/html/doc/cache.html new file mode 100644 index 00000000000..f815ba3f6a3 --- /dev/null +++ b/deps/npm/html/doc/cache.html @@ -0,0 +1,101 @@ + + + cache + + + + +
+

cache

Manipulates packages cache

+ +

SYNOPSIS

+ +
npm cache add <tarball file>
+npm cache add <folder>
+npm cache add <tarball url>
+npm cache add <name>@<version>
+
+npm cache ls [<path>]
+
+npm cache clean [<path>]
+ +

DESCRIPTION

+ +

Used to add, list, or clear the npm cache folder.

+ +
  • add: +Add the specified package to the local cache. This command is primarily +intended to be used internally by npm, but it can provide a way to +add data to the local installation cache explicitly.

  • ls: +Show the data in the cache. Argument is a path to show in the cache +folder. Works a bit like the find program, but limited by the +depth config.

  • clean: +Delete data out of the cache folder. If an argument is provided, then +it specifies a subpath to delete. If no argument is provided, then +the entire cache is cleared.

+ +

DETAILS

+ +

npm stores cache data in $HOME/.npm. For each package that is added +to the cache, three pieces of information are stored in +{cache}/{name}/{version}:

+ +
  • .../package/: +A folder containing the package contents as they appear in the tarball.
  • .../package.json: +The package.json file, as npm sees it, with overlays applied and a _id attribute.
  • .../package.tgz: +The tarball for that version.
+ +

Additionally, whenever a registry request is made, a .cache.json file +is placed at the corresponding URI, to store the ETag and the requested +data.

+ +

Commands that make non-essential registry requests (such as search and +view, or the completion scripts) generally specify a minimum timeout. +If the .cache.json file is younger than the specified timeout, then +they do not make an HTTP request to the registry.

+ +

CONFIGURATION

+ +

cache

+ +

Default: $HOME/.npm on Posix, or $HOME/npm-cache on Windows.

+ +

The root cache folder.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/changelog.html b/deps/npm/html/doc/changelog.html new file mode 100644 index 00000000000..dbaabca1bb4 --- /dev/null +++ b/deps/npm/html/doc/changelog.html @@ -0,0 +1,69 @@ + + + changelog + + + + +
+

changelog

Changes

+ +

HISTORY

+ +

1.0

+ +
  • Greatly simplified folder structure
  • Install locally (bundle by default)
  • Drastic rearchitecture
+ +

0.3

+ +
  • More correct permission/uid handling when running as root
  • Require node 0.4.0
  • Reduce featureset
  • Packages without "main" modules don't export modules
  • Remove support for invalid JSON (since node doesn't support it)
+ +

0.2

+ +
  • First allegedly "stable" release
  • Most functionality implemented
  • Used shim files and name@version symlinks
  • Feature explosion
  • Kind of a mess
+ +

0.1

+ +
  • push to beta, and announce
  • Solaris and Cygwin support
+ +

0.0

+ +
  • Lots of sketches and false starts; abandoned a few times
  • Core functionality established
+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/coding-style.html b/deps/npm/html/doc/coding-style.html new file mode 100644 index 00000000000..99e7254dfb2 --- /dev/null +++ b/deps/npm/html/doc/coding-style.html @@ -0,0 +1,226 @@ + + + coding-style + + + + +
+

coding-style

npm's "funny" coding style

+ +

DESCRIPTION

+ +

npm's coding style is a bit unconventional. It is not different for +difference's sake, but rather a carefully crafted style that is +designed to reduce visual clutter and make bugs more apparent.

+ +

If you want to contribute to npm (which is very encouraged), you should +make your code conform to npm's style.

+ +

Line Length

+ +

Keep lines shorter than 80 characters. It's better for lines to be +too short than to be too long. Break up long lists, objects, and other +statements onto multiple lines.

+ +

Indentation

+ +

Two-spaces. Tabs are better, but they look like hell in web browsers +(and on github), and node uses 2 spaces, so that's that.

+ +

Configure your editor appropriately.

+ +

Curly braces

+ +

Curly braces belong on the same line as the thing that necessitates them.

+ +

Bad:

+ +
function ()
+{
+ +

Good:

+ +
function () {
+ +

If a block needs to wrap to the next line, use a curly brace. Don't +use it if it doesn't.

+ +

Bad:

+ +
if (foo) { bar() }
+while (foo)
+  bar()
+ +

Good:

+ +
if (foo) bar()
+while (foo) {
+  bar()
+}
+ +

Semicolons

+ +

Don't use them except in four situations:

+ +
  • for (;;) loops. They're actually required.
  • null loops like: while (something) ; (But you'd better have a good +reason for doing that.)
  • case "foo": doSomething(); break
  • In front of a leading ( or [ at the start of the line. +This prevents the expression from being interpreted +as a function call or property access, respectively.
+ +

Some examples of good semicolon usage:

+ +
;(x || y).doSomething()
+;[a, b, c].forEach(doSomething)
+for (var i = 0; i < 10; i ++) {
+  switch (state) {
+    case "begin": start(); continue
+    case "end": finish(); break
+    default: throw new Error("unknown state")
+  }
+  end()
+}
+ +

Note that starting lines with - and + also should be prefixed +with a semicolon, but this is much less common.

+ +

Comma First

+ +

If there is a list of things separated by commas, and it wraps +across multiple lines, put the comma at the start of the next +line, directly below the token that starts the list. Put the +final token in the list on a line by itself. For example:

+ +
var magicWords = [ "abracadabra"
+                 , "gesundheit"
+                 , "ventrilo"
+                 ]
+  , spells = { "fireball" : function () { setOnFire() }
+             , "water" : function () { putOut() }
+             }
+  , a = 1
+  , b = "abc"
+  , etc
+  , somethingElse
+ +

Whitespace

+ +

Put a single space in front of ( for anything other than a function call. +Also use a single space wherever it makes things more readable.

+ +

Don't leave trailing whitespace at the end of lines. Don't indent empty +lines. Don't use more spaces than are helpful.

+ +

Functions

+ +

Use named functions. They make stack traces a lot easier to read.

+ +

Callbacks, Sync/async Style

+ +

Use the asynchronous/non-blocking versions of things as much as possible. +It might make more sense for npm to use the synchronous fs APIs, but this +way, the fs and http and child process stuff all uses the same callback-passing +methodology.

+ +

The callback should always be the last argument in the list. Its first +argument is the Error or null.

+ +

Be very careful never to ever ever throw anything. It's worse than useless. +Just send the error message back as the first argument to the callback.

+ +

Errors

+ +

Always create a new Error object with your message. Don't just return a +string message to the callback. Stack traces are handy.

+ +

Use the require("./utils/log").er function. It takes a callback and an +error message, and returns an object that will report the message in the +event of a failure. It's quite handy.

+ +
function myThing (args, cb) {
+  getData(args, function (er, data) {
+    if (er) return log.er(cb, "Couldn't get data")(er)
+    doSomethingElse(data, cb)
+  })
+}
+function justHasToWork (cb) {
+  doSomething(log.er(cb, "the doSomething failed."))
+}
+ +

Logging

+ +

Please clean up logs when they are no longer helpful. In particular, +logging the same object over and over again is not helpful. Logs should +report what's happening so that it's easier to track down where a fault +occurs.

+ +

Use appropriate log levels. The default log() function logs at the +"info" level. See config(1) and search for "loglevel".

+ +

Case, naming, etc.

+ +

Use lowerCamelCase for multiword identifiers when they refer to objects, +functions, methods, members, or anything not specified in this section.

+ +

Use UpperCamelCase for class names (things that you'd pass to "new").

+ +

Use all-lower-hyphen-css-case for multiword filenames and config keys.

+ +

Use named functions. They make stack traces easier to follow.

+ +

Use CAPS_SNAKE_CASE for constants, things that should never change +and are rarely used.

+ +

Use a single uppercase letter for function names where the function +would normally be anonymous, but needs to call itself recursively. It +makes it clear that it's a "throwaway" function.

+ +

null, undefined, false, 0

+ +

Boolean variables and functions should always be either true or +false. Don't set it to 0 unless it's supposed to be a number.

+ +

When something is intentionally missing or removed, set it to null.

+ +

Don't set things to undefined. Reserve that value to mean "not yet +set to anything."

+ +

Boolean objects are verboten.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/completion.html b/deps/npm/html/doc/completion.html new file mode 100644 index 00000000000..c0f20898039 --- /dev/null +++ b/deps/npm/html/doc/completion.html @@ -0,0 +1,68 @@ + + + completion + + + + +
+

completion

Tab Completion for npm

+ +

SYNOPSIS

+ +
. <(npm completion)
+ +

DESCRIPTION

+ +

Enables tab-completion in all npm commands.

+ +

The synopsis above +loads the completions into your current shell. Adding it to +your ~/.bashrc or ~/.zshrc will make the completions available +everywhere.

+ +

You may of course also pipe the output of npm completion to a file +such as /usr/local/etc/bash_completion.d/npm if you have a system +that will read that file for you.

+ +

When COMP_CWORD, COMP_LINE, and COMP_POINT are defined in the +environment, npm completion acts in "plumbing mode", and outputs +completions based on the arguments.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/config.html b/deps/npm/html/doc/config.html new file mode 100644 index 00000000000..724d4498cb0 --- /dev/null +++ b/deps/npm/html/doc/config.html @@ -0,0 +1,632 @@ + + + config + + + + +
+

config

Manage the npm configuration file

+ +

SYNOPSIS

+ +
npm config set <key> <value> [--global]
+npm config get <key>
+npm config delete <key>
+npm config list
+npm config edit
+npm get <key>
+npm set <key> <value> [--global]
+ +

DESCRIPTION

+ +

npm gets its configuration values from 6 sources, in this priority:

+ +

Command Line Flags

+ +

Putting --foo bar on the command line sets the +foo configuration parameter to "bar". A -- argument tells the cli +parser to stop reading flags. A --flag parameter that is at the end of +the command will be given the value of true.

+ +

Environment Variables

+ +

Any environment variables that start with npm_config_ will be interpreted +as a configuration parameter. For example, putting npm_config_foo=bar in +your environment will set the foo configuration parameter to bar. Any +environment configurations that are not given a value will be given the value +of true. Config values are case-insensitive, so NPM_CONFIG_FOO=bar will +work the same.

+ +

Per-user config file

+ +

$HOME/.npmrc (or the userconfig param, if set above)

+ +

This file is an ini-file formatted list of key = value parameters.

+ +

Global config file

+ +

$PREFIX/etc/npmrc (or the globalconfig param, if set above): +This file is an ini-file formatted list of key = value parameters

+ +

Built-in config file

+ +

path/to/npm/itself/npmrc

+ +

This is an unchangeable "builtin" +configuration file that npm keeps consistent across updates. Set +fields in here using the ./configure script that comes with npm. +This is primarily for distribution maintainers to override default +configs in a standard and consistent manner.

+ +

Default Configs

+ +

A set of configuration parameters that are internal to npm, and are +defaults if nothing else is specified.

+ +

Sub-commands

+ +

Config supports the following sub-commands:

+ +

set

+ +
npm config set key value
+ +

Sets the config key to the value.

+ +

If value is omitted, then it sets it to "true".

+ +

get

+ +
npm config get key
+ +

Echo the config value to stdout.

+ +

list

+ +
npm config list
+ +

Show all the config settings.

+ +

delete

+ +
npm config delete key
+ +

Deletes the key from all configuration files.

+ +

edit

+ +
npm config edit
+ +

Opens the config file in an editor. Use the --global flag to edit the +global config.

+ +

Shorthands and Other CLI Niceties

+ +

The following shorthands are parsed on the command-line:

+ +
  • -v: --version
  • -h, -?, --help, -H: --usage
  • -s, --silent: --loglevel silent
  • -d: --loglevel info
  • -dd, --verbose: --loglevel verbose
  • -ddd: --loglevel silly
  • -g: --global
  • -l: --long
  • -m: --message
  • -p, --porcelain: --parseable
  • -reg: --registry
  • -v: --version
  • -f: --force
  • -l: --long
  • -desc: --description
  • -S: --save
  • -y: --yes
  • -n: --yes false
  • ll and la commands: ls --long
+ +

If the specified configuration param resolves unambiguously to a known +configuration parameter, then it is expanded to that configuration +parameter. For example:

+ +
npm ls --par
+# same as:
+npm ls --parseable
+ +

If multiple single-character shorthands are strung together, and the +resulting combination is unambiguously not some other configuration +param, then it is expanded to its various component pieces. For +example:

+ +
npm ls -gpld
+# same as:
+npm ls --global --parseable --long --loglevel info
+ +

Per-Package Config Settings

+ +

When running scripts (see scripts(1)) +the package.json "config" keys are overwritten in the environment if +there is a config param of <name>[@<version>]:<key>. For example, if +the package.json has this:

+ +
{ "name" : "foo"
+, "config" : { "port" : "8080" }
+, "scripts" : { "start" : "node server.js" } }
+ +

and the server.js is this:

+ +
http.createServer(...).listen(process.env.npm_package_config_port)
+ +

then the user could change the behavior by doing:

+ +
npm config set foo:port 80
+ +

Config Settings

+ +

always-auth

+ +
  • Default: false
  • Type: Boolean
+ +

Force npm to always require authentication when accessing the registry, +even for GET requests.

+ +

bin-publish

+ +
  • Default: false
  • Type: Boolean
+ +

If set to true, then binary packages will be created on publish.

+ +

This is the way to opt into the "bindist" behavior described below.

+ +

bindist

+ +
  • Default: Unstable node versions, null, otherwise +"<node version>-<platform>-<os release>"
  • Type: String or null
+ +

Experimental: on stable versions of node, binary distributions will be +created with this tag. If a user then installs that package, and their +bindist tag is found in the list of binary distributions, they will +get that prebuilt version.

+ +

Pre-build node packages have their preinstall, install, and postinstall +scripts stripped (since they are run prior to publishing), and do not +have their build directories automatically ignored.

+ +

It's yet to be seen if this is a good idea.

+ +

browser

+ +
  • Default: OS X: "open", others: "google-chrome"
  • Type: String
+ +

The browser that is called by the npm docs command to open websites.

+ +

ca

+ +
  • Default: The npm CA certificate
  • Type: String or null
+ +

The Certificate Authority signing certificate that is trusted for SSL +connections to the registry.

+ +

Set to null to only allow "known" registrars, or to a specific CA cert +to trust only that specific signing authority.

+ +

See also the strict-ssl config.

+ +

cache

+ +
  • Default: Windows: %APPDATA%\npm-cache, Posix: ~/.npm
  • Type: path
+ +

The location of npm's cache directory. See cache(1)

+ +

color

+ +
  • Default: true on Posix, false on Windows
  • Type: Boolean or "always"
+ +

If false, never shows colors. If "always" then always shows colors. +If true, then only prints color codes for tty file descriptors.

+ +

depth

+ +
  • Default: Infinity
  • Type: Number
+ +

The depth to go when recursing directories for npm ls and +npm cache ls.

+ +

description

+ +
  • Default: true
  • Type: Boolean
+ +

Show the description in npm search

+ +

dev

+ +
  • Default: false
  • Type: Boolean
+ +

Install dev-dependencies along with packages.

+ +

Note that dev-dependencies are also installed if the npat flag is +set.

+ +

editor

+ +
  • Default: EDITOR environment variable if set, or "vi" on Posix, +or "notepad" on Windows.
  • Type: path
+ +

The command to run for npm edit or npm config edit.

+ +

force

+ +
  • Default: false
  • Type: Boolean
+ +

Makes various commands more forceful.

+ +
  • lifecycle script failure does not block progress.
  • publishing clobbers previously published versions.
  • skips cache when requesting from the registry.
  • prevents checks against clobbering non-npm files.
+ +

global

+ +
  • Default: false
  • Type: Boolean
+ +

Operates in "global" mode, so that packages are installed into the +prefix folder instead of the current working directory. See +folders(1) for more on the differences in behavior.

+ +
  • packages are installed into the prefix/node_modules folder, instead of the +current working directory.
  • bin files are linked to prefix/bin
  • man pages are linked to prefix/share/man
+ +

globalconfig

+ +
  • Default: {prefix}/etc/npmrc
  • Type: path
+ +

The config file to read for global config options.

+ +

globalignorefile

+ +
  • Default: {prefix}/etc/npmignore
  • Type: path
+ +

The config file to read for global ignore patterns to apply to all users +and all projects.

+ +

If not found, but there is a "gitignore" file in the +same directory, then that will be used instead.

+ +

group

+ +
  • Default: GID of the current process
  • Type: String or Number
+ +

The group to use when running package scripts in global mode as the root +user.

+ +

https-proxy

+ +
  • Default: the HTTPS_PROXY or https_proxy or HTTP_PROXY or +http_proxy environment variables.
  • Type: url
+ +

A proxy to use for outgoing https requests.

+ +

ignore

+ +
  • Default: ""
  • Type: string
+ +

A white-space separated list of glob patterns of files to always exclude +from packages when building tarballs.

+ +

init.version

+ +
  • Default: "0.0.0"
  • Type: semver
+ +

The value npm init should use by default for the package version.

+ +

init.author.name

+ +
  • Default: "0.0.0"
  • Type: String
+ +

The value npm init should use by default for the package author's name.

+ +

init.author.email

+ +
  • Default: ""
  • Type: String
+ +

The value npm init should use by default for the package author's email.

+ +

init.author.url

+ +
  • Default: ""
  • Type: String
+ +

The value npm init should use by default for the package author's homepage.

+ + + +
  • Default: false
  • Type: Boolean
+ +

If true, then local installs will link if there is a suitable globally +installed package.

+ +

Note that this means that local installs can cause things to be +installed into the global space at the same time. The link is only done +if one of the two conditions are met:

+ +
  • The package is not already installed globally, or
  • the globally installed version is identical to the version that is +being installed locally.
+ +

logfd

+ +
  • Default: stderr file descriptor
  • Type: Number or Stream
+ +

The location to write log output.

+ +

loglevel

+ +
  • Default: "warn"
  • Type: String
  • Values: "silent", "win", "error", "warn", "info", "verbose", "silly"
+ +

What level of logs to report. On failure, all logs are written to +npm-debug.log in the current working directory.

+ +

logprefix

+ +
  • Default: true on Posix, false on Windows
  • Type: Boolean
+ +

Whether or not to prefix log messages with "npm" and the log level. See +also "color" and "loglevel".

+ +

long

+ +
  • Default: false
  • Type: Boolean
+ +

Show extended information in npm ls

+ +

message

+ +
  • Default: "%s"
  • Type: String
+ +

Commit message which is used by npm version when creating version commit.

+ +

Any "%s" in the message will be replaced with the version number.

+ +

node-version

+ +
  • Default: process.version
  • Type: semver or false
+ +

The node version to use when checking package's "engines" hash.

+ +

npat

+ +
  • Default: false
  • Type: Boolean
+ +

Run tests on installation and report results to the +npaturl.

+ +

npaturl

+ +
  • Default: Not yet implemented
  • Type: url
+ +

The url to report npat test results.

+ +

onload-script

+ +
  • Default: false
  • Type: path
+ +

A node module to require() when npm loads. Useful for programmatic +usage.

+ +

outfd

+ +
  • Default: standard output file descriptor
  • Type: Number or Stream
+ +

Where to write "normal" output. This has no effect on log output.

+ +

parseable

+ +
  • Default: false
  • Type: Boolean
+ +

Output parseable results from commands that write to +standard output.

+ +

prefix

+ +
  • Default: node's process.installPrefix
  • Type: path
+ +

The location to install global items. If set on the command line, then +it forces non-global commands to run in the specified folder.

+ +

production

+ +
  • Default: false
  • Type: Boolean
+ +

Set to true to run in "production" mode.

+ +
  1. devDependencies are not installed at the topmost level when running +local npm install without any arguments.
  2. Set the NODE_ENV="production" for lifecycle scripts.
+ +

proprietary-attribs

+ +
  • Default: true
  • Type: Boolean
+ +

Whether or not to include proprietary extended attributes in the +tarballs created by npm.

+ +

Unless you are expecting to unpack package tarballs with something other +than npm -- particularly a very outdated tar implementation -- leave +this as true.

+ +

proxy

+ +
  • Default: HTTP_PROXY or http_proxy environment variable, or null
  • Type: url
+ +

A proxy to use for outgoing http requests.

+ +

rebuild-bundle

+ +
  • Default: true
  • Type: Boolean
+ +

Rebuild bundled dependencies after installation.

+ +

registry

+ +
  • Default: https://registry.npmjs.org/
  • Type: url
+ +

The base URL of the npm package registry.

+ +

rollback

+ +
  • Default: true
  • Type: Boolean
+ +

Remove failed installs.

+ +

save

+ +
  • Default: false
  • Type: Boolean
+ +

Save installed packages to a package.json file as dependencies.

+ +

Only works if there is already a package.json file present.

+ +

searchopts

+ +
  • Default: ""
  • Type: String
+ +

Space-separated options that are always passed to search.

+ +

searchexclude

+ +
  • Default: ""
  • Type: String
+ +

Space-separated options that limit the results from search.

+ +

shell

+ +
  • Default: SHELL environment variable, or "bash" on Posix, or "cmd" on +Windows
  • Type: path
+ +

The shell to run for the npm explore command.

+ +

strict-ssl

+ +
  • Default: true
  • Type: Boolean
+ +

Whether or not to do SSL key validation when making requests to the +registry via https.

+ +

See also the ca config.

+ +

tag

+ +
  • Default: latest
  • Type: String
+ +

If you ask npm to install a package and don't tell it a specific version, then +it will install the specified tag.

+ +

Also the tag that is added to the package@version specified by the npm +tag command, if no explicit tag is given.

+ +

tmp

+ +
  • Default: TMPDIR environment variable, or "/tmp"
  • Type: path
+ +

Where to store temporary files and folders. All temp files are deleted +on success, but left behind on failure for forensic purposes.

+ +

unicode

+ +
  • Default: true
  • Type: Boolean
+ +

When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters to draw trees.

+ +

unsafe-perm

+ +
  • Default: false if running as root, true otherwise
  • Type: Boolean
+ +

Set to true to suppress the UID/GID switching when running package +scripts. If set explicitly to false, then installing as a non-root user +will fail.

+ +

usage

+ +
  • Default: false
  • Type: Boolean
+ +

Set to show short usage output (like the -H output) +instead of complete help when doing help(1).

+ +

user

+ +
  • Default: "nobody"
  • Type: String or Number
+ +

The UID to set to when running package scripts as root.

+ +

username

+ +
  • Default: null
  • Type: String
+ +

The username on the npm registry. Set with npm adduser

+ +

userconfig

+ +
  • Default: ~/.npmrc
  • Type: path
+ +

The location of user-level configuration settings.

+ +

userignorefile

+ +
  • Default: ~/.npmignore
  • Type: path
+ +

The location of a user-level ignore file to apply to all packages.

+ +

If not found, but there is a .gitignore file in the same directory, then +that will be used instead.

+ +

umask

+ +
  • Default: 022
  • Type: Octal numeric string
+ +

The "umask" value to use when setting the file creation mode on files +and folders.

+ +

Folders and executables are given a mode which is 0777 masked against +this value. Other files are given a mode which is 0666 masked against +this value. Thus, the defaults are 0755 and 0644 respectively.

+ +

version

+ +
  • Default: false
  • Type: boolean
+ +

If true, output the npm version and exit successfully.

+ +

Only relevant when specified explicitly on the command line.

+ +

viewer

+ +
  • Default: "man" on Posix, "browser" on Windows
  • Type: path
+ +

The program to use to view help content.

+ +

Set to "browser" to view html help content in the default web browser.

+ +

yes

+ +
  • Default: null
  • Type: Boolean or null
+ +

If set to null, then prompt the user for responses in some +circumstances.

+ +

If set to true, then answer "yes" to any prompt. If set to false +then answer "no" to any prompt.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/deprecate.html b/deps/npm/html/doc/deprecate.html new file mode 100644 index 00000000000..65af3e78694 --- /dev/null +++ b/deps/npm/html/doc/deprecate.html @@ -0,0 +1,64 @@ + + + deprecate + + + + +
+

deprecate

Deprecate a version of a package

+ +

SYNOPSIS

+ +
npm deprecate <name>[@<version>] <message>
+ +

DESCRIPTION

+ +

This command will update the npm registry entry for a package, providing +a deprecation warning to all who attempt to install it.

+ +

It works on version ranges as well as specific versions, so you can do +something like this:

+ +
npm deprecate my-thing@"< 0.2.3" "critical bug fixed in v0.2.3"
+ +

Note that you must be the package owner to deprecate something. See the +owner and adduser help topics.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/developers.html b/deps/npm/html/doc/developers.html new file mode 100644 index 00000000000..9d48bbde0a6 --- /dev/null +++ b/deps/npm/html/doc/developers.html @@ -0,0 +1,185 @@ + + + developers + + + + +
+

developers

Developer Guide

+ +

DESCRIPTION

+ +

So, you've decided to use npm to develop (and maybe publish/deploy) +your project.

+ +

Fantastic!

+ +

There are a few things that you need to do above the simple steps +that your users will do to install your program.

+ +

About These Documents

+ +

These are man pages. If you install npm, you should be able to +then do man npm-thing to get the documentation on a particular +topic, or npm help thing to see the same information.

+ +

What is a `package`

+ +

A package is:

+ +
  • a) a folder containing a program described by a package.json file
  • b) a gzipped tarball containing (a)
  • c) a url that resolves to (b)
  • d) a <name>@<version> that is published on the registry with (c)
  • e) a <name>@<tag> that points to (d)
  • f) a <name> that has a "latest" tag satisfying (e)
+ +

Even if you never publish your package, you can still get a lot of +benefits of using npm if you just want to write a node program (a), and +perhaps if you also want to be able to easily install it elsewhere +after packing it up into a tarball (b).

+ +

The package.json File

+ +

You need to have a package.json file in the root of your project to do +much of anything with npm. That is basically the whole interface.

+ +

See json(1) for details about what goes in that file. At the very +least, you need:

+ +
  • name: +This should be a string that identifies your project. Please do not +use the name to specify that it runs on node, or is in JavaScript. +You can use the "engines" field to explicitly state the versions of +node (or whatever else) that your program requires, and it's pretty +well assumed that it's javascript.

    It does not necessarily need to match your github repository name.

    So, node-foo and bar-js are bad names. foo or bar are better.

  • version: +A semver-compatible version.

  • engines: +Specify the versions of node (or whatever else) that your program +runs on. The node API changes a lot, and there may be bugs or new +functionality that you depend on. Be explicit.

  • author: +Take some credit.

  • scripts: +If you have a special compilation or installation script, then you +should put it in the scripts hash. You should definitely have at +least a basic smoke-test command as the "scripts.test" field. +See scripts(1).

  • main: +If you have a single module that serves as the entry point to your +program (like what the "foo" package gives you at require("foo")), +then you need to specify that in the "main" field.

  • directories: +This is a hash of folders. The best ones to include are "lib" and +"doc", but if you specify a folder full of man pages in "man", then +they'll get installed just like these ones.

+ +

You can use npm init in the root of your package in order to get you +started with a pretty basic package.json file. See init(1) for +more info.

+ +

Keeping files *out* of your package

+ +

Use a .npmignore file to keep stuff out of your package. If there's +no .npmignore file, but there is a .gitignore file, then npm will +ignore the stuff matched by the .gitignore file. If you want to +include something that is excluded by your .gitignore file, you can +create an empty .npmignore file to override it.

+ + + +

npm link is designed to install a development package and see the +changes in real time without having to keep re-installing it. (You do +need to either re-link or npm rebuild -g to update compiled packages, +of course.)

+ +

More info at link(1).

+ +

Before Publishing: Make Sure Your Package Installs and Works

+ +

This is important.

+ +

If you can not install it locally, you'll have +problems trying to publish it. Or, worse yet, you'll be able to +publish it, but you'll be publishing a broken or pointless package. +So don't do that.

+ +

In the root of your package, do this:

+ +
npm install . -g
+ +

That'll show you that it's working. If you'd rather just create a symlink +package that points to your working directory, then do this:

+ +
npm link
+ +

Use npm ls -g to see if it's there.

+ +

To test a local install, go into some other folder, and then do:

+ +
cd ../some-other-folder
+npm install ../my-package
+ +

to install it locally into the node_modules folder in that other place.

+ +

Then go into the node-repl, and try using require("my-thing") to +bring in your module's main module.

+ +

Create a User Account

+ +

Create a user with the adduser command. It works like this:

+ +
npm adduser
+ +

and then follow the prompts.

+ +

This is documented better in adduser(1).

+ +

Publish your package

+ +

This part's easy. IN the root of your folder, do this:

+ +
npm publish
+ +

You can give publish a url to a tarball, or a filename of a tarball, +or a path to a folder.

+ +

Note that pretty much everything in that folder will be exposed +by default. So, if you have secret stuff in there, use a .npminclude +or .npmignore file to list out the globs to include/ignore, or publish +from a fresh checkout.

+ +

Brag about it

+ +

Send emails, write blogs, blab in IRC.

+ +

Tell the world how easy it is to install your program!

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/docs.html b/deps/npm/html/doc/docs.html new file mode 100644 index 00000000000..6e600c6a03e --- /dev/null +++ b/deps/npm/html/doc/docs.html @@ -0,0 +1,72 @@ + + + docs + + + + +
+

docs

Docs for a package in a web browser maybe

+ +

SYNOPSIS

+ +
npm docs <pkgname>
+npm home <pkgname>
+ +

DESCRIPTION

+ +

This command tries to guess at the likely location of a package's +documentation URL, and then tries to open it using the --browser +config param.

+ +

CONFIGURATION

+ +

browser

+ +
  • Default: OS X: "open", others: "google-chrome"
  • Type: String
+ +

The browser that is called by the npm docs command to open websites.

+ +

registry

+ +
  • Default: https://registry.npmjs.org/
  • Type: url
+ +

The base URL of the npm package registry.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/edit.html b/deps/npm/html/doc/edit.html new file mode 100644 index 00000000000..c40072736ca --- /dev/null +++ b/deps/npm/html/doc/edit.html @@ -0,0 +1,72 @@ + + + edit + + + + +
+

edit

Edit an installed package

+ +

SYNOPSIS

+ +
npm edit <name>[@<version>]
+ +

DESCRIPTION

+ +

Opens the package folder in the default editor (or whatever you've +configured as the npm editor config -- see config(1).)

+ +

After it has been edited, the package is rebuilt so as to pick up any +changes in compiled packages.

+ +

For instance, you can do npm install connect to install connect +into your package, and then npm edit connect to make a few +changes to your locally installed copy.

+ +

CONFIGURATION

+ +

editor

+ +
  • Default: EDITOR environment variable if set, or "vi" on Posix, +or "notepad" on Windows.
  • Type: path
+ +

The command to run for npm edit or npm config edit.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/explore.html b/deps/npm/html/doc/explore.html new file mode 100644 index 00000000000..36b1aeb6413 --- /dev/null +++ b/deps/npm/html/doc/explore.html @@ -0,0 +1,75 @@ + + + explore + + + + +
+

explore

Browse an installed package

+ +

SYNOPSIS

+ +
npm explore <name>[@<version>] [ -- <cmd>]
+ +

DESCRIPTION

+ +

Spawn a subshell in the directory of the installed package specified.

+ +

If a command is specified, then it is run in the subshell, which then +immediately terminates.

+ +

This is particularly handy in the case of git submodules in the +node_modules folder:

+ +
npm explore some-dependency -- git pull origin master
+ +

Note that the package is not automatically rebuilt afterwards, so be +sure to use npm rebuild <pkg> if you make any changes.

+ +

CONFIGURATION

+ +

shell

+ +
  • Default: SHELL environment variable, or "bash" on Posix, or "cmd" on +Windows
  • Type: path
+ +

The shell to run for the npm explore command.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/faq.html b/deps/npm/html/doc/faq.html new file mode 100644 index 00000000000..883f0df771a --- /dev/null +++ b/deps/npm/html/doc/faq.html @@ -0,0 +1,250 @@ + + + faq + + + + +
+

faq

Frequently Asked Questions

+ +

Where can I find these docs in HTML?

+ +

http://npmjs.org/doc/, or run:

+ +
npm config set viewer browser
+ +

to open these documents in your default web browser rather than man.

+ +

It didn't work.

+ +

That's not really a question.

+ +

Why didn't it work?

+ +

I don't know yet.

+ +

Read the error output, and if you can't figure out what it means, +do what it says and post a bug with all the information it asks for.

+ +

Where does npm put stuff?

+ +

See folders(1)

+ +

tl;dr:

+ +
  • Use the npm root command to see where modules go, and the npm bin +command to see where executables go
  • Global installs are different from local installs. If you install +something with the -g flag, then its executables go in npm bin -g +and its modules go in npm root -g.
+ +

How do I install something everywhere?

+ +

Install it globally by tacking -g or --global to the command.

+ +

I installed something globally, but I can't `require()` it

+ +

Install it locally.

+ +

I don't wanna.

+ +

Check out npm link. You might like it.

+ +

No, I really want 0.x style 'everything global' style.

+ +

Ok, fine. Do this:

+ +
echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bashrc
+. ~/.bashrc
+npm config set global true
+ +

This is not recommended.

+ +

Many things will not work if you do this. Make sure you read and +understand config(1) and global(1) before you complain +about things being broken.

+ +

When you realize what a mistake it was, do this to switch back:

+ +
npm config delete global --local
+ +

If 'npm' is an acronym, why is it never capitalized?

+ +

Contrary to the belief of many, "npm" is not in fact an abbreviation for +"Node Package Manager". It is a recursive bacronymic abbreviation for +"npm is not an acronym". (If it was "ninaa", then it would be an +acronym, and thus incorrectly named.)

+ +

"NPM", however, is an acronym (more precisely, a capitonym) for the +National Association of Pastoral Musicians. You can learn more +about them at http://npm.org/.

+ +

In software, "NPM" is a non-parametric mapping utility written by +Chris Rorden. You can analyze pictures of brains with it. Learn more +about the (capitalized) NPM program at http://www.cabiatl.com/mricro/npm/.

+ +

The first seed that eventually grew into this flower was a bash utility +named "pm", which was a shortened descendent of "pkgmakeinst", a +bash function that was used to install various different things on different +platforms, most often using Yahoo's yinst. If npm was ever an +acronym for anything, it was node pm or maybe new pm.

+ +

So, in all seriousness, the "npm" project is named after its command-line +utility, which was organically selected to be easily typed by a right-handed +programmer using a US QWERTY keyboard layout, ending with the +right-ring-finger in a postition to type the - key for flags and +other command-line arguments. That command-line utility is always +lower-case, though it starts most sentences it is a part of.

+ +

How do I list installed packages?

+ +

npm ls

+ +

How do I search for packages?

+ +

npm search

+ +

Arguments are greps. npm search jsdom shows jsdom packages.

+ +

How do I update npm?

+ +
npm update npm -g
+ +

You can also update all outdated local packages by doing npm update without +any arguments, or global packages by doing npm update -g.

+ +

Occasionally, the version of npm will progress such that the current +version cannot be properly installed with the version that you have +installed already. (Consider, if there is ever a bug in the update +command.)

+ +

In those cases, you can do this:

+ +
curl http://npmjs.org/install.sh | sh
+ +

What is a `package`?

+ +

A package is:

+ +
  • a) a folder containing a program described by a package.json file
  • b) a gzipped tarball containing (a)
  • c) a url that resolves to (b)
  • d) a <name>@<version> that is published on the registry with (c)
  • e) a <name>@<tag> that points to (d)
  • f) a <name> that has a "latest" tag satisfying (e)
  • g) a git url that, when cloned, results in (a).
+ +

Even if you never publish your package, you can still get a lot of +benefits of using npm if you just want to write a node program (a), and +perhaps if you also want to be able to easily install it elsewhere +after packing it up into a tarball (b).

+ +

Git urls can be of the form:

+ +
git://github.com/user/project.git#commit-ish
+git+ssh://user@hostname:project.git#commit-ish
+git+http://user@hostname/project/blah.git#commit-ish
+git+https://user@hostname/project/blah.git#commit-ish
+ +

The commit-ish can be any tag, sha, or branch which can be supplied as +an argument to git checkout. The default is master.

+ +

How do I install node with npm?

+ +

You don't. Try one of these:

+ + + +

How can I use npm for development?

+ +

See developers(1) and json(1).

+ +

You'll most likely want to npm link your development folder. That's +awesomely handy.

+ +

To set up your own private registry, check out registry(1).

+ +

Can I list a url as a dependency?

+ +

Yes. It should be a url to a gzipped tarball containing a single folder +that has a package.json in its root, or a git url. +(See "what is a package?" above.)

+ + + +

See link(1)

+ +

The package registry website. What is that exactly?

+ +

See registry(1).

+ +

What's up with the insecure channel warnings?

+ +

Until node 0.4.10, there were problems sending big files over HTTPS. That +means that publishes go over HTTP by default in those versions of node.

+ +

I forgot my password, and can't publish. How do I reset it?

+ +

Go to http://admin.npmjs.org/reset.

+ +

I get ECONNREFUSED a lot. What's up?

+ +

Either the registry is down, or node's DNS isn't able to reach out. +This happens a lot if you don't follow all the steps in the Cygwin +setup doc.

+ +

To check if the registry is down, open up +http://registry.npmjs.org/-/short +in a web browser. This will also tell you if you are just unable to +access the internet for some reason.

+ +

If the registry IS down, let me know by emailing or posting an issue. +We'll have someone kick it or something.

+ +

Who does npm?

+ +

npm view npm author

+ +

npm view npm contributors

+ +

I have a question or request not addressed here. Where should I put it?

+ +

Discuss it on the mailing list, or post an issue.

+ + + +

Why does npm hate me?

+ +

npm is not capable of hatred. It loves everyone, especially you.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/find.html b/deps/npm/html/doc/find.html new file mode 100644 index 00000000000..00b2f25d1e0 --- /dev/null +++ b/deps/npm/html/doc/find.html @@ -0,0 +1,75 @@ + + + find + + + + +
+

search

Search for packages

+ +

SYNOPSIS

+ +
npm search [search terms ...]
+ +

DESCRIPTION

+ +

Search the registry for packages matching the search terms.

+ +

CONFIGURATION

+ +

description

+ +
  • Default: true
  • Type: Boolean
+ +

Show the description in npm search

+ +

searchopts

+ +
  • Default: ""
  • Type: String
+ +

Space-separated options that are always passed to search.

+ +

searchexclude

+ +
  • Default: ""
  • Type: String
+ +

Space-separated options that limit the results from search.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/folders.html b/deps/npm/html/doc/folders.html new file mode 100644 index 00000000000..a5cff405e6a --- /dev/null +++ b/deps/npm/html/doc/folders.html @@ -0,0 +1,240 @@ + + + folders + + + + +
+

folders

Folder Structures Used by npm

+ +

DESCRIPTION

+ +

npm puts various things on your computer. That's its job.

+ +

This document will tell you what it puts where.

+ +

tl;dr

+ +
  • Local install (default): puts stuff in ./node_modules of the current +package root.
  • Global install (with -g): puts stuff in /usr/local or wherever node +is installed.
  • Install it locally if you're going to require() it.
  • Install it globally if you're going to run it on the command line.
  • If you need both, then install it in both places, or use npm link.
+ +

prefix Configuration

+ +

The prefix config defaults to the location where node is installed. +On most systems, this is /usr/local, and most of the time is the same +as node's process.installPrefix.

+ +

On windows, this is the exact location of the node.exe binary. On Unix +systems, it's one level up, since node is typically installed at +{prefix}/bin/node rather than {prefix}/node.exe.

+ +

When the global flag is set, npm installs things into this prefix. +When it is not set, it uses the root of the current package, or the +current working directory if not in a package already.

+ +

Node Modules

+ +

Packages are dropped into the node_modules folder under the prefix. +When installing locally, this means that you can +require("packagename") to load its main module, or +require("packagename/lib/path/to/sub/module") to load other modules.

+ +

Global installs on Unix systems go to {prefix}/lib/node_modules. +Global installs on Windows go to {prefix}/node_modules (that is, no +lib folder.)

+ +

If you wish to require() a package, then install it locally.

+ +

Executables

+ +

When in global mode, executables are linked into {prefix}/bin on Unix, +or directly into {prefix} on Windows.

+ +

When in local mode, executables are linked into +./node_modules/.bin so that they can be made available to scripts run +through npm. (For example, so that a test runner will be in the path +when you run npm test.)

+ +

Man Pages

+ +

When in global mode, man pages are linked into {prefix}/share/man.

+ +

When in local mode, man pages are not installed.

+ +

Man pages are not installed on Windows systems.

+ +

Cache

+ +

See cache(1). Cache files are stored in ~/.npm on Posix, or +~/npm-cache on Windows.

+ +

This is controlled by the cache configuration param.

+ +

Temp Files

+ +

Temporary files are stored by default in the folder specified by the +tmp config, which defaults to the TMPDIR, TMP, or TEMP environment +variables, or /tmp on Unix and c:\windows\temp on Windows.

+ +

Temp files are given a unique folder under this root for each run of the +program, and are deleted upon successful exit.

+ +

More Information

+ +

When installing locally, npm first tries to find an appropriate +prefix folder. This is so that npm install foo@1.2.3 will install +to the sensible root of your package, even if you happen to have cded +into some other folder.

+ +

Starting at the $PWD, npm will walk up the folder tree checking for a +folder that contains either a package.json file, or a node_modules +folder. If such a thing is found, then that is treated as the effective +"current directory" for the purpose of running npm commands. (This +behavior is inspired by and similar to git's .git-folder seeking +logic when running git commands in a working dir.)

+ +

If no package root is found, then the current folder is used.

+ +

When you run npm install foo@1.2.3, then the package is loaded into +the cache, and then unpacked into ./node_modules/foo. Then, any of +foo's dependencies are similarly unpacked into +./node_modules/foo/node_modules/....

+ +

Any bin files are symlinked to ./node_modules/.bin/, so that they may +be found by npm scripts when necessary.

+ +

Global Installation

+ +

If the global configuration is set to true, then npm will +install packages "globally".

+ +

For global installation, packages are installed roughly the same way, +but using the folders described above.

+ +

Cycles, Conflicts, and Folder Parsimony

+ +

Cycles are handled using the property of node's module system that it +walks up the directories looking for node_modules folders. So, at every +stage, if a package is already installed in an ancestor node_modules +folder, then it is not installed at the current location.

+ +

Consider the case above, where foo -> bar -> baz. Imagine if, in +addition to that, baz depended on bar, so you'd have: +foo -> bar -> baz -> bar -> baz .... However, since the folder +structure is: foo/node_modules/bar/node_modules/baz, there's no need to +put another copy of bar into .../baz/node_modules, since when it calls +require("bar"), it will get the copy that is installed in +foo/node_modules/bar.

+ +

This shortcut is only used if the exact same +version would be installed in multiple nested node_modules folders. It +is still possible to have a/node_modules/b/node_modules/a if the two +"a" packages are different versions. However, without repeating the +exact same package multiple times, an infinite regress will always be +prevented.

+ +

Another optimization can be made by installing dependencies at the +highest level possible, below the localized "target" folder.

+ +

Example

+ +

Consider this dependency graph:

+ +
foo
++-- blerg@1.2.5
++-- bar@1.2.3
+|   +-- blerg@1.x (latest=1.3.7)
+|   +-- baz@2.x
+|   |   `-- quux@3.x
+|   |       `-- bar@1.2.3 (cycle)
+|   `-- asdf@*
+`-- baz@1.2.3
+    `-- quux@3.x
+        `-- bar
+ +

In this case, we might expect a folder structure like this:

+ +
foo
++-- node_modules
+    +-- blerg (1.2.5) <---[A]
+    +-- bar (1.2.3) <---[B]
+    |   +-- node_modules
+    |   |   `-- baz (2.0.2) <---[C]
+    |   |       `-- node_modules
+    |   |           `-- quux (3.2.0)
+    |   `-- asdf (2.3.4)
+    `-- baz (1.2.3) <---[D]
+        `-- node_modules
+            `-- quux (3.2.0) <---[E]
+ +

Since foo depends directly on bar@1.2.3 and baz@1.2.3, those are +installed in foo's node_modules folder.

+ +

Even though the latest copy of blerg is 1.3.7, foo has a specific +dependency on version 1.2.5. So, that gets installed at [A]. Since the +parent installation of blerg satisfie's bar's dependency on blerg@1.x, +it does not install another copy under [B].

+ +

Bar [B] also has dependencies on baz and asdf, so those are installed in +bar's node_modules folder. Because it depends on baz@2.x, it cannot +re-use the baz@1.2.3 installed in the parent node_modules folder [D], +and must install its own copy [C].

+ +

Underneath bar, the baz->quux->bar dependency creates a cycle. +However, because bar is already in quux's ancestry [B], it does not +unpack another copy of bar into that folder.

+ +

Underneath foo->baz [D], quux's [E] folder tree is empty, because its +dependency on bar is satisfied by the parent folder copy installed at [B].

+ +

For a graphical breakdown of what is installed where, use npm ls.

+ +

Publishing

+ +

Upon publishing, npm will look in the node_modules folder. If any of +the items there are not in the bundledDependencies array, then they will +not be included in the package tarball.

+ +

This allows a package maintainer to install all of their dependencies +(and dev dependencies) locally, but only re-publish those items that +cannot be found elsewhere. See json(1) for more information.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/get.html b/deps/npm/html/doc/get.html new file mode 100644 index 00000000000..3db6dfb0e05 --- /dev/null +++ b/deps/npm/html/doc/get.html @@ -0,0 +1,621 @@ + + + get + + + + +
+

config

Manage the npm configuration file

+ +

SYNOPSIS

+ +
npm config set <key> <value> [--global]
+npm config get <key>
+npm config delete <key>
+npm config list
+npm config edit
+npm get <key>
+npm set <key> <value> [--global]
+ +

DESCRIPTION

+ +

npm gets its configuration values from 6 sources, in this priority:

+ +

Command Line Flags

+ +

Putting --foo bar on the command line sets the +foo configuration parameter to "bar". A -- argument tells the cli +parser to stop reading flags. A --flag parameter that is at the end of +the command will be given the value of true.

+ +

Environment Variables

+ +

Any environment variables that start with npm_config_ will be interpreted +as a configuration parameter. For example, putting npm_config_foo=bar in +your environment will set the foo configuration parameter to bar. Any +environment configurations that are not given a value will be given the value +of true. Config values are case-insensitive, so NPM_CONFIG_FOO=bar will +work the same.

+ +

Per-user config file

+ +

$HOME/.npmrc (or the userconfig param, if set above)

+ +

This file is an ini-file formatted list of key = value parameters.

+ +

Global config file

+ +

$PREFIX/etc/npmrc (or the globalconfig param, if set above): +This file is an ini-file formatted list of key = value parameters

+ +

Built-in config file

+ +

path/to/npm/itself/npmrc

+ +

This is an unchangeable "builtin" +configuration file that npm keeps consistent across updates. Set +fields in here using the ./configure script that comes with npm. +This is primarily for distribution maintainers to override default +configs in a standard and consistent manner.

+ +

Default Configs

+ +

A set of configuration parameters that are internal to npm, and are +defaults if nothing else is specified.

+ +

Sub-commands

+ +

Config supports the following sub-commands:

+ +

set

+ +
npm config set key value
+ +

Sets the config key to the value.

+ +

If value is omitted, then it sets it to "true".

+ +

get

+ +
npm config get key
+ +

Echo the config value to stdout.

+ +

list

+ +
npm config list
+ +

Show all the config settings.

+ +

delete

+ +
npm config delete key
+ +

Deletes the key from all configuration files.

+ +

edit

+ +
npm config edit
+ +

Opens the config file in an editor. Use the --global flag to edit the +global config.

+ +

Shorthands and Other CLI Niceties

+ +

The following shorthands are parsed on the command-line:

+ +
  • -v: --version
  • -h, -?, --help, -H: --usage
  • -s, --silent: --loglevel silent
  • -d: --loglevel info
  • -dd, --verbose: --loglevel verbose
  • -ddd: --loglevel silly
  • -g: --global
  • -l: --long
  • -m: --message
  • -p, --porcelain: --parseable
  • -reg: --registry
  • -v: --version
  • -f: --force
  • -l: --long
  • -desc: --description
  • -S: --save
  • -y: --yes
  • -n: --yes false
  • ll and la commands: ls --long
+ +

If the specified configuration param resolves unambiguously to a known +configuration parameter, then it is expanded to that configuration +parameter. For example:

+ +
npm ls --par
+# same as:
+npm ls --parseable
+ +

If multiple single-character shorthands are strung together, and the +resulting combination is unambiguously not some other configuration +param, then it is expanded to its various component pieces. For +example:

+ +
npm ls -gpld
+# same as:
+npm ls --global --parseable --long --loglevel info
+ +

Per-Package Config Settings

+ +

When running scripts (see scripts(1)) +the package.json "config" keys are overwritten in the environment if +there is a config param of <name>[@<version>]:<key>. For example, if +the package.json has this:

+ +
{ "name" : "foo"
+, "config" : { "port" : "8080" }
+, "scripts" : { "start" : "node server.js" } }
+ +

and the server.js is this:

+ +
http.createServer(...).listen(process.env.npm_package_config_port)
+ +

then the user could change the behavior by doing:

+ +
npm config set foo:port 80
+ +

Config Settings

+ +

always-auth

+ +
  • Default: false
  • Type: Boolean
+ +

Force npm to always require authentication when accessing the registry, +even for GET requests.

+ +

bin-publish

+ +
  • Default: false
  • Type: Boolean
+ +

If set to true, then binary packages will be created on publish.

+ +

This is the way to opt into the "bindist" behavior described below.

+ +

bindist

+ +
  • Default: Unstable node versions, null, otherwise +"<node version>-<platform>-<os release>"
  • Type: String or null
+ +

Experimental: on stable versions of node, binary distributions will be +created with this tag. If a user then installs that package, and their +bindist tag is found in the list of binary distributions, they will +get that prebuilt version.

+ +

Pre-build node packages have their preinstall, install, and postinstall +scripts stripped (since they are run prior to publishing), and do not +have their build directories automatically ignored.

+ +

It's yet to be seen if this is a good idea.

+ +

browser

+ +
  • Default: OS X: "open", others: "google-chrome"
  • Type: String
+ +

The browser that is called by the npm docs command to open websites.

+ +

ca

+ +
  • Default: The npm CA certificate
  • Type: String or null
+ +

The Certificate Authority signing certificate that is trusted for SSL +connections to the registry.

+ +

Set to null to only allow "known" registrars, or to a specific CA cert +to trust only that specific signing authority.

+ +

See also the strict-ssl config.

+ +

cache

+ +
  • Default: Windows: ~/npm-cache, Posix: ~/.npm
  • Type: path
+ +

The location of npm's cache directory. See cache(1)

+ +

color

+ +
  • Default: true on Posix, false on Windows
  • Type: Boolean or "always"
+ +

If false, never shows colors. If "always" then always shows colors. +If true, then only prints color codes for tty file descriptors.

+ +

depth

+ +
  • Default: Infinity
  • Type: Number
+ +

The depth to go when recursing directories for npm ls and +npm cache ls.

+ +

description

+ +
  • Default: true
  • Type: Boolean
+ +

Show the description in npm search

+ +

dev

+ +
  • Default: false
  • Type: Boolean
+ +

Install dev-dependencies along with packages.

+ +

Note that dev-dependencies are also installed if the npat flag is +set.

+ +

editor

+ +
  • Default: EDITOR environment variable if set, or "vi" on Posix, +or "notepad" on Windows.
  • Type: path
+ +

The command to run for npm edit or npm config edit.

+ +

force

+ +
  • Default: false
  • Type: Boolean
+ +

Makes various commands more forceful.

+ +
  • lifecycle script failure does not block progress.
  • publishing clobbers previously published versions.
  • skips cache when requesting from the registry.
  • prevents checks against clobbering non-npm files.
+ +

global

+ +
  • Default: false
  • Type: Boolean
+ +

Operates in "global" mode, so that packages are installed into the +prefix folder instead of the current working directory. See +folders(1) for more on the differences in behavior.

+ +
  • packages are installed into the prefix/node_modules folder, instead of the +current working directory.
  • bin files are linked to prefix/bin
  • man pages are linked to prefix/share/man
+ +

globalconfig

+ +
  • Default: {prefix}/etc/npmrc
  • Type: path
+ +

The config file to read for global config options.

+ +

globalignorefile

+ +
  • Default: {prefix}/etc/npmignore
  • Type: path
+ +

The config file to read for global ignore patterns to apply to all users +and all projects.

+ +

If not found, but there is a "gitignore" file in the +same directory, then that will be used instead.

+ +

group

+ +
  • Default: GID of the current process
  • Type: String or Number
+ +

The group to use when running package scripts in global mode as the root +user.

+ +

https-proxy

+ +
  • Default: the HTTPS_PROXY or https_proxy or HTTP_PROXY or +http_proxy environment variables.
  • Type: url
+ +

A proxy to use for outgoing https requests.

+ +

ignore

+ +
  • Default: ""
  • Type: string
+ +

A white-space separated list of glob patterns of files to always exclude +from packages when building tarballs.

+ +

init.version

+ +
  • Default: "0.0.0"
  • Type: semver
+ +

The value npm init should use by default for the package version.

+ +

init.author.name

+ +
  • Default: "0.0.0"
  • Type: String
+ +

The value npm init should use by default for the package author's name.

+ +

init.author.email

+ +
  • Default: ""
  • Type: String
+ +

The value npm init should use by default for the package author's email.

+ +

init.author.url

+ +
  • Default: ""
  • Type: String
+ +

The value npm init should use by default for the package author's homepage.

+ + + +
  • Default: false
  • Type: Boolean
+ +

If true, then local installs will link if there is a suitable globally +installed package.

+ +

Note that this means that local installs can cause things to be +installed into the global space at the same time. The link is only done +if one of the two conditions are met:

+ +
  • The package is not already installed globally, or
  • the globally installed version is identical to the version that is +being installed locally.
+ +

logfd

+ +
  • Default: stderr file descriptor
  • Type: Number or Stream
+ +

The location to write log output.

+ +

loglevel

+ +
  • Default: "warn"
  • Type: String
  • Values: "silent", "win", "error", "warn", "info", "verbose", "silly"
+ +

What level of logs to report. On failure, all logs are written to +npm-debug.log in the current working directory.

+ +

logprefix

+ +
  • Default: true on Posix, false on Windows
  • Type: Boolean
+ +

Whether or not to prefix log messages with "npm" and the log level. See +also "color" and "loglevel".

+ +

long

+ +
  • Default: false
  • Type: Boolean
+ +

Show extended information in npm ls

+ +

message

+ +
  • Default: "%s"
  • Type: String
+ +

Commit message which is used by npm version when creating version commit.

+ +

Any "%s" in the message will be replaced with the version number.

+ +

node-version

+ +
  • Default: process.version
  • Type: semver or false
+ +

The node version to use when checking package's "engines" hash.

+ +

npat

+ +
  • Default: false
  • Type: Boolean
+ +

Run tests on installation and report results to the +npaturl.

+ +

npaturl

+ +
  • Default: Not yet implemented
  • Type: url
+ +

The url to report npat test results.

+ +

onload-script

+ +
  • Default: false
  • Type: path
+ +

A node module to require() when npm loads. Useful for programmatic +usage.

+ +

outfd

+ +
  • Default: standard output file descriptor
  • Type: Number or Stream
+ +

Where to write "normal" output. This has no effect on log output.

+ +

parseable

+ +
  • Default: false
  • Type: Boolean
+ +

Output parseable results from commands that write to +standard output.

+ +

prefix

+ +
  • Default: node's process.installPrefix
  • Type: path
+ +

The location to install global items. If set on the command line, then +it forces non-global commands to run in the specified folder.

+ +

production

+ +
  • Default: false
  • Type: Boolean
+ +

Set to true to run in "production" mode.

+ +
  1. devDependencies are not installed at the topmost level when running +local npm install without any arguments.
  2. Set the NODE_ENV="production" for lifecycle scripts.
+ +

proxy

+ +
  • Default: HTTP_PROXY or http_proxy environment variable, or null
  • Type: url
+ +

A proxy to use for outgoing http requests.

+ +

rebuild-bundle

+ +
  • Default: true
  • Type: Boolean
+ +

Rebuild bundled dependencies after installation.

+ +

registry

+ +
  • Default: https://registry.npmjs.org/
  • Type: url
+ +

The base URL of the npm package registry.

+ +

rollback

+ +
  • Default: true
  • Type: Boolean
+ +

Remove failed installs.

+ +

save

+ +
  • Default: false
  • Type: Boolean
+ +

Save installed packages to a package.json file as dependencies.

+ +

Only works if there is already a package.json file present.

+ +

searchopts

+ +
  • Default: ""
  • Type: String
+ +

Space-separated options that are always passed to search.

+ +

searchexclude

+ +
  • Default: ""
  • Type: String
+ +

Space-separated options that limit the results from search.

+ +

shell

+ +
  • Default: SHELL environment variable, or "bash" on Posix, or "cmd" on +Windows
  • Type: path
+ +

The shell to run for the npm explore command.

+ +

strict-ssl

+ +
  • Default: true
  • Type: Boolean
+ +

Whether or not to do SSL key validation when making requests to the +registry via https.

+ +

See also the ca config.

+ +

tag

+ +
  • Default: latest
  • Type: String
+ +

If you ask npm to install a package and don't tell it a specific version, then +it will install the specified tag.

+ +

Also the tag that is added to the package@version specified by the npm +tag command, if no explicit tag is given.

+ +

tmp

+ +
  • Default: TMPDIR environment variable, or "/tmp"
  • Type: path
+ +

Where to store temporary files and folders. All temp files are deleted +on success, but left behind on failure for forensic purposes.

+ +

unicode

+ +
  • Default: true
  • Type: Boolean
+ +

When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters to draw trees.

+ +

unsafe-perm

+ +
  • Default: false if running as root, true otherwise
  • Type: Boolean
+ +

Set to true to suppress the UID/GID switching when running package +scripts. If set explicitly to false, then installing as a non-root user +will fail.

+ +

usage

+ +
  • Default: false
  • Type: Boolean
+ +

Set to show short usage output (like the -H output) +instead of complete help when doing help(1).

+ +

user

+ +
  • Default: "nobody"
  • Type: String or Number
+ +

The UID to set to when running package scripts as root.

+ +

username

+ +
  • Default: null
  • Type: String
+ +

The username on the npm registry. Set with npm adduser

+ +

userconfig

+ +
  • Default: ~/.npmrc
  • Type: path
+ +

The location of user-level configuration settings.

+ +

userignorefile

+ +
  • Default: ~/.npmignore
  • Type: path
+ +

The location of a user-level ignore file to apply to all packages.

+ +

If not found, but there is a .gitignore file in the same directory, then +that will be used instead.

+ +

umask

+ +
  • Default: 022
  • Type: Octal numeric string
+ +

The "umask" value to use when setting the file creation mode on files +and folders.

+ +

Folders and executables are given a mode which is 0777 masked against +this value. Other files are given a mode which is 0666 masked against +this value. Thus, the defaults are 0755 and 0644 respectively.

+ +

version

+ +
  • Default: false
  • Type: boolean
+ +

If true, output the npm version and exit successfully.

+ +

Only relevant when specified explicitly on the command line.

+ +

viewer

+ +
  • Default: "man" on Posix, "browser" on Windows
  • Type: path
+ +

The program to use to view help content.

+ +

Set to "browser" to view html help content in the default web browser.

+ +

yes

+ +
  • Default: null
  • Type: Boolean or null
+ +

If set to null, then prompt the user for responses in some +circumstances.

+ +

If set to true, then answer "yes" to any prompt. If set to false +then answer "no" to any prompt.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/global.html b/deps/npm/html/doc/global.html new file mode 100644 index 00000000000..9904c30ce51 --- /dev/null +++ b/deps/npm/html/doc/global.html @@ -0,0 +1,240 @@ + + + global + + + + +
+

folders

Folder Structures Used by npm

+ +

DESCRIPTION

+ +

npm puts various things on your computer. That's its job.

+ +

This document will tell you what it puts where.

+ +

tl;dr

+ +
  • Local install (default): puts stuff in ./node_modules of the current +package root.
  • Global install (with -g): puts stuff in /usr/local or wherever node +is installed.
  • Install it locally if you're going to require() it.
  • Install it globally if you're going to run it on the command line.
  • If you need both, then install it in both places, or use npm link.
+ +

prefix Configuration

+ +

The prefix config defaults to the location where node is installed. +On most systems, this is /usr/local, and most of the time is the same +as node's process.installPrefix.

+ +

On windows, this is the exact location of the node.exe binary. On Unix +systems, it's one level up, since node is typically installed at +{prefix}/bin/node rather than {prefix}/node.exe.

+ +

When the global flag is set, npm installs things into this prefix. +When it is not set, it uses the root of the current package, or the +current working directory if not in a package already.

+ +

Node Modules

+ +

Packages are dropped into the node_modules folder under the prefix. +When installing locally, this means that you can +require("packagename") to load its main module, or +require("packagename/lib/path/to/sub/module") to load other modules.

+ +

Global installs on Unix systems go to {prefix}/lib/node_modules. +Global installs on Windows go to {prefix}/node_modules (that is, no +lib folder.)

+ +

If you wish to require() a package, then install it locally.

+ +

Executables

+ +

When in global mode, executables are linked into {prefix}/bin on Unix, +or directly into {prefix} on Windows.

+ +

When in local mode, executables are linked into +./node_modules/.bin so that they can be made available to scripts run +through npm. (For example, so that a test runner will be in the path +when you run npm test.)

+ +

Man Pages

+ +

When in global mode, man pages are linked into {prefix}/share/man.

+ +

When in local mode, man pages are not installed.

+ +

Man pages are not installed on Windows systems.

+ +

Cache

+ +

See cache(1). Cache files are stored in ~/.npm on Posix, or +~/npm-cache on Windows.

+ +

This is controlled by the cache configuration param.

+ +

Temp Files

+ +

Temporary files are stored by default in the folder specified by the +tmp config, which defaults to the TMPDIR, TMP, or TEMP environment +variables, or /tmp on Unix and c:\windows\temp on Windows.

+ +

Temp files are given a unique folder under this root for each run of the +program, and are deleted upon successful exit.

+ +

More Information

+ +

When installing locally, npm first tries to find an appropriate +prefix folder. This is so that npm install foo@1.2.3 will install +to the sensible root of your package, even if you happen to have cded +into some other folder.

+ +

Starting at the $PWD, npm will walk up the folder tree checking for a +folder that contains either a package.json file, or a node_modules +folder. If such a thing is found, then that is treated as the effective +"current directory" for the purpose of running npm commands. (This +behavior is inspired by and similar to git's .git-folder seeking +logic when running git commands in a working dir.)

+ +

If no package root is found, then the current folder is used.

+ +

When you run npm install foo@1.2.3, then the package is loaded into +the cache, and then unpacked into ./node_modules/foo. Then, any of +foo's dependencies are similarly unpacked into +./node_modules/foo/node_modules/....

+ +

Any bin files are symlinked to ./node_modules/.bin/, so that they may +be found by npm scripts when necessary.

+ +

Global Installation

+ +

If the global configuration is set to true, then npm will +install packages "globally".

+ +

For global installation, packages are installed roughly the same way, +but using the folders described above.

+ +

Cycles, Conflicts, and Folder Parsimony

+ +

Cycles are handled using the property of node's module system that it +walks up the directories looking for node_modules folders. So, at every +stage, if a package is already installed in an ancestor node_modules +folder, then it is not installed at the current location.

+ +

Consider the case above, where foo -> bar -> baz. Imagine if, in +addition to that, baz depended on bar, so you'd have: +foo -> bar -> baz -> bar -> baz .... However, since the folder +structure is: foo/node_modules/bar/node_modules/baz, there's no need to +put another copy of bar into .../baz/node_modules, since when it calls +require("bar"), it will get the copy that is installed in +foo/node_modules/bar.

+ +

This shortcut is only used if the exact same +version would be installed in multiple nested node_modules folders. It +is still possible to have a/node_modules/b/node_modules/a if the two +"a" packages are different versions. However, without repeating the +exact same package multiple times, an infinite regress will always be +prevented.

+ +

Another optimization can be made by installing dependencies at the +highest level possible, below the localized "target" folder.

+ +

Example

+ +

Consider this dependency graph:

+ +
foo
++-- blerg@1.2.5
++-- bar@1.2.3
+|   +-- blerg@1.x (latest=1.3.7)
+|   +-- baz@2.x
+|   |   `-- quux@3.x
+|   |       `-- bar@1.2.3 (cycle)
+|   `-- asdf@*
+`-- baz@1.2.3
+    `-- quux@3.x
+        `-- bar
+ +

In this case, we might expect a folder structure like this:

+ +
foo
++-- node_modules
+    +-- blerg (1.2.5) <---[A]
+    +-- bar (1.2.3) <---[B]
+    |   +-- node_modules
+    |   |   `-- baz (2.0.2) <---[C]
+    |   |       `-- node_modules
+    |   |           `-- quux (3.2.0)
+    |   `-- asdf (2.3.4)
+    `-- baz (1.2.3) <---[D]
+        `-- node_modules
+            `-- quux (3.2.0) <---[E]
+ +

Since foo depends directly on bar@1.2.3 and baz@1.2.3, those are +installed in foo's node_modules folder.

+ +

Even though the latest copy of blerg is 1.3.7, foo has a specific +dependency on version 1.2.5. So, that gets installed at [A]. Since the +parent installation of blerg satisfie's bar's dependency on blerg@1.x, +it does not install another copy under [B].

+ +

Bar [B] also has dependencies on baz and asdf, so those are installed in +bar's node_modules folder. Because it depends on baz@2.x, it cannot +re-use the baz@1.2.3 installed in the parent node_modules folder [D], +and must install its own copy [C].

+ +

Underneath bar, the baz->quux->bar dependency creates a cycle. +However, because bar is already in quux's ancestry [B], it does not +unpack another copy of bar into that folder.

+ +

Underneath foo->baz [D], quux's [E] folder tree is empty, because its +dependency on bar is satisfied by the parent folder copy installed at [B].

+ +

For a graphical breakdown of what is installed where, use npm ls.

+ +

Publishing

+ +

Upon publishing, npm will look in the node_modules folder. If any of +the items there are not in the bundledDependencies array, then they will +not be included in the package tarball.

+ +

This allows a package maintainer to install all of their dependencies +(and dev dependencies) locally, but only re-publish those items that +cannot be found elsewhere. See json(1) for more information.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/help-search.html b/deps/npm/html/doc/help-search.html new file mode 100644 index 00000000000..3fa0d777105 --- /dev/null +++ b/deps/npm/html/doc/help-search.html @@ -0,0 +1,73 @@ + + + help-search + + + + +
+

help-search

Search npm help documentation

+ +

SYNOPSIS

+ +
npm help-search some search terms
+ +

DESCRIPTION

+ +

This command will search the npm markdown documentation files for the +terms provided, and then list the results, sorted by relevance.

+ +

If only one result is found, then it will show that help topic.

+ +

If the argument to npm help is not a known help topic, then it will +call help-search. It is rarely if ever necessary to call this +command directly.

+ +

CONFIGURATION

+ +

long

+ +
  • Type: Boolean
  • Default false
+ +

If true, the "long" flag will cause help-search to output context around +where the terms were found in the documentation.

+ +

If false, then help-search will just list out the help topics found.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/help.html b/deps/npm/html/doc/help.html new file mode 100644 index 00000000000..c79bfdb6226 --- /dev/null +++ b/deps/npm/html/doc/help.html @@ -0,0 +1,71 @@ + + + help + + + + +
+

help

Get help on npm

+ +

SYNOPSIS

+ +
npm help <topic>
+npm help some search terms
+ +

DESCRIPTION

+ +

If supplied a topic, then show the appropriate documentation page.

+ +

If the topic does not exist, or if multiple terms are provided, then run +the help-search command to find a match. Note that, if help-search +finds a single subject, then it will run help on that topic, so unique +matches are equivalent to specifying a topic name.

+ +

CONFIGURATION

+ +

viewer

+ +
  • Default: "man" on Posix, "browser" on Windows
  • Type: path
+ +

The program to use to view help content.

+ +

Set to "browser" to view html help content in the default web browser.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/home.html b/deps/npm/html/doc/home.html new file mode 100644 index 00000000000..e77d6b91c36 --- /dev/null +++ b/deps/npm/html/doc/home.html @@ -0,0 +1,72 @@ + + + home + + + + +
+

docs

Docs for a package in a web browser maybe

+ +

SYNOPSIS

+ +
npm docs <pkgname>
+npm home <pkgname>
+ +

DESCRIPTION

+ +

This command tries to guess at the likely location of a package's +documentation URL, and then tries to open it using the --browser +config param.

+ +

CONFIGURATION

+ +

browser

+ +
  • Default: OS X: "open", others: "google-chrome"
  • Type: String
+ +

The browser that is called by the npm docs command to open websites.

+ +

registry

+ +
  • Default: https://registry.npmjs.org/
  • Type: url
+ +

The base URL of the npm package registry.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html new file mode 100644 index 00000000000..84a55543372 --- /dev/null +++ b/deps/npm/html/doc/index.html @@ -0,0 +1,407 @@ + + + index + + + + +
+

index

Index of all npm documentation

+ +

README

+ +

node package manager

+ +

Command Line Documentation

+ +

adduser(1)

+ +

Add a registry user account

+ +

bin(1)

+ +

Display npm bin folder

+ +

bugs(1)

+ +

Bugs for a package in a web browser maybe

+ +

build(1)

+ +

Build a package

+ +

bundle(1)

+ +

REMOVED

+ +

cache(1)

+ +

Manipulates packages cache

+ +

changelog(1)

+ +

Changes

+ +

coding-style(1)

+ +

npm's "funny" coding style

+ +

completion(1)

+ +

Tab Completion for npm

+ +

config(1)

+ +

Manage the npm configuration file

+ +

deprecate(1)

+ +

Deprecate a version of a package

+ +

developers(1)

+ +

Developer Guide

+ +

docs(1)

+ +

Docs for a package in a web browser maybe

+ +

edit(1)

+ +

Edit an installed package

+ +

explore(1)

+ +

Browse an installed package

+ +

faq(1)

+ +

Frequently Asked Questions

+ +

folders(1)

+ +

Folder Structures Used by npm

+ +

help-search(1)

+ +

Search npm help documentation

+ +

help(1)

+ +

Get help on npm

+ +

init(1)

+ +

Interactively create a package.json file

+ +

install(1)

+ +

Install a package

+ +

json(1)

+ +

Specifics of npm's package.json handling

+ + + +

Symlink a package folder

+ +

list(1)

+ +

List installed packages

+ +

npm(1)

+ +

node package manager

+ +

outdated(1)

+ +

Check for outdated packages

+ +

owner(1)

+ +

Manage package owners

+ +

pack(1)

+ +

Create a tarball from a package

+ +

prefix(1)

+ +

Display prefix

+ +

prune(1)

+ +

Remove extraneous packages

+ +

publish(1)

+ +

Publish a package

+ +

rebuild(1)

+ +

Rebuild a package

+ +

registry(1)

+ +

The JavaScript Package Registry

+ +

removing-npm(1)

+ +

Cleaning the Slate

+ +

restart(1)

+ +

Start a package

+ +

root(1)

+ +

Display npm root

+ +

run-script(1)

+ +

Run arbitrary package scripts

+ +

scripts(1)

+ +

How npm handles the "scripts" field

+ +

search(1)

+ +

Search for packages

+ +

semver(1)

+ +

The semantic versioner for npm

+ +

star(1)

+ +

Mark your favorite packages

+ +

start(1)

+ +

Start a package

+ +

stop(1)

+ +

Stop a package

+ +

submodule(1)

+ +

Add a package as a git submodule

+ +

tag(1)

+ +

Tag a published version

+ +

test(1)

+ +

Test a package

+ +

uninstall(1)

+ +

Remove a package

+ +

unpublish(1)

+ +

Remove a package from the registry

+ +

update(1)

+ +

Update a package

+ +

version(1)

+ +

Bump a package version

+ +

view(1)

+ +

View registry info

+ +

whoami(1)

+ +

Display npm username

+ +

API Documentation

+ +

bin(3)

+ +

Display npm bin folder

+ +

bugs(3)

+ +

Bugs for a package in a web browser maybe

+ +

commands(3)

+ +

npm commands

+ +

config(3)

+ +

Manage the npm configuration files

+ +

deprecate(3)

+ +

Deprecate a version of a package

+ +

docs(3)

+ +

Docs for a package in a web browser maybe

+ +

edit(3)

+ +

Edit an installed package

+ +

explore(3)

+ +

Browse an installed package

+ +

help-search(3)

+ +

Search the help pages

+ +

init(3)

+ +

Interactively create a package.json file

+ +

install(3)

+ +

install a package programmatically

+ + + +

Symlink a package folder

+ +

load(3)

+ +

Load config settings

+ +

ls(3)

+ +

List installed packages

+ +

npm(3)

+ +

node package manager

+ +

outdated(3)

+ +

Check for outdated packages

+ +

owner(3)

+ +

Manage package owners

+ +

pack(3)

+ +

Create a tarball from a package

+ +

prefix(3)

+ +

Display prefix

+ +

prune(3)

+ +

Remove extraneous packages

+ +

publish(3)

+ +

Publish a package

+ +

rebuild(3)

+ +

Rebuild a package

+ +

restart(3)

+ +

Start a package

+ +

root(3)

+ +

Display npm root

+ +

run-script(3)

+ +

Run arbitrary package scripts

+ +

search(3)

+ +

Search for packages

+ +

start(3)

+ +

Start a package

+ +

stop(3)

+ +

Stop a package

+ +

submodule(3)

+ +

Add a package as a git submodule

+ +

tag(3)

+ +

Tag a published version

+ +

test(3)

+ +

Test a package

+ +

uninstall(3)

+ +

uninstall a package programmatically

+ +

unpublish(3)

+ +

Remove a package from the registry

+ +

update(3)

+ +

Update a package

+ +

version(3)

+ +

Bump a package version

+ +

view(3)

+ +

View registry info

+ +

whoami(3)

+ +

Display npm username

+
+ + + diff --git a/deps/npm/html/doc/init.html b/deps/npm/html/doc/init.html new file mode 100644 index 00000000000..3f9dbb1b919 --- /dev/null +++ b/deps/npm/html/doc/init.html @@ -0,0 +1,64 @@ + + + init + + + + +
+

init

Interactively create a package.json file

+ +

SYNOPSIS

+ +
npm init
+ +

DESCRIPTION

+ +

This will ask you a bunch of questions, and then write a package.json for you.

+ +

It attempts to make reasonable guesses about what you want things to be set to, +and then writes a package.json file with the options you've selected.

+ +

If you already have a package.json file, it'll read that first, and default to +the options in there.

+ +

It is strictly additive, so it does not delete options from your package.json +without a really good reason to do so.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/install.html b/deps/npm/html/doc/install.html new file mode 100644 index 00000000000..2aac71547f9 --- /dev/null +++ b/deps/npm/html/doc/install.html @@ -0,0 +1,169 @@ + + + install + + + + +
+

install

Install a package

+ +

SYNOPSIS

+ +
npm install (with no args in a package dir)
+npm install <tarball file>
+npm install <tarball url>
+npm install <folder>
+npm install <name>
+npm install <name>@<tag>
+npm install <name>@<version>
+npm install <name>@<version range>
+ +

DESCRIPTION

+ +

This command installs a package, and any packages that it depends on.

+ +

A package is:

+ +
  • a) a folder containing a program described by a package.json file
  • b) a gzipped tarball containing (a)
  • c) a url that resolves to (b)
  • d) a <name>@<version> that is published on the registry with (c)
  • e) a <name>@<tag> that points to (d)
  • f) a <name> that has a "latest" tag satisfying (e)
  • g) a <git remote url> that resolves to (b)
+ +

Even if you never publish your package, you can still get a lot of +benefits of using npm if you just want to write a node program (a), and +perhaps if you also want to be able to easily install it elsewhere +after packing it up into a tarball (b).

+ +
  • npm install (in package directory, no arguments): +Install the dependencies in the local node_modules folder.

    In global mode (ie, with -g or --global appended to the command), +it installs the current package context (ie, the current working +directory) as a global package.

  • npm install <folder>: +Install a package that is sitting in a folder on the filesystem.

  • npm install <tarball file>: +Install a package that is sitting on the filesystem. Note: if you just want +to link a dev directory into your npm root, you can do this more easily by +using npm link.

    Example:

    npm install ./package.tgz
  • npm install <tarball url>: +Fetch the tarball url, and then install it. In order to distinguish between +this and other options, the argument must start with "http://" or "https://"

    Example:

    npm install https://github.com/indexzero/forever/tarball/v0.5.6
  • npm install <name>: +Do a <name>@<tag> install, where <tag> is the "tag" config. (See +config(1))

    Example:

    npm install sax

    Note: If there is a file or folder named <name> in the current +working directory, then it will try to install that, and only try to +fetch the package by name if it is not valid.

  • npm install <name>@<tag>: +Install the version of the package that is referenced by the specified tag. +If the tag does not exist in the registry data for that package, then this +will fail.

    Example:

    npm install sax@latest
  • npm install <name>@<version>: +Install the specified version of the package. This will fail if the version +has not been published to the registry.

    Example:

    npm install sax@0.1.1
  • npm install <name>@<version range>: +Install a version of the package matching the specified version range. This +will follow the same rules for resolving dependencies described in json(1).

    Note that most version ranges must be put in quotes so that your shell will +treat it as a single argument.

    Example:

    npm install sax@">=0.1.0 <0.2.0"
  • npm install <git remote url>:

    Install a package by cloning a git remote url. The format of the git +url is:

    <protocol>://[<user>@]<hostname><separator><path>[#<commit-ish>]

    <protocol> is one of git, git+ssh, git+http, or +git+https. If no <commit-ish> is specified, then master is +used.

    Examples:

    git+ssh://git@github.com:isaacs/npm.git#v1.0.27
    +git+https://isaacs@github.com/isaacs/npm.git
    +git://github.com/isaacs/npm.git#v1.0.27
+ +

You may combine multiple arguments, and even multiple types of arguments. +For example:

+ +
npm install sax@">=0.1.0 <0.2.0" bench supervisor
+ +

The --tag argument will apply to all of the specified install targets.

+ +

The --force argument will force npm to fetch remote resources even if a +local copy exists on disk.

+ +
npm install sax --force
+ +

The --global argument will cause npm to install the package globally +rather than locally. See global(1).

+ +

The --link argument will cause npm to link global installs into the +local space in some cases.

+ +

See config(1). Many of the configuration params have some +effect on installation, since that's most of what npm does.

+ +

ALGORITHM

+ +

To install a package, npm uses the following algorithm:

+ +
install(where, what, family, ancestors)
+fetch what, unpack to <where>/node_modules/<what>
+for each dep in what.dependencies
+  resolve dep to precise version
+for each dep@version in what.dependencies
+    not in <where>/node_modules/<what>/node_modules/*
+    and not in <family>
+  add precise version deps to <family>
+  install(<where>/node_modules/<what>, dep, family)
+ +

For this package{dep} structure: A{B,C}, B{C}, C{D}, +this algorithm produces:

+ +
A
++-- B
+`-- C
+    `-- D
+ +

That is, the dependency from B to C is satisfied by the fact that A +already caused C to be installed at a higher level.

+ +

See folders(1) for a more detailed description of the specific +folder structures that npm creates.

+ +

Limitations of npm's Install Algorithm

+ +

There are some very rare and pathological edge-cases where a cycle can +cause npm to try to install a never-ending tree of packages. Here is +the simplest case:

+ +
A -> B -> A' -> B' -> A -> B -> A' -> B' -> A -> ...
+ +

where A is some version of a package, and A' is a different version +of the same package. Because B depends on a different version of A +than the one that is already in the tree, it must install a separate +copy. The same is true of A', which must install B'. Because B' +depends on the original version of A, which has been overridden, the +cycle falls into infinite regress.

+ +

To avoid this situation, npm flat-out refuses to install any +name@version that is already present anywhere in the tree of package +folder ancestors. A more correct, but more complex, solution would be +to symlink the existing version into the new location. If this ever +affects a real use-case, it will be investigated.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/json.html b/deps/npm/html/doc/json.html new file mode 100644 index 00000000000..3e360b791d4 --- /dev/null +++ b/deps/npm/html/doc/json.html @@ -0,0 +1,471 @@ + + + json + + + + +
+

json

Specifics of npm's package.json handling

+ +

DESCRIPTION

+ +

This document is all you need to know about what's required in your package.json +file. It must be actual JSON, not just a JavaScript object literal.

+ +

A lot of the behavior described in this document is affected by the config +settings described in config(1).

+ +

DEFAULT VALUES

+ +

npm will default some values based on package contents.

+ +
  • "scripts": {"start": "node server.js"}

    If there is a server.js file in the root of your package, then npm +will default the start command to node server.js.

  • "scripts":{"preinstall": "node-waf clean || true; node-waf configure build"}

    If there is a wscript file in the root of your package, npm will +default the preinstall command to compile using node-waf.

  • "contributors": [...]

    If there is an AUTHORS file in the root of your package, npm will +treat each line as a Name <email> (url) format, where email and url +are optional. Lines which start with a # or are blank, will be +ignored.

+ +

name

+ +

The most important things in your package.json are the name and version fields. +Those are actually required, and your package won't install without +them. The name and version together form an identifier that is assumed +to be completely unique. Changes to the package should come along with +changes to the version.

+ +

The name is what your thing is called. Some tips:

+ +
  • Don't put "js" or "node" in the name. It's assumed that it's js, since you're +writing a package.json file, and you can specify the engine using the "engines" +field. (See below.)
  • The name ends up being part of a URL, an argument on the command line, and a +folder name. Any name with non-url-safe characters will be rejected. +Also, it can't start with a dot or an underscore.
  • The name will probably be passed as an argument to require(), so it should +be something short, but also reasonably descriptive.
  • You may want to check the npm registry to see if there's something by that name +already, before you get too attached to it. http://registry.npmjs.org/
+ +

version

+ +

The most important things in your package.json are the name and version fields. +Those are actually required, and your package won't install without +them. The name and version together form an identifier that is assumed +to be completely unique. Changes to the package should come along with +changes to the version.

+ +

Version must be parseable by +node-semver, which is bundled +with npm as a dependency. (npm install semver to use it yourself.)

+ +

Here's how npm's semver implementation deviates from what's on semver.org:

+ +
  • Versions can start with "v"
  • A numeric item separated from the main three-number version by a hyphen +will be interpreted as a "build" number, and will increase the version. +But, if the tag is not a number separated by a hyphen, then it's treated +as a pre-release tag, and is less than the version without a tag. +So, 0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta
+ +

This is a little bit confusing to explain, but matches what you see in practice +when people create tags in git like "v1.2.3" and then do "git describe" to generate +a patch version.

+ +

description

+ +

Put a description in it. It's a string. This helps people discover your +package, as it's listed in npm search.

+ +

keywords

+ +

Put keywords in it. It's an array of strings. This helps people +discover your package as it's listed in npm search.

+ +

homepage

+ +

The url to the project homepage.

+ +

NOTE: This is not the same as "url". If you put a "url" field, +then the registry will think it's a redirection to your package that has +been published somewhere else, and spit at you.

+ +

Literally. Spit. I'm so not kidding.

+ +

bugs

+ +

The url to your project's issue tracker and / or the email address to which +issues should be reported. These are helpful for people who encounter issues +with your package.

+ +

It should look like this:

+ +
{ "url" : "http://github.com/owner/project/issues"
+, "email" : "project@hostname.com"
+}
+ +

You can specify either one or both values. If you want to provide only a url, +you can specify the value for "bugs" as a simple string instead of an object.

+ +

If a url is provided, it will be used by the npm bugs command.

+ +

people fields: author, contributors

+ +

The "author" is one person. "contributors" is an array of people. A "person" +is an object with a "name" field and optionally "url" and "email", like this:

+ +
{ "name" : "Barney Rubble"
+, "email" : "b@rubble.com"
+, "url" : "http://barnyrubble.tumblr.com/"
+}
+ +

Or you can shorten that all into a single string, and npm will parse it for you:

+ +
"Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)
+ +

Both email and url are optional either way.

+ +

npm also sets a top-level "maintainers" field with your npm user info.

+ +

files

+ +

The "files" field is an array of files to include in your project. If +you name a folder in the array, then it will also include the files +inside that folder. (Unless they would be ignored by another rule.)

+ +

You can also provide a ".npmignore" file in the root of your package, +which will keep files from being included, even if they would be picked +up by the files array. The ".npmignore" file works just like a +".gitignore".

+ +

main

+ +

The main field is a module ID that is the primary entry point to your program. +That is, if your package is named foo, and a user installs it, and then does +require("foo"), then your main module's exports object will be returned.

+ +

This should be a module ID relative to the root of your package folder.

+ +

For most modules, it makes the most sense to have a main script and often not +much else.

+ +

bin

+ +

A lot of packages have one or more executable files that they'd like to +install into the PATH. npm makes this pretty easy (in fact, it uses this +feature to install the "npm" executable.)

+ +

To use this, supply a bin field in your package.json which is a map of +command name to local file name. On install, npm will symlink that file into +prefix/bin for global installs, or ./node_modules/.bin/ for local +installs.

+ +

For example, npm has this:

+ +
{ "bin" : { "npm" : "./cli.js" } }
+ +

So, when you install npm, it'll create a symlink from the cli.js script to +/usr/local/bin/npm.

+ +

If you have a single executable, and its name should be the name +of the package, then you can just supply it as a string. For example:

+ +
{ "name": "my-program"
+, "version": "1.2.5"
+, "bin": "./path/to/program" }
+ +

would be the same as this:

+ +
{ "name": "my-program"
+, "version": "1.2.5"
+, "bin" : { "my-program" : "./path/to/program" } }
+ +

man

+ +

Specify either a single file or an array of filenames to put in place for the +man program to find.

+ +

If only a single file is provided, then it's installed such that it is the +result from man <pkgname>, regardless of its actual filename. For example:

+ +
{ "name" : "foo"
+, "version" : "1.2.3"
+, "description" : "A packaged foo fooer for fooing foos"
+, "main" : "foo.js"
+, "man" : "./man/doc.1"
+}
+ +

would link the ./man/doc.1 file in such that it is the target for man foo

+ +

If the filename doesn't start with the package name, then it's prefixed. +So, this:

+ +
{ "name" : "foo"
+, "version" : "1.2.3"
+, "description" : "A packaged foo fooer for fooing foos"
+, "main" : "foo.js"
+, "man" : [ "./man/foo.1", "./man/bar.1" ]
+}
+ +

will create files to do man foo and man foo-bar.

+ +

Man files must end with a number, and optionally a .gz suffix if they are +compressed. The number dictates which man section the file is installed into.

+ +
{ "name" : "foo"
+, "version" : "1.2.3"
+, "description" : "A packaged foo fooer for fooing foos"
+, "main" : "foo.js"
+, "man" : [ "./man/foo.1", "./man/foo.2" ]
+}
+ +

will create entries for man foo and man 2 foo

+ +

directories

+ +

The CommonJS Packages spec details a +few ways that you can indicate the structure of your package using a directories +hash. If you look at npm's package.json, +you'll see that it has directories for doc, lib, and man.

+ +

In the future, this information may be used in other creative ways.

+ +

directories.lib

+ +

Tell people where the bulk of your library is. Nothing special is done +with the lib folder in any way, but it's useful meta info.

+ +

directories.bin

+ +

If you specify a "bin" directory, then all the files in that folder will +be used as the "bin" hash.

+ +

If you have a "bin" hash already, then this has no effect.

+ +

directories.man

+ +

A folder that is full of man pages. Sugar to generate a "man" array by +walking the folder.

+ +

directories.doc

+ +

Put markdown files in here. Eventually, these will be displayed nicely, +maybe, someday.

+ +

directories.example

+ +

Put example scripts in here. Someday, it might be exposed in some clever way.

+ +

repository

+ +

Specify the place where your code lives. This is helpful for people who +want to contribute. If the git repo is on github, then the npm docs +command will be able to find you.

+ +

Do it like this:

+ +
"repository" :
+  { "type" : "git"
+  , "url" : "http://github.com/isaacs/npm.git"
+  }
+
+"repository" :
+  { "type" : "svn"
+  , "url" : "http://v8.googlecode.com/svn/trunk/"
+  }
+ +

The URL should be a publicly available (perhaps read-only) url that can be handed +directly to a VCS program without any modification. It should not be a url to an +html project page that you put in your browser. It's for computers.

+ +

scripts

+ +

The "scripts" member is an object hash of script commands that are run +at various times in the lifecycle of your package. The key is the lifecycle +event, and the value is the command to run at that point.

+ +

See scripts(1) to find out more about writing package scripts.

+ +

config

+ +

A "config" hash can be used to set configuration +parameters used in package scripts that persist across upgrades. For +instance, if a package had the following:

+ +
{ "name" : "foo"
+, "config" : { "port" : "8080" } }
+ +

and then had a "start" command that then referenced the +npm_package_config_port environment variable, then the user could +override that by doing npm config set foo:port 8001.

+ +

See config(1) and scripts(1) for more on package +configs.

+ +

dependencies

+ +

Dependencies are specified with a simple hash of package name to version +range. The version range is EITHER a string which has one or more +space-separated descriptors, OR a range like "fromVersion - toVersion"

+ +

Please do not put test harnesses in your dependencies hash. See +devDependencies, below.

+ +

Version range descriptors may be any of the following styles, where "version" +is a semver compatible version identifier.

+ +
  • version Must match version exactly
  • =version Same as just version
  • >version Must be greater than version
  • >=version etc
  • <version
  • <=version
  • ~version See 'Tilde Version Ranges' below
  • 1.2.x See 'X Version Ranges' below
  • http://... See 'URLs as Dependencies' below
  • * Matches any version
  • "" (just an empty string) Same as *
  • version1 - version2 Same as >=version1 <=version2.
  • range1 || range2 Passes if either range1 or range2 are satisfied.
+ +

For example, these are all valid:

+ +
{ "dependencies" :
+  { "foo" : "1.0.0 - 2.9999.9999"
+  , "bar" : ">=1.0.2 <2.1.2"
+  , "baz" : ">1.0.2 <=2.3.4"
+  , "boo" : "2.0.1"
+  , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
+  , "asd" : "http://asdf.com/asdf.tar.gz"
+  , "til" : "~1.2"
+  , "elf" : "~1.2.3"
+  , "two" : "2.x"
+  , "thr" : "3.3.x"
+  }
+}
+ +

Tilde Version Ranges

+ +

A range specifier starting with a tilde ~ character is matched against +a version in the following fashion.

+ +
  • The version must be at least as high as the range.
  • The version must be less than the next major revision above the range.
+ +

For example, the following are equivalent:

+ +
  • "~1.2.3" = ">=1.2.3 <1.3.0"
  • "~1.2" = ">=1.2.0 <2.0.0"
  • "~1" = ">=1.0.0 <2.0.0"
+ +

X Version Ranges

+ +

An "x" in a version range specifies that the version number must start +with the supplied digits, but any digit may be used in place of the x.

+ +

The following are equivalent:

+ +
  • "1.2.x" = ">=1.2.0 <1.3.0"
  • "1.x.x" = ">=1.0.0 <2.0.0"
  • "1.2" = "1.2.x"
  • "1.x" = "1.x.x"
  • "1" = "1.x.x"
+ +

You may not supply a comparator with a version containing an x. Any +digits after the first "x" are ignored.

+ +

URLs as Dependencies

+ +

Starting with npm version 0.2.14, you may specify a tarball URL in place +of a version range.

+ +

This tarball will be downloaded and installed locally to your package at +install time.

+ +

devDependencies

+ +

If someone is planning on downloading and using your module in their +program, then they probably don't want or need to download and build +the external test or documentation framework that you use.

+ +

In this case, it's best to list these additional items in a +devDependencies hash.

+ +

These things will be installed whenever the --dev configuration flag +is set. This flag is set automatically when doing npm link, and can +be managed like any other npm configuration param. See config(1) +for more on the topic.

+ +

bundledDependencies

+ +

Array of package names that will be bundled when publishing the package.

+ +

If this is spelled "bundleDependencies", then that is also honorable.

+ +

engines

+ +

You can specify the version of +node that your stuff works on:

+ +
{ "engines" : { "node" : ">=0.1.27 <0.1.30" } }
+ +

And, like with dependencies, if you don't specify the version (or if you +specify "*" as the version), then any version of node will do.

+ +

If you specify an "engines" field, then npm will require that "node" be +somewhere on that list. If "engines" is omitted, then npm will just assume +that it works on node.

+ +

You can also use the "engines" field to specify which versions of npm +are capable of properly installing your program. For example:

+ +
{ "engines" : { "npm" : "~1.0.20" } }
+ +

preferGlobal

+ +

If your package is primarily a command-line application that should be +installed globally, then set this value to true to provide a warning +if it is installed locally.

+ +

It doesn't actually prevent users from installing it locally, but it +does help prevent some confusion if it doesn't work as expected.

+ +

private

+ +

If you set "private": true in your package.json, then npm will refuse +to publish it.

+ +

This is a way to prevent accidental publication of private repositories. +If you would like to ensure that a given package is only ever published +to a speciic registry (for example, an internal registry), +then use the publishConfig hash described below +to override the registry config param at publish-time.

+ +

publishConfig

+ +

This is a set of config values that will be used at publish-time. It's +especially handy if you want to set the tag or registry, so that you can +ensure that a given package is not tagged with "latest" or published to +the global public registry by default.

+ +

Any config values can be overridden, but of course only "tag" and +"registry" probably matter for the purposes of publishing.

+ +

See config(1) to see the list of config options that can be +overridden.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/link.html b/deps/npm/html/doc/link.html new file mode 100644 index 00000000000..eafeb22ff6c --- /dev/null +++ b/deps/npm/html/doc/link.html @@ -0,0 +1,93 @@ + + + link + + + + +
+

link

Symlink a package folder

+ +

SYNOPSIS

+ +
npm link (in package folder)
+npm link <pkgname>
+ +

DESCRIPTION

+ +

Package linking is a two-step process.

+ +

First, npm link in a package folder will create a globally-installed +symbolic link from prefix/package-name to the current folder.

+ +

Next, in some other location, npm link package-name will create a +symlink from the local node_modules folder to the global symlink.

+ +

When creating tarballs for npm publish, the linked packages are +"snapshotted" to their current state by resolving the symbolic links.

+ +

This is +handy for installing your own stuff, so that you can work on it and test it +iteratively without having to continually rebuild.

+ +

For example:

+ +
cd ~/projects/node-redis    # go into the package directory
+npm link                    # creates global link
+cd ~/projects/node-bloggy   # go into some other package directory.
+npm link redis              # link-install the package
+ +

Now, any changes to ~/projects/node-redis will be reflected in +~/projects/node-bloggy/node_modules/redis/

+ +

You may also shortcut the two steps in one. For example, to do the +above use-case in a shorter way:

+ +
cd ~/projects/node-bloggy  # go into the dir of your main project
+npm link ../node-redis     # link the dir of your dependency
+ +

The second line is the equivalent of doing:

+ +
(cd ../node-redis; npm link)
+npm link redis
+ +

That is, it first creates a global link, and then links the global +installation target into your project's node_modules folder.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/list.html b/deps/npm/html/doc/list.html new file mode 100644 index 00000000000..56d0e9fa701 --- /dev/null +++ b/deps/npm/html/doc/list.html @@ -0,0 +1,87 @@ + + + list + + + + +
+

ls

List installed packages

+ +

SYNOPSIS

+ +
npm list
+npm ls
+npm la
+npm ll
+ +

DESCRIPTION

+ +

This command will print to stdout all the versions of packages that are +installed, as well as their dependencies, in a tree-structure.

+ +

It does not take positional arguments, though you may set config flags +like with any other command, such as -g to list global packages.

+ +

It will print out extraneous, missing, and invalid packages.

+ +

When run as ll or la, it shows extended information by default.

+ +

CONFIGURATION

+ +

long

+ +
  • Default: false
  • Type: Boolean
+ +

Show extended information.

+ +

parseable

+ +
  • Default: false
  • Type: Boolean
+ +

Show parseable output instead of tree view.

+ +

global

+ +
  • Default: false
  • Type: Boolean
+ +

List packages in the global install prefix instead of in the current +project.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/ln.html b/deps/npm/html/doc/ln.html new file mode 100644 index 00000000000..1fb70319381 --- /dev/null +++ b/deps/npm/html/doc/ln.html @@ -0,0 +1,93 @@ + + + ln + + + + +
+

link

Symlink a package folder

+ +

SYNOPSIS

+ +
npm link (in package folder)
+npm link <pkgname>
+ +

DESCRIPTION

+ +

Package linking is a two-step process.

+ +

First, npm link in a package folder will create a globally-installed +symbolic link from prefix/package-name to the current folder.

+ +

Next, in some other location, npm link package-name will create a +symlink from the local node_modules folder to the global symlink.

+ +

When creating tarballs for npm publish, the linked packages are +"snapshotted" to their current state by resolving the symbolic links.

+ +

This is +handy for installing your own stuff, so that you can work on it and test it +iteratively without having to continually rebuild.

+ +

For example:

+ +
cd ~/projects/node-redis    # go into the package directory
+npm link                    # creates global link
+cd ~/projects/node-bloggy   # go into some other package directory.
+npm link redis              # link-install the package
+ +

Now, any changes to ~/projects/node-redis will be reflected in +~/projects/node-bloggy/node_modules/redis/

+ +

You may also shortcut the two steps in one. For example, to do the +above use-case in a shorter way:

+ +
cd ~/projects/node-bloggy  # go into the dir of your main project
+npm link ../node-redis     # link the dir of your dependency
+ +

The second line is the equivalent of doing:

+ +
(cd ../node-redis; npm link)
+npm link redis
+ +

That is, it first creates a global link, and then links the global +installation target into your project's node_modules folder.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/ls.html b/deps/npm/html/doc/ls.html new file mode 100644 index 00000000000..9ad1fca2787 --- /dev/null +++ b/deps/npm/html/doc/ls.html @@ -0,0 +1,87 @@ + + + ls + + + + +
+

ls

List installed packages

+ +

SYNOPSIS

+ +
npm list
+npm ls
+npm la
+npm ll
+ +

DESCRIPTION

+ +

This command will print to stdout all the versions of packages that are +installed, as well as their dependencies, in a tree-structure.

+ +

It does not take positional arguments, though you may set config flags +like with any other command, such as -g to list global packages.

+ +

It will print out extraneous, missing, and invalid packages.

+ +

When run as ll or la, it shows extended information by default.

+ +

CONFIGURATION

+ +

long

+ +
  • Default: false
  • Type: Boolean
+ +

Show extended information.

+ +

parseable

+ +
  • Default: false
  • Type: Boolean
+ +

Show parseable output instead of tree view.

+ +

global

+ +
  • Default: false
  • Type: Boolean
+ +

List packages in the global install prefix instead of in the current +project.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/npm.html b/deps/npm/html/doc/npm.html new file mode 100644 index 00000000000..f83e3c008a9 --- /dev/null +++ b/deps/npm/html/doc/npm.html @@ -0,0 +1,170 @@ + + + npm + + + + +
+

npm

node package manager

+ +

SYNOPSIS

+ +
npm <command> [args]
+ +

VERSION

+ +

1.1.0-alpha-6

+ +

DESCRIPTION

+ +

npm is the package manager for the Node JavaScript platform. It puts +modules in place so that node can find them, and manages dependency +conflicts intelligently.

+ +

It is extremely configurable to support a wide variety of use cases. +Most commonly, it is used to publish, discover, install, and develop node +programs.

+ +

Run npm help to get a list of available commands.

+ +

INTRODUCTION

+ +

You probably got npm because you want to install stuff.

+ +

Use npm install blerg to install the latest version of "blerg". Check out +install(1) for more info. It can do a lot of stuff.

+ +

Use the npm search command to show everything that's available. +Use npm ls to show everything you've installed.

+ +

DIRECTORIES

+ +

See folders(1) to learn about where npm puts stuff.

+ +

In particular, npm has two modes of operation:

+ +
  • global mode:
    npm installs packages into the install prefix at +prefix/lib/node_modules and bins are installed in prefix/bin.
  • local mode:
    npm installs packages into the current project directory, which +defaults to the current working directory. Packages are installed to +./node_modules, and bins are installed to ./node_modules/.bin.
+ +

Local mode is the default. Use --global or -g on any command to +operate in global mode instead.

+ +

DEVELOPER USAGE

+ +

If you're using npm to develop and publish your code, check out the +following help topics:

+ +
  • json: +Make a package.json file. See json(1).
  • link: +For linking your current working code into Node's path, so that you +don't have to reinstall every time you make a change. Use +npm link to do this.
  • install: +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 +npm install
  • adduser: +Create an account or log in. Creditials are stored in the +user config file.
  • publish: +Use the npm publish command to upload your code to the registry.
+ +

CONFIGURATION

+ +

npm is extremely configurable. It reads its configuration options from +5 places.

+ +
  • Command line switches:
    Set a config with --key val. All keys take a value, even if they +are booleans (the config parser doesn't know what the options are at +the time of parsing.) If no value is provided, then the option is set +to boolean true.
  • Environment Variables:
    Set any config by prefixing the name in an environment variable with +npm_config_. For example, export npm_config_key=val.
  • User Configs:
    The file at $HOME/.npmrc is an ini-formatted list of configs. If +present, it is parsed. If the userconfig option is set in the cli +or env, then that will be used instead.
  • Global Configs:
    The file found at ../etc/npmrc (from the node executable, by default +this resolves to /usr/local/etc/npmrc) will be parsed if it is found. +If the globalconfig option is set in the cli, env, or user config, +then that file is parsed instead.
  • Defaults:
    npm's default configuration options are defined in +lib/utils/config-defs.js. These must not be changed.
+ +

See config(1) for much much more information.

+ +

CONTRIBUTIONS

+ +

Patches welcome!

+ +
  • code: +Read through coding-style(1) if you plan to submit code. +You don't have to agree with it, but you do have to follow it.
  • docs: +If you find an error in the documentation, edit the appropriate markdown +file in the "doc" folder. (Don't worry about generating the man page.)
+ +

Contributors are listed in npm's package.json file. You can view them +easily by doing npm view npm contributors.

+ +

If you would like to contribute, but don't know what to work on, check +the issues list or ask on the mailing list.

+ + + +

BUGS

+ +

When you find issues, please report them:

+ + + +

Be sure to include all of the output from the npm command that didn't work +as expected. The npm-debug.log file is also helpful to provide.

+ +

You can also look for isaacs in #node.js on irc://irc.freenode.net. He +will no doubt tell you to put the output in a gist or email.

+ +

HISTORY

+ +

See changelog(1)

+ +

AUTHOR

+ +

Isaac Z. Schlueter :: +isaacs :: +@izs :: +i@izs.me

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/outdated.html b/deps/npm/html/doc/outdated.html new file mode 100644 index 00000000000..d451098d9af --- /dev/null +++ b/deps/npm/html/doc/outdated.html @@ -0,0 +1,56 @@ + + + outdated + + + + +
+

outdated

Check for outdated packages

+ +

SYNOPSIS

+ +
npm outdated [<name> [<name> ...]]
+ +

DESCRIPTION

+ +

This command will check the registry to see if any (or, specific) installed +packages are currently outdated.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/owner.html b/deps/npm/html/doc/owner.html new file mode 100644 index 00000000000..399a9d4d2da --- /dev/null +++ b/deps/npm/html/doc/owner.html @@ -0,0 +1,69 @@ + + + owner + + + + +
+

owner

Manage package owners

+ +

SYNOPSIS

+ +
npm owner ls <package name>
+npm owner add <user> <package name>
+npm owner rm <user> <package name>
+ +

DESCRIPTION

+ +

Manage ownership of published packages.

+ +
  • ls: +List all the users who have access to modify a package and push new versions. +Handy when you need to know who to bug for help.
  • add: +Add a new user as a maintainer of a package. This user is enabled to modify +metadata, publish new versions, and add other owners.
  • rm: +Remove a user from the package owner list. This immediately revokes their +privileges.
+ +

Note that there is only one level of access. Either you can modify a package, +or you can't. Future versions may contain more fine-grained access levels, but +that is not implemented at this time.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/pack.html b/deps/npm/html/doc/pack.html new file mode 100644 index 00000000000..72cdeae7420 --- /dev/null +++ b/deps/npm/html/doc/pack.html @@ -0,0 +1,64 @@ + + + pack + + + + +
+

pack

Create a tarball from a package

+ +

SYNOPSIS

+ +
npm pack [<pkg> [<pkg> ...]]
+ +

DESCRIPTION

+ +

For anything that's installable (that is, a package folder, tarball, +tarball url, name@tag, name@version, or name), this command will fetch +it to the cache, and then copy the tarball to the current working +directory as <name>-<version>.tgz, and then write the filenames out to +stdout.

+ +

If the same package is specified multiple times, then the file will be +overwritten the second time.

+ +

If no arguments are supplied, then npm packs the current package folder.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/prefix.html b/deps/npm/html/doc/prefix.html new file mode 100644 index 00000000000..c17b7e195ee --- /dev/null +++ b/deps/npm/html/doc/prefix.html @@ -0,0 +1,55 @@ + + + prefix + + + + +
+

prefix

Display prefix

+ +

SYNOPSIS

+ +
npm prefix
+ +

DESCRIPTION

+ +

Print the prefix to standard out.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/prune.html b/deps/npm/html/doc/prune.html new file mode 100644 index 00000000000..710a84d5422 --- /dev/null +++ b/deps/npm/html/doc/prune.html @@ -0,0 +1,60 @@ + + + prune + + + + +
+

prune

Remove extraneous packages

+ +

SYNOPSIS

+ +
npm prune [<name> [<name ...]]
+ +

DESCRIPTION

+ +

This command removes "extraneous" packages. If a package name is +provided, then only packages matching one of the supplied names are +removed.

+ +

Extraneous packages are packages that are not listed on the parent +package's dependencies list.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/publish.html b/deps/npm/html/doc/publish.html new file mode 100644 index 00000000000..b6046cd3b0a --- /dev/null +++ b/deps/npm/html/doc/publish.html @@ -0,0 +1,64 @@ + + + publish + + + + +
+

publish

Publish a package

+ +

SYNOPSIS

+ +
npm publish <tarball>
+npm publish <folder>
+ +

DESCRIPTION

+ +

Publishes a package to the registry so that it can be installed by name.

+ +
  • <folder>: +A folder containing a package.json file

  • <tarball>: +A url or file path to a gzipped tar archive containing a single folder +with a package.json file inside.

+ +

Fails if the package name and version combination already exists in +the registry. Overwrites when the "--force" flag is set.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/rebuild.html b/deps/npm/html/doc/rebuild.html new file mode 100644 index 00000000000..6cf2e5390e4 --- /dev/null +++ b/deps/npm/html/doc/rebuild.html @@ -0,0 +1,60 @@ + + + rebuild + + + + +
+

rebuild

Rebuild a package

+ +

SYNOPSIS

+ +
npm rebuild [<name> [<name> ...]]
+ +
  • <name>: +The package to rebuild
+ +

DESCRIPTION

+ +

This command runs the npm build command on the matched folders. This is useful +when you install a new version of node, and must recompile all your C++ addons with +the new binary.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/registry.html b/deps/npm/html/doc/registry.html new file mode 100644 index 00000000000..c53c2343b3e --- /dev/null +++ b/deps/npm/html/doc/registry.html @@ -0,0 +1,132 @@ + + + registry + + + + +
+

registry

The JavaScript Package Registry

+ +

DESCRIPTION

+ +

To resolve packages by name and version, npm talks to a registry website +that implements the CommonJS Package Registry specification for reading +package info.

+ +

Additionally, npm's package registry implementation supports several +write APIs as well, to allow for publishing packages and managing user +account information.

+ +

The official public npm registry is at http://registry.npmjs.org/. It +is powered by a CouchDB database at +http://isaacs.iriscouch.com/registry. The code for the couchapp is +available at http://github.com/isaacs/npmjs.org. npm user accounts +are CouchDB users, stored in the http://isaacs.iriscouch.com/_users +database.

+ +

The registry URL is supplied by the registry config parameter. See +config(1) for more on managing npm's configuration.

+ +

Can I run my own private registry?

+ +

Yes!

+ +

The easiest way is to replicate the couch database, and use the same (or +similar) design doc to implement the APIs.

+ +

If you set up continuous replication from the official CouchDB, and then +set your internal CouchDB as the registry config, then you'll be able +to read any published packages, in addition to your private ones, and by +default will only publish internally. If you then want to publish a +package for the whole world to see, you can simply override the +--registry config for that command.

+ +

I don't want my package published in the official registry. It's private.

+ +

Set "private": true in your package.json to prevent it from being +published at all, or +"publishConfig":{"registry":"http://my-internal-registry.local"} +to force it to be published only to your internal registry.

+ +

See json(1) for more info on what goes in the package.json file.

+ +

Will you replicate from my registry into the public one?

+ +

No. If you want things to be public, then publish them into the public +registry using npm. What little security there is would be for nought +otherwise.

+ +

Do I have to use couchdb to build a registry that npm can talk to?

+ +

No, but it's way easier.

+ +

I published something elsewhere, and want to tell the npm registry about it.

+ +

That is supported, but not using the npm client. You'll have to get +your hands dirty and do some HTTP. The request looks something like +this:

+ +
PUT /my-foreign-package
+content-type:application/json
+accept:application/json
+authorization:Basic $base_64_encoded
+
+{ "name":"my-foreign-package"
+, "maintainers":["owner","usernames"]
+, "description":"A package that is hosted elsewhere"
+, "keywords":["nih","my cheese smells the best"]
+, "url":"http://my-different-registry.com/blerg/my-local-package"
+}
+ +

(Keywords and description are optional, but recommended. Name, +maintainers, and url are required.)

+ +

Then, when a user tries to install "my-foreign-package", it'll redirect +to your registry. If that doesn't resolve to a valid package entry, +then it'll fail, so please make sure that you understand the spec, and +ask for help on the npm-@googlegroups.com mailing list.

+ +

Is there a website or something to see package docs and such?

+ +

No, but such a thing is planned, and a tiny bit developed.

+ +

Stay tuned!

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/removing-npm.html b/deps/npm/html/doc/removing-npm.html new file mode 100644 index 00000000000..095fbca6283 --- /dev/null +++ b/deps/npm/html/doc/removing-npm.html @@ -0,0 +1,93 @@ + + + removing-npm + + + + +
+

removal

Cleaning the Slate

+ +

SYNOPSIS

+ +

So sad to see you go.

+ +
sudo npm uninstall npm -g
+ +

Or, if that fails, get the npm source code, and do:

+ +
sudo make uninstall
+ +

More Severe Uninstalling

+ +

Usually, the above instructions are sufficient. That will remove +npm, but leave behind anything you've installed.

+ +

If that doesn't work, or if you require more drastic measures, +continue reading.

+ +

Note that this is only necessary for globally-installed packages. Local +installs are completely contained within a project's node_modules +folder. Delete that folder, and everything is gone (unless a package's +install script is particularly ill-behaved).

+ +

This assumes that you installed node and npm in the default place. If +you configured node with a different --prefix, or installed npm with a +different prefix setting, then adjust the paths accordingly, replacing +/usr/local with your install prefix.

+ +

To remove everything npm-related manually:

+ +
rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*
+ +

If you installed things with npm, then your best bet is to uninstall +them with npm first, and then install them again once you have a +proper install. This can help find any symlinks that are lying +around:

+ +
ls -laF /usr/local/{lib/node{,/.npm},bin,share/man} | grep npm
+ +

Prior to version 0.3, npm used shim files for executables and node +modules. To track those down, you can do the following:

+ +
find /usr/local/{lib/node,bin} -exec grep -l npm \{\} \; ;
+ +

(This is also in the README file.)

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/restart.html b/deps/npm/html/doc/restart.html new file mode 100644 index 00000000000..3eb4fd3a930 --- /dev/null +++ b/deps/npm/html/doc/restart.html @@ -0,0 +1,59 @@ + + + restart + + + + +
+

restart

Start a package

+ +

SYNOPSIS

+ +
npm restart <name>
+ +

DESCRIPTION

+ +

This runs a package's "restart" script, if one was provided. +Otherwise it runs package's "stop" script, if one was provided, and then +the "start" script.

+ +

If no version is specified, then it restarts the "active" version.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/rm.html b/deps/npm/html/doc/rm.html new file mode 100644 index 00000000000..3d4c2a47bcb --- /dev/null +++ b/deps/npm/html/doc/rm.html @@ -0,0 +1,57 @@ + + + rm + + + + +
+

rm

Remove a package

+ +

SYNOPSIS

+ +
npm rm <name>
+npm uninstall <name>
+ +

DESCRIPTION

+ +

This uninstalls a package, completely removing everything npm installed +on its behalf.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/root.html b/deps/npm/html/doc/root.html new file mode 100644 index 00000000000..c3d26106042 --- /dev/null +++ b/deps/npm/html/doc/root.html @@ -0,0 +1,55 @@ + + + root + + + + +
+

root

Display npm root

+ +

SYNOPSIS

+ +
npm root
+ +

DESCRIPTION

+ +

Print the effective node_modules folder to standard out.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/run-script.html b/deps/npm/html/doc/run-script.html new file mode 100644 index 00000000000..d2e018aa892 --- /dev/null +++ b/deps/npm/html/doc/run-script.html @@ -0,0 +1,58 @@ + + + run-script + + + + +
+

run-script

Run arbitrary package scripts

+ +

SYNOPSIS

+ +
npm run-script <script> <name>
+ +

DESCRIPTION

+ +

This runs an arbitrary command from a package's "scripts" object.

+ +

It is used by the test, start, restart, and stop commands, but can be +called directly, as well.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/scripts.html b/deps/npm/html/doc/scripts.html new file mode 100644 index 00000000000..759cca5a894 --- /dev/null +++ b/deps/npm/html/doc/scripts.html @@ -0,0 +1,199 @@ + + + scripts + + + + +
+

scripts

How npm handles the "scripts" field

+ +

DESCRIPTION

+ +

npm supports the "scripts" member of the package.json script, for the +following scripts:

+ +
  • preinstall: +Run BEFORE the package is installed
  • install, postinstall: +Run AFTER the package is installed.
  • preuninstall, uninstall: +Run BEFORE the package is uninstalled.
  • postuninstall: +Run AFTER the package is uninstalled.
  • preupdate: +Run BEFORE the package is updated with the update command.
  • update, postupdate: +Run AFTER the package is updated with the update command.
  • prepublish: +Run BEFORE the package is published.
  • publish, postpublish: +Run AFTER the package is published.
  • pretest, test, posttest: +Run by the npm test command.
  • prestop, stop, poststop: +Run by the npm stop command.
  • prestart, start, poststart: +Run by the npm start command.
  • prerestart, restart, postrestart: +Run by the npm restart command. Note: npm restart will run the +stop and start scripts if no restart script is provided.
+ +

Additionally, arbitrary scrips can be run by doing +npm run-script <stage> <pkg>.

+ +

DEFAULT VALUES

+ +

npm will default some script values based on package contents.

+ +
  • "start": "node server.js":

    If there is a server.js file in the root of your package, then npm +will default the start command to node server.js.

  • "preinstall": "node-waf clean || true; node-waf configure build":

    If there is a wscript file in the root of your package, npm will +default the preinstall command to compile using node-waf.

+ +

USER

+ +

If npm was invoked with root privileges, then it will change the uid to +the user account or uid specified by the user config, which defaults +to nobody. Set the unsafe-perm flag to run scripts with root +privileges.

+ +

ENVIRONMENT

+ +

Package scripts run in an environment where many pieces of information are +made available regarding the setup of npm and the current state of the +process.

+ +

package.json vars

+ +

The package.json fields are tacked onto the npm_package_ prefix. So, for +instance, if you had {"name":"foo", "version":"1.2.5"} in your package.json +file, then your package scripts would have the npm_package_name environment +variable set to "foo", and the npm_package_version set to "1.2.5"

+ +

configuration

+ +

Configuration parameters are put in the environment with the npm_config_ +prefix. For instance, you can view the effective root config by checking the +npm_config_root environment variable.

+ +

Special: package.json "config" hash

+ +

The package.json "config" keys are overwritten in the environment if +there is a config param of <name>[@<version>]:<key>. For example, if +the package.json has this:

+ +
{ "name" : "foo"
+, "config" : { "port" : "8080" }
+, "scripts" : { "start" : "node server.js" } }
+ +

and the server.js is this:

+ +
http.createServer(...).listen(process.env.npm_package_config_port)
+ +

then the user could change the behavior by doing:

+ +
npm config set foo:port 80
+ +

current lifecycle event

+ +

Lastly, the npm_lifecycle_event environment variable is set to whichever +stage of the cycle is being executed. So, you could have a single script used +for different parts of the process which switches based on what's currently +happening.

+ +

Objects are flattened following this format, so if you had +{"scripts":{"install":"foo.js"}} in your package.json, then you'd see this +in the script:

+ +
process.env.npm_package_scripts_install === "foo.js"
+ +

EXAMPLES

+ +

For example, if your package.json contains this:

+ +
{ "scripts" :
+  { "install" : "scripts/install.js"
+  , "postinstall" : "scripts/install.js"
+  , "uninstall" : "scripts/uninstall.js"
+  }
+}
+ +

then the scripts/install.js will be called for the install, post-install, +stages of the lifecycle, and the scripts/uninstall.js would be +called when the package is uninstalled. Since scripts/install.js is running +for three different phases, it would be wise in this case to look at the +npm_lifecycle_event environment variable.

+ +

If you want to run a make command, you can do so. This works just fine:

+ +
{ "scripts" :
+  { "preinstall" : "./configure"
+  , "install" : "make && make install"
+  , "test" : "make test"
+  }
+}
+ +

EXITING

+ +

Scripts are run by passing the line as a script argument to sh.

+ +

If the script exits with a code other than 0, then this will abort the +process.

+ +

Note that these script files don't have to be nodejs or even javascript +programs. They just have to be some kind of executable file.

+ +

HOOK SCRIPTS

+ +

If you want to run a specific script at a specific lifecycle event for ALL +packages, then you can use a hook script.

+ +

Place an executable file at node_modules/.hooks/{eventname}, and it'll get +run for all packages when they are going through that point in the package +lifecycle for any packages installed in that root.

+ +

Hook scripts are run exactly the same way as package.json scripts. That is, +they are in a separate child process, with the env described above.

+ +

BEST PRACTICES

+ +
  • Don't exit with a non-zero error code unless you really mean it. +Except for uninstall scripts, this will cause the npm action +to fail, and potentially be rolled back. If the failure is minor or +only will prevent some optional features, then it's better to just +print a warning and exit successfully.
  • Try not to use scripts to do what npm can do for you. Read through +json(1) to see all the things that you can specify and enable +by simply describing your package appropriately. In general, this will +lead to a more robust and consistent state.
  • Inspect the env to determine where to put things. For instance, if +the npm_config_binroot environ is set to /home/user/bin, then don't +try to install executables into /usr/local/bin. The user probably +set it up that way for a reason.
  • Don't prefix your script commands with "sudo". If root permissions are +required for some reason, then it'll fail with that error, and the user +will sudo the npm command in question.
+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/search.html b/deps/npm/html/doc/search.html new file mode 100644 index 00000000000..c042d1e4d21 --- /dev/null +++ b/deps/npm/html/doc/search.html @@ -0,0 +1,75 @@ + + + search + + + + +
+

search

Search for packages

+ +

SYNOPSIS

+ +
npm search [search terms ...]
+ +

DESCRIPTION

+ +

Search the registry for packages matching the search terms.

+ +

CONFIGURATION

+ +

description

+ +
  • Default: true
  • Type: Boolean
+ +

Show the description in npm search

+ +

searchopts

+ +
  • Default: ""
  • Type: String
+ +

Space-separated options that are always passed to search.

+ +

searchexclude

+ +
  • Default: ""
  • Type: String
+ +

Space-separated options that limit the results from search.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/semver.html b/deps/npm/html/doc/semver.html new file mode 100644 index 00000000000..3bd1954929e --- /dev/null +++ b/deps/npm/html/doc/semver.html @@ -0,0 +1,139 @@ + + + semver + + + + +
+

semver

The semantic versioner for npm

+ +

SYNOPSIS

+ +

The npm semantic versioning utility.

+ +

DESCRIPTION

+ +

As a node module:

+ +
$ npm install semver
+
+semver.valid('1.2.3') // true
+semver.valid('a.b.c') // false
+semver.clean('  =v1.2.3   ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+ +

As a command-line utility:

+ +
$ npm install semver -g
+$ semver -h
+
+Usage: semver -v <version> [-r <range>]
+Test if version(s) satisfy the supplied range(s),
+and sort them.
+
+Multiple versions or ranges may be supplied.
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no versions are valid, or ranges are not satisfied,
+then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+ +

Versions

+ +

A version is the following things, in this order:

+ +
  • a number (Major)
  • a period
  • a number (minor)
  • a period
  • a number (patch)
  • OPTIONAL: a hyphen, followed by a number (build)
  • OPTIONAL: a collection of pretty much any non-whitespace characters +(tag)
+ +

A leading "=" or "v" character is stripped off and ignored.

+ +

Comparisons

+ +

The ordering of versions is done using the following algorithm, given +two versions and asked to find the greater of the two:

+ +
  • If the majors are numerically different, then take the one +with a bigger major number. 2.3.4 > 1.3.4
  • If the minors are numerically different, then take the one +with the bigger minor number. 2.3.4 > 2.2.4
  • If the patches are numerically different, then take the one with the +bigger patch number. 2.3.4 > 2.3.3
  • If only one of them has a build number, then take the one with the +build number. 2.3.4-0 > 2.3.4
  • If they both have build numbers, and the build numbers are numerically +different, then take the one with the bigger build number. +2.3.4-10 > 2.3.4-9
  • If only one of them has a tag, then take the one without the tag. +2.3.4 > 2.3.4-beta
  • If they both have tags, then take the one with the lexicographically +larger tag. 2.3.4-beta > 2.3.4-alpha
  • At this point, they're equal.
+ +

Ranges

+ +

The following range styles are supported:

+ +
  • >1.2.3 Greater than a specific version.
  • <1.2.3 Less than
  • 1.2.3 - 2.3.4 := >=1.2.3 <=2.3.4
  • ~1.2.3 := >=1.2.3 <1.3.0
  • ~1.2 := >=1.2.0 <2.0.0
  • ~1 := >=1.0.0 <2.0.0
  • 1.2.x := >=1.2.0 <1.3.0
  • 1.x := >=1.0.0 <2.0.0
+ +

Ranges can be joined with either a space (which implies "and") or a +|| (which implies "or").

+ +

Functions

+ +
  • valid(v): Return the parsed version, or null if it's not valid.
  • inc(v, release): Return the version incremented by the release type +(major, minor, patch, or build), or null if it's not valid.
+ +

Comparison

+ +
  • gt(v1, v2): v1 > v2
  • gte(v1, v2): v1 >= v2
  • lt(v1, v2): v1 < v2
  • lte(v1, v2): v1 <= v2
  • eq(v1, v2): v1 == v2 This is true if they're logically equivalent, +even if they're not the exact same string. You already know how to +compare strings.
  • neq(v1, v2): v1 != v2 The opposite of eq.
  • cmp(v1, comparator, v2): Pass in a comparison string, and it'll call +the corresponding function above. "===" and "!==" do simple +string comparison, but are included for completeness. Throws if an +invalid comparison string is provided.
  • compare(v1, v2): Return 0 if v1 == v2, or 1 if v1 is greater, or -1 if +v2 is greater. Sorts in ascending order if passed to Array.sort().
  • rcompare(v1, v2): The reverse of compare. Sorts an array of versions +in descending order when passed to Array.sort().
+ +

Ranges

+ +
  • validRange(range): Return the valid range or null if it's not valid
  • satisfies(version, range): Return true if the version satisfies the +range.
  • maxSatisfying(versions, range): Return the highest version in the list +that satisfies the range, or null if none of them do.
+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/set.html b/deps/npm/html/doc/set.html new file mode 100644 index 00000000000..3af90b447f1 --- /dev/null +++ b/deps/npm/html/doc/set.html @@ -0,0 +1,621 @@ + + + set + + + + +
+

config

Manage the npm configuration file

+ +

SYNOPSIS

+ +
npm config set <key> <value> [--global]
+npm config get <key>
+npm config delete <key>
+npm config list
+npm config edit
+npm get <key>
+npm set <key> <value> [--global]
+ +

DESCRIPTION

+ +

npm gets its configuration values from 6 sources, in this priority:

+ +

Command Line Flags

+ +

Putting --foo bar on the command line sets the +foo configuration parameter to "bar". A -- argument tells the cli +parser to stop reading flags. A --flag parameter that is at the end of +the command will be given the value of true.

+ +

Environment Variables

+ +

Any environment variables that start with npm_config_ will be interpreted +as a configuration parameter. For example, putting npm_config_foo=bar in +your environment will set the foo configuration parameter to bar. Any +environment configurations that are not given a value will be given the value +of true. Config values are case-insensitive, so NPM_CONFIG_FOO=bar will +work the same.

+ +

Per-user config file

+ +

$HOME/.npmrc (or the userconfig param, if set above)

+ +

This file is an ini-file formatted list of key = value parameters.

+ +

Global config file

+ +

$PREFIX/etc/npmrc (or the globalconfig param, if set above): +This file is an ini-file formatted list of key = value parameters

+ +

Built-in config file

+ +

path/to/npm/itself/npmrc

+ +

This is an unchangeable "builtin" +configuration file that npm keeps consistent across updates. Set +fields in here using the ./configure script that comes with npm. +This is primarily for distribution maintainers to override default +configs in a standard and consistent manner.

+ +

Default Configs

+ +

A set of configuration parameters that are internal to npm, and are +defaults if nothing else is specified.

+ +

Sub-commands

+ +

Config supports the following sub-commands:

+ +

set

+ +
npm config set key value
+ +

Sets the config key to the value.

+ +

If value is omitted, then it sets it to "true".

+ +

get

+ +
npm config get key
+ +

Echo the config value to stdout.

+ +

list

+ +
npm config list
+ +

Show all the config settings.

+ +

delete

+ +
npm config delete key
+ +

Deletes the key from all configuration files.

+ +

edit

+ +
npm config edit
+ +

Opens the config file in an editor. Use the --global flag to edit the +global config.

+ +

Shorthands and Other CLI Niceties

+ +

The following shorthands are parsed on the command-line:

+ +
  • -v: --version
  • -h, -?, --help, -H: --usage
  • -s, --silent: --loglevel silent
  • -d: --loglevel info
  • -dd, --verbose: --loglevel verbose
  • -ddd: --loglevel silly
  • -g: --global
  • -l: --long
  • -m: --message
  • -p, --porcelain: --parseable
  • -reg: --registry
  • -v: --version
  • -f: --force
  • -l: --long
  • -desc: --description
  • -S: --save
  • -y: --yes
  • -n: --yes false
  • ll and la commands: ls --long
+ +

If the specified configuration param resolves unambiguously to a known +configuration parameter, then it is expanded to that configuration +parameter. For example:

+ +
npm ls --par
+# same as:
+npm ls --parseable
+ +

If multiple single-character shorthands are strung together, and the +resulting combination is unambiguously not some other configuration +param, then it is expanded to its various component pieces. For +example:

+ +
npm ls -gpld
+# same as:
+npm ls --global --parseable --long --loglevel info
+ +

Per-Package Config Settings

+ +

When running scripts (see scripts(1)) +the package.json "config" keys are overwritten in the environment if +there is a config param of <name>[@<version>]:<key>. For example, if +the package.json has this:

+ +
{ "name" : "foo"
+, "config" : { "port" : "8080" }
+, "scripts" : { "start" : "node server.js" } }
+ +

and the server.js is this:

+ +
http.createServer(...).listen(process.env.npm_package_config_port)
+ +

then the user could change the behavior by doing:

+ +
npm config set foo:port 80
+ +

Config Settings

+ +

always-auth

+ +
  • Default: false
  • Type: Boolean
+ +

Force npm to always require authentication when accessing the registry, +even for GET requests.

+ +

bin-publish

+ +
  • Default: false
  • Type: Boolean
+ +

If set to true, then binary packages will be created on publish.

+ +

This is the way to opt into the "bindist" behavior described below.

+ +

bindist

+ +
  • Default: Unstable node versions, null, otherwise +"<node version>-<platform>-<os release>"
  • Type: String or null
+ +

Experimental: on stable versions of node, binary distributions will be +created with this tag. If a user then installs that package, and their +bindist tag is found in the list of binary distributions, they will +get that prebuilt version.

+ +

Pre-build node packages have their preinstall, install, and postinstall +scripts stripped (since they are run prior to publishing), and do not +have their build directories automatically ignored.

+ +

It's yet to be seen if this is a good idea.

+ +

browser

+ +
  • Default: OS X: "open", others: "google-chrome"
  • Type: String
+ +

The browser that is called by the npm docs command to open websites.

+ +

ca

+ +
  • Default: The npm CA certificate
  • Type: String or null
+ +

The Certificate Authority signing certificate that is trusted for SSL +connections to the registry.

+ +

Set to null to only allow "known" registrars, or to a specific CA cert +to trust only that specific signing authority.

+ +

See also the strict-ssl config.

+ +

cache

+ +
  • Default: Windows: ~/npm-cache, Posix: ~/.npm
  • Type: path
+ +

The location of npm's cache directory. See cache(1)

+ +

color

+ +
  • Default: true on Posix, false on Windows
  • Type: Boolean or "always"
+ +

If false, never shows colors. If "always" then always shows colors. +If true, then only prints color codes for tty file descriptors.

+ +

depth

+ +
  • Default: Infinity
  • Type: Number
+ +

The depth to go when recursing directories for npm ls and +npm cache ls.

+ +

description

+ +
  • Default: true
  • Type: Boolean
+ +

Show the description in npm search

+ +

dev

+ +
  • Default: false
  • Type: Boolean
+ +

Install dev-dependencies along with packages.

+ +

Note that dev-dependencies are also installed if the npat flag is +set.

+ +

editor

+ +
  • Default: EDITOR environment variable if set, or "vi" on Posix, +or "notepad" on Windows.
  • Type: path
+ +

The command to run for npm edit or npm config edit.

+ +

force

+ +
  • Default: false
  • Type: Boolean
+ +

Makes various commands more forceful.

+ +
  • lifecycle script failure does not block progress.
  • publishing clobbers previously published versions.
  • skips cache when requesting from the registry.
  • prevents checks against clobbering non-npm files.
+ +

global

+ +
  • Default: false
  • Type: Boolean
+ +

Operates in "global" mode, so that packages are installed into the +prefix folder instead of the current working directory. See +folders(1) for more on the differences in behavior.

+ +
  • packages are installed into the prefix/node_modules folder, instead of the +current working directory.
  • bin files are linked to prefix/bin
  • man pages are linked to prefix/share/man
+ +

globalconfig

+ +
  • Default: {prefix}/etc/npmrc
  • Type: path
+ +

The config file to read for global config options.

+ +

globalignorefile

+ +
  • Default: {prefix}/etc/npmignore
  • Type: path
+ +

The config file to read for global ignore patterns to apply to all users +and all projects.

+ +

If not found, but there is a "gitignore" file in the +same directory, then that will be used instead.

+ +

group

+ +
  • Default: GID of the current process
  • Type: String or Number
+ +

The group to use when running package scripts in global mode as the root +user.

+ +

https-proxy

+ +
  • Default: the HTTPS_PROXY or https_proxy or HTTP_PROXY or +http_proxy environment variables.
  • Type: url
+ +

A proxy to use for outgoing https requests.

+ +

ignore

+ +
  • Default: ""
  • Type: string
+ +

A white-space separated list of glob patterns of files to always exclude +from packages when building tarballs.

+ +

init.version

+ +
  • Default: "0.0.0"
  • Type: semver
+ +

The value npm init should use by default for the package version.

+ +

init.author.name

+ +
  • Default: "0.0.0"
  • Type: String
+ +

The value npm init should use by default for the package author's name.

+ +

init.author.email

+ +
  • Default: ""
  • Type: String
+ +

The value npm init should use by default for the package author's email.

+ +

init.author.url

+ +
  • Default: ""
  • Type: String
+ +

The value npm init should use by default for the package author's homepage.

+ + + +
  • Default: false
  • Type: Boolean
+ +

If true, then local installs will link if there is a suitable globally +installed package.

+ +

Note that this means that local installs can cause things to be +installed into the global space at the same time. The link is only done +if one of the two conditions are met:

+ +
  • The package is not already installed globally, or
  • the globally installed version is identical to the version that is +being installed locally.
+ +

logfd

+ +
  • Default: stderr file descriptor
  • Type: Number or Stream
+ +

The location to write log output.

+ +

loglevel

+ +
  • Default: "warn"
  • Type: String
  • Values: "silent", "win", "error", "warn", "info", "verbose", "silly"
+ +

What level of logs to report. On failure, all logs are written to +npm-debug.log in the current working directory.

+ +

logprefix

+ +
  • Default: true on Posix, false on Windows
  • Type: Boolean
+ +

Whether or not to prefix log messages with "npm" and the log level. See +also "color" and "loglevel".

+ +

long

+ +
  • Default: false
  • Type: Boolean
+ +

Show extended information in npm ls

+ +

message

+ +
  • Default: "%s"
  • Type: String
+ +

Commit message which is used by npm version when creating version commit.

+ +

Any "%s" in the message will be replaced with the version number.

+ +

node-version

+ +
  • Default: process.version
  • Type: semver or false
+ +

The node version to use when checking package's "engines" hash.

+ +

npat

+ +
  • Default: false
  • Type: Boolean
+ +

Run tests on installation and report results to the +npaturl.

+ +

npaturl

+ +
  • Default: Not yet implemented
  • Type: url
+ +

The url to report npat test results.

+ +

onload-script

+ +
  • Default: false
  • Type: path
+ +

A node module to require() when npm loads. Useful for programmatic +usage.

+ +

outfd

+ +
  • Default: standard output file descriptor
  • Type: Number or Stream
+ +

Where to write "normal" output. This has no effect on log output.

+ +

parseable

+ +
  • Default: false
  • Type: Boolean
+ +

Output parseable results from commands that write to +standard output.

+ +

prefix

+ +
  • Default: node's process.installPrefix
  • Type: path
+ +

The location to install global items. If set on the command line, then +it forces non-global commands to run in the specified folder.

+ +

production

+ +
  • Default: false
  • Type: Boolean
+ +

Set to true to run in "production" mode.

+ +
  1. devDependencies are not installed at the topmost level when running +local npm install without any arguments.
  2. Set the NODE_ENV="production" for lifecycle scripts.
+ +

proxy

+ +
  • Default: HTTP_PROXY or http_proxy environment variable, or null
  • Type: url
+ +

A proxy to use for outgoing http requests.

+ +

rebuild-bundle

+ +
  • Default: true
  • Type: Boolean
+ +

Rebuild bundled dependencies after installation.

+ +

registry

+ +
  • Default: https://registry.npmjs.org/
  • Type: url
+ +

The base URL of the npm package registry.

+ +

rollback

+ +
  • Default: true
  • Type: Boolean
+ +

Remove failed installs.

+ +

save

+ +
  • Default: false
  • Type: Boolean
+ +

Save installed packages to a package.json file as dependencies.

+ +

Only works if there is already a package.json file present.

+ +

searchopts

+ +
  • Default: ""
  • Type: String
+ +

Space-separated options that are always passed to search.

+ +

searchexclude

+ +
  • Default: ""
  • Type: String
+ +

Space-separated options that limit the results from search.

+ +

shell

+ +
  • Default: SHELL environment variable, or "bash" on Posix, or "cmd" on +Windows
  • Type: path
+ +

The shell to run for the npm explore command.

+ +

strict-ssl

+ +
  • Default: true
  • Type: Boolean
+ +

Whether or not to do SSL key validation when making requests to the +registry via https.

+ +

See also the ca config.

+ +

tag

+ +
  • Default: latest
  • Type: String
+ +

If you ask npm to install a package and don't tell it a specific version, then +it will install the specified tag.

+ +

Also the tag that is added to the package@version specified by the npm +tag command, if no explicit tag is given.

+ +

tmp

+ +
  • Default: TMPDIR environment variable, or "/tmp"
  • Type: path
+ +

Where to store temporary files and folders. All temp files are deleted +on success, but left behind on failure for forensic purposes.

+ +

unicode

+ +
  • Default: true
  • Type: Boolean
+ +

When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters to draw trees.

+ +

unsafe-perm

+ +
  • Default: false if running as root, true otherwise
  • Type: Boolean
+ +

Set to true to suppress the UID/GID switching when running package +scripts. If set explicitly to false, then installing as a non-root user +will fail.

+ +

usage

+ +
  • Default: false
  • Type: Boolean
+ +

Set to show short usage output (like the -H output) +instead of complete help when doing help(1).

+ +

user

+ +
  • Default: "nobody"
  • Type: String or Number
+ +

The UID to set to when running package scripts as root.

+ +

username

+ +
  • Default: null
  • Type: String
+ +

The username on the npm registry. Set with npm adduser

+ +

userconfig

+ +
  • Default: ~/.npmrc
  • Type: path
+ +

The location of user-level configuration settings.

+ +

userignorefile

+ +
  • Default: ~/.npmignore
  • Type: path
+ +

The location of a user-level ignore file to apply to all packages.

+ +

If not found, but there is a .gitignore file in the same directory, then +that will be used instead.

+ +

umask

+ +
  • Default: 022
  • Type: Octal numeric string
+ +

The "umask" value to use when setting the file creation mode on files +and folders.

+ +

Folders and executables are given a mode which is 0777 masked against +this value. Other files are given a mode which is 0666 masked against +this value. Thus, the defaults are 0755 and 0644 respectively.

+ +

version

+ +
  • Default: false
  • Type: boolean
+ +

If true, output the npm version and exit successfully.

+ +

Only relevant when specified explicitly on the command line.

+ +

viewer

+ +
  • Default: "man" on Posix, "browser" on Windows
  • Type: path
+ +

The program to use to view help content.

+ +

Set to "browser" to view html help content in the default web browser.

+ +

yes

+ +
  • Default: null
  • Type: Boolean or null
+ +

If set to null, then prompt the user for responses in some +circumstances.

+ +

If set to true, then answer "yes" to any prompt. If set to false +then answer "no" to any prompt.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/star.html b/deps/npm/html/doc/star.html new file mode 100644 index 00000000000..dd3b07451e7 --- /dev/null +++ b/deps/npm/html/doc/star.html @@ -0,0 +1,61 @@ + + + star + + + + +
+

star

Mark your favorite packages

+ +

SYNOPSIS

+ +
npm star <pkgname> [<pkg>, ...]
+npm unstar <pkgname> [<pkg>, ...]
+ +

DESCRIPTION

+ +

"Starring" a package means that you have some interest in it. It's +a vaguely positive way to show that you care.

+ +

"Unstarring" is the same thing, but in reverse.

+ +

It's a boolean thing. Starring repeatedly has no additional effect.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/start.html b/deps/npm/html/doc/start.html new file mode 100644 index 00000000000..dae9352e7db --- /dev/null +++ b/deps/npm/html/doc/start.html @@ -0,0 +1,55 @@ + + + start + + + + +
+

start

Start a package

+ +

SYNOPSIS

+ +
npm start <name>
+ +

DESCRIPTION

+ +

This runs a package's "start" script, if one was provided.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/stop.html b/deps/npm/html/doc/stop.html new file mode 100644 index 00000000000..13c2c9fb17a --- /dev/null +++ b/deps/npm/html/doc/stop.html @@ -0,0 +1,55 @@ + + + stop + + + + +
+

stop

Stop a package

+ +

SYNOPSIS

+ +
npm stop <name>
+ +

DESCRIPTION

+ +

This runs a package's "stop" script, if one was provided.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/submodule.html b/deps/npm/html/doc/submodule.html new file mode 100644 index 00000000000..bc61746c677 --- /dev/null +++ b/deps/npm/html/doc/submodule.html @@ -0,0 +1,68 @@ + + + submodule + + + + +
+

submodule

Add a package as a git submodule

+ +

SYNOPSIS

+ +
npm submodule <pkg>
+ +

DESCRIPTION

+ +

If the specified package has a git repository url in its package.json +description, then this command will add it as a git submodule at +node_modules/<pkg name>.

+ +

This is a convenience only. From then on, it's up to you to manage +updates by using the appropriate git commands. npm will stubbornly +refuse to update, modify, or remove anything with a .git subfolder +in it.

+ +

This command also does not install missing dependencies, if the package +does not include them in its git repository. If npm ls reports that +things are missing, you can either install, link, or submodule them yourself, +or you can do npm explore <pkgname> -- npm install to install the +dependencies into the submodule folder.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/tag.html b/deps/npm/html/doc/tag.html new file mode 100644 index 00000000000..4662c1da344 --- /dev/null +++ b/deps/npm/html/doc/tag.html @@ -0,0 +1,56 @@ + + + tag + + + + +
+

tag

Tag a published version

+ +

SYNOPSIS

+ +
npm tag <name>@<version> [<tag>]
+ +

DESCRIPTION

+ +

Tags the specified version of the package with the specified tag, or the +--tag config if not specified.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/test.html b/deps/npm/html/doc/test.html new file mode 100644 index 00000000000..e415cef3900 --- /dev/null +++ b/deps/npm/html/doc/test.html @@ -0,0 +1,58 @@ + + + test + + + + +
+

test

Test a package

+ +

SYNOPSIS

+ +
  npm test <name>
+ +

DESCRIPTION

+ +

This runs a package's "test" script, if one was provided.

+ +

To run tests as a condition of installation, set the npat config to +true.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/uninstall.html b/deps/npm/html/doc/uninstall.html new file mode 100644 index 00000000000..d262cfc1eaa --- /dev/null +++ b/deps/npm/html/doc/uninstall.html @@ -0,0 +1,57 @@ + + + uninstall + + + + +
+

rm

Remove a package

+ +

SYNOPSIS

+ +
npm rm <name>
+npm uninstall <name>
+ +

DESCRIPTION

+ +

This uninstalls a package, completely removing everything npm installed +on its behalf.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/unpublish.html b/deps/npm/html/doc/unpublish.html new file mode 100644 index 00000000000..89b312ccca7 --- /dev/null +++ b/deps/npm/html/doc/unpublish.html @@ -0,0 +1,69 @@ + + + unpublish + + + + +
+

unpublish

Remove a package from the registry

+ +

SYNOPSIS

+ +
npm unpublish <name>[@<version>]
+ +

WARNING

+ +

It is generally considered bad behavior to remove versions of a library +that others are depending on!

+ +

Consider using the deprecate command +instead, if your intent is to encourage users to upgrade.

+ +

There is plenty of room on the registry.

+ +

DESCRIPTION

+ +

This removes a package version from the registry, deleting its +entry and removing the tarball.

+ +

If no version is specified, or if all versions are removed then +the root package entry is removed from the registry entirely.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/update.html b/deps/npm/html/doc/update.html new file mode 100644 index 00000000000..b5e9d007c0f --- /dev/null +++ b/deps/npm/html/doc/update.html @@ -0,0 +1,58 @@ + + + update + + + + +
+

update

Update a package

+ +

SYNOPSIS

+ +
npm update [<name> [<name> ...]]
+ +

DESCRIPTION

+ +

This command will update all the packages listed to the latest version +(specified by the tag config).

+ +

It will also install missing packages.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/version.html b/deps/npm/html/doc/version.html new file mode 100644 index 00000000000..9bc3ce49c69 --- /dev/null +++ b/deps/npm/html/doc/version.html @@ -0,0 +1,66 @@ + + + version + + + + +
+

version

Bump a package version

+ +

SYNOPSIS

+ +
npm version <newversion> [--message commit-message]
+ +

DESCRIPTION

+ +

Run this in a package directory to bump the version and write the new +data back to the package.json file.

+ +

The newversion argument should be a valid semver string, or a valid +second argument to semver.inc (one of "patch", "minor", or "major"). In +the second case, the existing version will be incremented by that amount.

+ +

If run in a git repo, it will also create a version commit and tag, and +fail if the repo is not clean.

+ +

If supplied with --message (shorthand: -m) command line option, npm +will use it as a commit message when creating a version commit.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/view.html b/deps/npm/html/doc/view.html new file mode 100644 index 00000000000..f1ed5c4d295 --- /dev/null +++ b/deps/npm/html/doc/view.html @@ -0,0 +1,123 @@ + + + view + + + + +
+

view

View registry info

+ +

SYNOPSIS

+ +
npm view <name>[@<version>] [<field>[.<subfield>]...]
+ +

DESCRIPTION

+ +

This command shows data about a package and prints it to the stream +referenced by the outfd config, which defaults to stdout.

+ +

To show the package registry entry for the connect package, you can do +this:

+ +
npm view connect
+ +

The default version is "latest" if unspecified.

+ +

Field names can be specified after the package descriptor. +For example, to show the dependencies of the ronn package at version +0.3.5, you could do the following:

+ +
npm view ronn@0.3.5 dependencies
+ +

You can view child field by separating them with a period. +To view the git repository URL for the latest version of npm, you could +do this:

+ +
npm view npm repository.url
+ +

This makes it easy to view information about a dependency with a bit of +shell scripting. For example, to view all the data about the version of +opts that ronn depends on, you can do this:

+ +
npm view opts@$(npm view ronn dependencies.opts)
+ +

For fields that are arrays, requesting a non-numeric field will return +all of the values from the objects in the list. For example, to get all +the contributor names for the "express" project, you can do this:

+ +
npm view express contributors.email
+ +

You may also use numeric indices in square braces to specifically select +an item in an array field. To just get the email address of the first +contributor in the list, you can do this:

+ +
npm view express contributors[0].email
+ +

Multiple fields may be specified, and will be printed one after another. +For exampls, to get all the contributor names and email addresses, you +can do this:

+ +
npm view express contributors.name contributors.email
+ +

"Person" fields are shown as a string if they would be shown as an +object. So, for example, this will show the list of npm contributors in +the shortened string format. (See json(1) for more on this.)

+ +
npm view npm contributors
+ +

If a version range is provided, then data will be printed for every +matching version of the package. This will show which version of jsdom +was required by each matching version of yui3:

+ +
npm view yui3@'>0.5.4' dependencies.jsdom
+ +

OUTPUT

+ +

If only a single string field for a single version is output, then it +will not be colorized or quoted, so as to enable piping the output to +another command.

+ +

If the version range matches multiple versions, than each printed value +will be prefixed with the version it applies to.

+ +

If multiple fields are requested, than each of them are prefixed with +the field name.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/html/doc/whoami.html b/deps/npm/html/doc/whoami.html new file mode 100644 index 00000000000..30826d38466 --- /dev/null +++ b/deps/npm/html/doc/whoami.html @@ -0,0 +1,55 @@ + + + whoami + + + + +
+

whoami

Display npm username

+ +

SYNOPSIS

+ +
npm whoami
+ +

DESCRIPTION

+ +

Print the username config to standard output.

+ +

SEE ALSO

+ + +
+ + + diff --git a/deps/npm/lib/cache.js b/deps/npm/lib/cache.js index bde72c4f95a..7260ab61a3c 100644 --- a/deps/npm/lib/cache.js +++ b/deps/npm/lib/cache.js @@ -490,7 +490,8 @@ function addLocal (p, name, cb_) { if (er) { // if it doesn't have a / in it, it might be a // remote thing. - if (p.indexOf("/") === -1 && p.charAt(0) !== ".") { + if (p.indexOf("/") === -1 && p.charAt(0) !== "." + && (process.platform !== "win32" || p.indexOf("\\") === -1)) { return addNamed(p, "", cb_) } return log.er(cb_, "Could not install: "+p)(er) diff --git a/deps/npm/lib/help.js b/deps/npm/lib/help.js index 854a7d6bab1..442f839b3ae 100644 --- a/deps/npm/lib/help.js +++ b/deps/npm/lib/help.js @@ -26,7 +26,7 @@ function help (args, cb) { return npm.commands["help-search"](args, num, cb) } - var section = args[0] + var section = npm.deref(args[0]) || args[0] if (section) { if ( npm.config.get("usage") @@ -36,6 +36,7 @@ function help (args, cb) { npm.config.set("loglevel", "silent") return output.write(npm.commands[section].usage, cb) } + var sectionPath = path.join( __dirname, "..", "man", "man" + num , section + "." + num) , htmlPath = path.resolve( __dirname, "..", "html" @@ -53,11 +54,13 @@ function help (args, cb) { }) env.MANPATH = manpath var viewer = npm.config.get("viewer") + switch (viewer) { case "woman": var a = ["-e", "(woman-find-file \"" + sectionPath + "\")"] exec("emacsclient", a, env, true, cb) break + case "browser": var b = npm.config.get("browser") if (!b) { @@ -71,6 +74,7 @@ function help (args, cb) { exec(b, [htmlPath], env, false, function () {}) } break + default: exec("man", [num, section], env, true, cb) } @@ -96,6 +100,8 @@ function help (args, cb) { , " " + npm.config.get("userconfig") , "or on the command line via: npm --key value" , "Config info can be viewed via: npm help config" + , "" + , "npm@" + npm.version + " " + path.dirname(__dirname) ].join("\n"), function () { cb(er) }) }) } diff --git a/deps/npm/lib/utils/config-defs.js b/deps/npm/lib/utils/config-defs.js index 55d5c887dee..c0ed1fca88b 100644 --- a/deps/npm/lib/utils/config-defs.js +++ b/deps/npm/lib/utils/config-defs.js @@ -71,7 +71,10 @@ var temp = process.env.TMPDIR var home = ( process.platform === "win32" ? process.env.USERPROFILE - : process.env.HOME ) || temp + : process.env.HOME ) + +if (home) process.env.HOME = home +else home = temp var globalPrefix Object.defineProperty(exports, "defaults", {get: function () { @@ -133,9 +136,10 @@ Object.defineProperty(exports, "defaults", {get: function () { "ZNufy1Jf1r0ldEGeA+0ISck7s+xSh9rQD2Op\n"+ "-----END CERTIFICATE-----\n" - , cache : path.resolve( home || temp - , process.platform === "win32" - ? "npm-cache" : ".npm") + , cache : process.platform === "win32" + ? path.resolve(process.env.APPDATA || home || temp, "npm-cache") + : path.resolve( home || temp, ".npm") + , color : process.platform !== "win32" || winColor , depth: Infinity , description : true @@ -144,9 +148,8 @@ Object.defineProperty(exports, "defaults", {get: function () { ( process.platform === "win32" ? "notepad" : "vi" ) , force : false , global : false - , globalconfig : path.resolve(process.execPath, "..", "..", "etc", "npmrc") - , globalignorefile : path.resolve( process.execPath - , "..", "..", "etc", "npmignore") + , globalconfig : path.resolve(globalPrefix, "etc", "npmrc") + , globalignorefile : path.resolve( globalPrefix, "etc", "npmignore") , group : process.platform === "win32" ? 0 : process.env.SUDO_GID || (process.getgid && process.getgid()) , ignore: "" @@ -169,6 +172,7 @@ Object.defineProperty(exports, "defaults", {get: function () { , pre: false , prefix : globalPrefix , production: false + , "proprietary-attribs": true , proxy : process.env.HTTP_PROXY || process.env.http_proxy || null , "https-proxy" : process.env.HTTPS_PROXY || process.env.https_proxy || process.env.HTTP_PROXY || process.env.http_proxy || null @@ -178,7 +182,7 @@ Object.defineProperty(exports, "defaults", {get: function () { , save : false , searchopts: "" , searchexclude: null - , shell : process.env.platform === "win32" + , shell : process.platform === "win32" ? process.env.ComSpec || "cmd" : process.env.SHELL || "bash" , "strict-ssl": true @@ -242,6 +246,7 @@ exports.types = , pre: Boolean , prefix: path , production: Boolean + , "proprietary-attribs": Boolean , proxy : [null, url] , "rebuild-bundle" : Boolean , registry : [null, url] diff --git a/deps/npm/lib/utils/ini.js b/deps/npm/lib/utils/ini.js index f31bdeb790f..7d7d4680ecb 100644 --- a/deps/npm/lib/utils/ini.js +++ b/deps/npm/lib/utils/ini.js @@ -30,6 +30,8 @@ Object.defineProperty(exports, "keys", { get : function () { return configList.keys }}) var fs = require("graceful-fs") + , fstream = require("fstream") + , rimraf = require("rimraf") , path = require("path") , nopt = require("nopt") , ini = require("ini") @@ -42,11 +44,13 @@ var fs = require("graceful-fs") ? process.env.SUDO_UID : (process.getuid && process.getuid()) , myGid = process.env.SUDO_GID !== undefined ? process.env.SUDO_GID : (process.getgid && process.getgid()) + , eol = process.platform === "win32" ? "\r\n" : "\n" , privateKey = null , defaultConfig , configList = new ProtoList() , types = configDefs.types + , TRANS = exports.TRANS = { "default" : 5 , "builtin": 4 @@ -83,14 +87,33 @@ function resolveConfigs (cli, cb_) { }) cl.push(cli) cl.push(parseEnv(process.env)) + parseFile(cl.get("userconfig") || dc.userconfig, function (er, conf) { if (er) return cb(er) cl.push(conf) + + // globalconfig and globalignorefile defaults + // need to respond to the "prefix" setting up to this point. + // Eg, `npm config get globalconfig --prefix ~/local` should + // return `~/local/etc/npmrc` + if (cl.get("prefix")) { + dc.globalconfig = path.resolve(cl.get("prefix"), "etc", "npmrc") + dc.globalignorefile = path.resolve(cl.get("prefix"), "etc", "npmignore") + } + parseFile( cl.get("globalconfig") || dc.globalconfig , function (er, conf) { if (er) return cb(er) + + if (conf.hasOwnProperty("prefix")) { + log.warn("Cannot set prefix in globalconfig file" + , cl.get("globalconfig")) + delete conf.prefix + } + cl.push(conf) // the builtin config file, for distros to use. + parseFile(path.resolve(__dirname, "../../npmrc"), function (er, conf) { if (er) conf = {} cl.push(conf) @@ -176,12 +199,16 @@ function parseField (f, k, emptyIsFalse) { case "null": return null case "undefined": return undefined } + + f = envReplace(f) + if (isPath) { if (f.substr(0, 2) === "~/" && process.env.HOME) { f = path.resolve(process.env.HOME, f.substr(2)) } f = path.resolve(f) } + return f } @@ -272,36 +299,28 @@ function saveConfigfile (file, config, which, cb) { data = ini.stringify(data) return (data.trim()) ? writeConfigfile(file, data, which, cb) - : rmConfigfile(file, cb) + : rimraf(file, cb) }) } + function writeConfigfile (configfile, data, which, cb) { data = data.split(/\r*\n/).join(eol) - fs.writeFile - ( configfile, data, "utf8" - , function (er) { - if (er) log(er, "Failed saving "+configfile, cb) - else if (which) { - fs.chmod(configfile, which === "user" ? 0600 : 0644, function (e) { - if (e || which !== "user" || typeof myUid !== "number") { - return cb(e) - } - fs.chown(configfile, +myUid, +myGid, cb) - }) - } - else cb() - } - ) -} -function rmConfigfile (configfile, cb) { - fs.stat(configfile, function (e) { - if (e) return cb() - fs.unlink(configfile, function (er) { - if (er) log(er, "Couldn't remove "+configfile) - cb() - }) - }) + var props = { type: "File", path: configfile } + if (which === "user") { + props.mode = 0600 + if (typeof myUid === "number") { + props.uid = +myUid + props.gid = +myGid + } + } else { + props.mode = 0644 + } + fstream.Writer(props) + .on("close", cb) + .on("error", cb) + .end(data) } + function snapshot (which) { var x = (!which) ? configList.snapshot : configList.list[TRANS[which]] ? configList.list[TRANS[which]] @@ -313,9 +332,20 @@ function snapshot (which) { function get (key, which) { return (!key) ? snapshot(which) : (!which) ? configList.get(key) // resolved - : configList.list[TRANS[which]] ? configList.list[TRANS[which]][key] + : configList.list[TRANS[which]] + ? envReplace(configList.list[TRANS[which]][key]) : undefined } + +function envReplace (f) { + if (typeof f !== "string" || !f) return f + + // replace any ${ENV} values with the appropriate environ. + return f.replace(/\$\{([^}]+)\}/g, function (orig, name, i, s) { + return process.env[name] || orig + }) +} + function del (key, which) { if (!which) configList.list.forEach(function (l) { delete l[key] diff --git a/deps/npm/lib/utils/read-json.js b/deps/npm/lib/utils/read-json.js index e71128c1b1a..68e5c25641d 100644 --- a/deps/npm/lib/utils/read-json.js +++ b/deps/npm/lib/utils/read-json.js @@ -304,7 +304,7 @@ function processObject (opts, cb) { return function (er, json) { log.verbose([json.prebuilt, opts], "has wscript") if (!scripts.install && !scripts.preinstall) { // don't fail if it was unexpected, just try. - scripts.preinstall = "node-waf clean || true; node-waf configure build" + scripts.preinstall = "node-waf clean || (exit 0); node-waf configure build" json.scripts = scripts } } diff --git a/deps/npm/lib/utils/tar.js b/deps/npm/lib/utils/tar.js index 9d5f05210f6..1fe705377ed 100644 --- a/deps/npm/lib/utils/tar.js +++ b/deps/npm/lib/utils/tar.js @@ -45,6 +45,7 @@ function pack (targetTarball, folder, pkg, dfc, cb) { log.silly(folder, "makeList") makeList(folder, pkg, dfc, function (er, files, cleanup) { if (er) return cb(er) + // log.silly(files, "files") return packFiles(targetTarball, parent, files, pkg, function (er) { if (!cleanup || !cleanup.length) return cb(er) // try to be a good citizen, even/especially in the event of failure. @@ -59,7 +60,7 @@ function pack (targetTarball, folder, pkg, dfc, cb) { }) } -function packFiles (targetTarball, parent, files, pkg, cb) { +function packFiles (targetTarball, parent, files, pkg, cb_) { var p @@ -70,16 +71,33 @@ function packFiles (targetTarball, parent, files, pkg, cb) { parent = path.resolve(parent, p) + var called = false + function cb (er) { + if (called) return + called = true + cb_(er) + } + log.verbose(targetTarball, "tarball") log.verbose(parent, "parent") fstream.Reader({ type: "Directory" , path: parent , filter: function () { + // files should *always* get into tarballs + // in a user-writable state, even if they're + // being installed from some wackey vm-mounted + // read-only filesystem. + this.props.mode = this.props.mode | 0200 return -1 !== files.indexOf(this.path) } }) .on("error", log.er(cb, "error reading "+parent)) - .pipe(tar.Pack()) + // By default, npm includes some proprietary attributes in the + // package tarball. This is sane, and allowed by the spec. + // However, npm *itself* excludes these from its own package, + // so that it can be more easily bootstrapped using old and + // non-compliant tar implementations. + .pipe(tar.Pack({ noProprietary: !npm.config.get("proprietary-attribs") })) .on("error", log.er(cb, "tar creation error "+targetTarball)) .pipe(zlib.Gzip()) .on("error", log.er(cb, "gzip error "+targetTarball)) @@ -276,7 +294,8 @@ function makeList (dir, pkg, dfc, cb) { makeList_(dir, pkg, exList, dfc, function (er, files, cleanup) { if (er) return cb(er) - var dirLen = dir.length + 1 + var dirLen = dir.replace(/(\/|\\)$/, "").length + 1 + log.silly([dir, dirLen], "dir, dirLen") files = files.map(function (file) { return path.join(name, file.substr(dirLen)) }) diff --git a/deps/npm/man/man1/README.1 b/deps/npm/man/man1/README.1 new file mode 100644 index 00000000000..d276ebe87cd --- /dev/null +++ b/deps/npm/man/man1/README.1 @@ -0,0 +1,390 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm\fR \-\- node package manager +. +.SH "SYNOPSIS" +This is just enough info to get you up and running\. +. +.P +Much more info available via \fBnpm help\fR once it\'s installed\. +. +.SH "IMPORTANT" +\fBYou need node v0\.6 or higher to run this program\.\fR +. +.P +To install an old \fBand unsupported\fR version of npm that works on node 0\.3 +and prior, clone the git repo and dig through the old tags and branches\. +. +.SH "Super Easy Install" +npm comes with node now\. +. +.SS "Windows Computers" +Get the MSI\. npm is in it\. +. +.SS "Apple Macintosh Computers" +Get the pkg\. npm is in it\. +. +.SS "Other Sorts of Unices" +Run \fBmake install\fR\|\. npm will be installed with node\. +. +.P +If you want a more fancy pants install (a different version, customized +paths, etc\.) then read on\. +. +.SH "Fancy Install (Unix)" +To install npm with one command, do this: +. +.IP "" 4 +. +.nf +curl http://npmjs\.org/install\.sh | sh +. +.fi +. +.IP "" 0 +. +.P +To skip the npm 0\.x cleanup, do this: +. +.IP "" 4 +. +.nf +curl http://npmjs\.org/install\.sh | clean=no sh +. +.fi +. +.IP "" 0 +. +.P +To say "yes" to the 0\.x cleanup, but skip the prompt: +. +.IP "" 4 +. +.nf +curl http://npmjs\.org/install\.sh | clean=yes sh +. +.fi +. +.IP "" 0 +. +.P +If you get permission errors, you\'ll need to \fBrun\fR the script as root\. +(Note, just putting \fBsudo\fR in front of the \fBcurl\fR will \fBfetch\fR the script +as root\.) +. +.SS "Slightly Fancier" +You can set any npm configuration params with that script: +. +.IP "" 4 +. +.nf +curl http://npmjs\.org/install\.sh | npm_config_prefix=/some/path sh +. +.fi +. +.IP "" 0 +. +.P +Or, you can run it in uber\-debuggery mode: +. +.IP "" 4 +. +.nf +curl http://npmjs\.org/install\.sh | npm_debug=1 sh +. +.fi +. +.IP "" 0 +. +.SS "Even Fancier" +Get the code with git\. Use \fBmake\fR to build the docs and do other stuff\. +If you plan on hacking on npm, \fBmake link\fR is your friend\. +. +.P +If you\'ve got the npm source code, you can also semi\-permanently set +arbitrary config keys using the \fB\|\./configure \-\-key=val \.\.\.\fR, and then +run npm commands by doing \fBnode cli\.js \fR\|\. (This is helpful +for testing, or running stuff without actually installing npm itself\.) +. +.SH "Fancy Windows Install" +You can download a zip file from \fIhttp://npmjs\.org/dist/\fR, and unpack it +in the same folder where node\.exe lives\. +. +.P +If that\'s not fancy enough for you, then you can fetch the code with +git, and mess with it directly\. +. +.SH "Installing on Cygwin" +No\. +. +.SH "Dev Install" +To install the latest \fBunstable\fR development version from git: +. +.IP "" 4 +. +.nf +git clone https://github\.com/isaacs/npm\.git +cd npm +git submodule update \-\-init \-\-recursive +sudo make install # (or: `node cli\.js install \-gf`) +. +.fi +. +.IP "" 0 +. +.P +If you\'re sitting in the code folder reading this document in your +terminal, then you\'ve already got the code\. Just do: +. +.IP "" 4 +. +.nf +git submodule update \-\-init \-\-recursive +sudo make install +. +.fi +. +.IP "" 0 +. +.P +and npm will install itself\. +. +.P +Note that github tarballs \fBdo not contain submodules\fR, so +those won\'t work\. You\'ll have to also fetch the appropriate submodules +listed in the \.gitmodules file\. +. +.SH "Permissions when Using npm to Install Other Stuff" +\fBtl;dr\fR +. +.IP "\(bu" 4 +Use \fBsudo\fR for greater safety\. Or don\'t, if you prefer not to\. +. +.IP "\(bu" 4 +npm will downgrade permissions if it\'s root before running any build +scripts that package authors specified\. +. +.IP "" 0 +. +.SS "More details\.\.\." +As of version 0\.3, it is recommended to run npm as root\. +This allows npm to change the user identifier to the \fBnobody\fR user prior +to running any package build or test commands\. +. +.P +If you are not the root user, or if you are on a platform that does not +support uid switching, then npm will not attempt to change the userid\. +. +.P +If you would like to ensure that npm \fBalways\fR runs scripts as the +"nobody" user, and have it fail if it cannot downgrade permissions, then +set the following configuration param: +. +.IP "" 4 +. +.nf +npm config set unsafe\-perm false +. +.fi +. +.IP "" 0 +. +.P +This will prevent running in unsafe mode, even as non\-root users\. +. +.SH "Uninstalling" +So sad to see you go\. +. +.IP "" 4 +. +.nf +sudo npm uninstall npm \-g +. +.fi +. +.IP "" 0 +. +.P +Or, if that fails, +. +.IP "" 4 +. +.nf +sudo make uninstall +. +.fi +. +.IP "" 0 +. +.SH "More Severe Uninstalling" +Usually, the above instructions are sufficient\. That will remove +npm, but leave behind anything you\'ve installed\. +. +.P +If you would like to remove all the packages that you have installed, +then you can use the \fBnpm ls\fR command to find them, and then \fBnpm rm\fR to +remove them\. +. +.P +To remove cruft left behind by npm 0\.x, you can use the included \fBclean\-old\.sh\fR script file\. You can run it conveniently like this: +. +.IP "" 4 +. +.nf +npm explore npm \-g \-\- sh scripts/clean\-old\.sh +. +.fi +. +.IP "" 0 +. +.P +npm uses two configuration files, one for per\-user configs, and another +for global (every\-user) configs\. You can view them by doing: +. +.IP "" 4 +. +.nf +npm config get userconfig # defaults to ~/\.npmrc +npm config get globalconfig # defaults to /usr/local/etc/npmrc +. +.fi +. +.IP "" 0 +. +.P +Uninstalling npm does not remove configuration files by default\. You +must remove them yourself manually if you want them gone\. Note that +this means that future npm installs will not remember the settings that +you have chosen\. +. +.SH "Using npm Programmatically" +If you would like to use npm programmatically, you can do that\. +It\'s not very well documented, but it \fIis\fR rather simple\. +. +.IP "" 4 +. +.nf +var npm = require("npm") +npm\.load(myConfigObject, function (er) { + if (er) return handlError(er) + npm\.commands\.install(["some", "args"], function (er, data) { + if (er) return commandFailed(er) + // command succeeded, and data might have some info + }) + npm\.on("log", function (message) { \.\.\.\. }) +}) +. +.fi +. +.IP "" 0 +. +.P +The \fBload\fR function takes an object hash of the command\-line configs\. +The various \fBnpm\.commands\.\fR functions take an \fBarray\fR of +positional argument \fBstrings\fR\|\. The last argument to any \fBnpm\.commands\.\fR function is a callback\. Some commands take other +optional arguments\. Read the source\. +. +.P +You cannot set configs individually for any single npm function at this +time\. Since \fBnpm\fR is a singleton, any call to \fBnpm\.config\.set\fR will +change the value for \fIall\fR npm commands in that process\. +. +.P +See \fB\|\./bin/npm\-cli\.js\fR for an example of pulling config values off of the +command line arguments using nopt\. You may also want to check out \fBnpm +help config\fR to learn about all the options you can set there\. +. +.SH "More Docs" +Check out the docs \fIhttp://npmjs\.org/doc/\fR, +especially the faq \fIhttp://npmjs\.org/doc/faq\.html\fR\|\. +. +.P +You can use the \fBnpm help\fR command to read any of them\. +. +.P +If you\'re a developer, and you want to use npm to publish your program, +you should read this \fIhttp://npmjs\.org/doc/developers\.html\fR +. +.SH "Legal Stuff" +"npm" and "the npm registry" are owned by Isaac Z\. Schlueter\. All +rights not explicitly granted in the MIT license are reserved\. See the +included LICENSE file for more details\. +. +.P +"Node\.js" and "node" are trademarks owned by Joyent, Inc\. npm is not +officially part of the Node\.js project, and is neither owned by nor +officially affiliated with Joyent, Inc\. +. +.P +The packages in the npm registry are not part of npm itself, and are the +sole property of their respective maintainers\. While every effort is +made to ensure accountability, there is absolutely no guarantee, +warrantee, or assertion made as to the quality, fitness for a specific +purpose, or lack of malice in any given npm package\. Modules +published on the npm registry are not affiliated with or endorsed by +Joyent, Inc\., Isaac Z\. Schlueter, Ryan Dahl, or the Node\.js project\. +. +.P +If you have a complaint about a package in the npm registry, and cannot +resolve it with the package owner, please express your concerns to +Isaac Z\. Schlueter at \fIi@izs\.me\fR\|\. +. +.SS "In plain english" +This is mine; not my employer\'s, not Node\'s, not Joyent\'s, not Ryan +Dahl\'s\. +. +.P +If you publish something, it\'s yours, and you are solely accountable +for it\. Not me, not Node, not Joyent, not Ryan Dahl\. +. +.P +If other people publish something, it\'s theirs\. Not mine, not Node\'s, +not Joyent\'s, not Ryan Dahl\'s\. +. +.P +Yes, you can publish something evil\. It will be removed promptly if +reported, and we\'ll lose respect for you\. But there is no vetting +process for published modules\. +. +.P +If this concerns you, inspect the source before using packages\. +. +.SH "BUGS" +When you find issues, please report them: +. +.IP "\(bu" 4 +web: \fIhttp://github\.com/isaacs/npm/issues\fR +. +.IP "\(bu" 4 +email: \fInpm\-@googlegroups\.com\fR +. +.IP "" 0 +. +.P +Be sure to include \fIall\fR of the output from the npm command that didn\'t work +as expected\. The \fBnpm\-debug\.log\fR file is also helpful to provide\. +. +.P +You can also look for isaacs in #node\.js on irc://irc\.freenode\.net\. He +will no doubt tell you to put the output in a gist or email\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help npm +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help help +. +.IP "\(bu" 4 +npm help index +. +.IP "" 0 + diff --git a/deps/npm/man/man1/adduser.1 b/deps/npm/man/man1/adduser.1 new file mode 100644 index 00000000000..13d146ae99d --- /dev/null +++ b/deps/npm/man/man1/adduser.1 @@ -0,0 +1,57 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-ADDUSER" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-adduser\fR \-\- Add a registry user account +. +.SH "SYNOPSIS" +. +.nf +npm adduser +. +.fi +. +.SH "DESCRIPTION" +Create or verify a user named \fB\fR in the npm registry, and +save the credentials to the \fB\|\.npmrc\fR file\. +. +.P +The username, password, and email are read in from prompts\. +. +.P +You may use this command to change your email address, but not username +or password\. +. +.P +To reset your password, go to \fIhttp://admin\.npmjs\.org/\fR +. +.P +You may use this command multiple times with the same user account to +authorize on a new machine\. +. +.SH "CONFIGURATION" +. +.SS "registry" +Default: http://registry\.npmjs\.org/ +. +.P +The base URL of the npm package registry\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help registry +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help owner +. +.IP "\(bu" 4 +npm help whoami +. +.IP "" 0 + diff --git a/deps/npm/man/man1/author.1 b/deps/npm/man/man1/author.1 new file mode 100644 index 00000000000..6373c3ee4dd --- /dev/null +++ b/deps/npm/man/man1/author.1 @@ -0,0 +1,55 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-OWNER" "1" "November 2011" "" "" +. +.SH "NAME" +\fBnpm-owner\fR \-\- Manage package owners +. +.SH "SYNOPSIS" +. +.nf +npm owner ls +npm owner add +npm owner rm +. +.fi +. +.SH "DESCRIPTION" +Manage ownership of published packages\. +. +.IP "\(bu" 4 +ls: +List all the users who have access to modify a package and push new versions\. +Handy when you need to know who to bug for help\. +. +.IP "\(bu" 4 +add: +Add a new user as a maintainer of a package\. This user is enabled to modify +metadata, publish new versions, and add other owners\. +. +.IP "\(bu" 4 +rm: +Remove a user from the package owner list\. This immediately revokes their +privileges\. +. +.IP "" 0 +. +.P +Note that there is only one level of access\. Either you can modify a package, +or you can\'t\. Future versions may contain more fine\-grained access levels, but +that is not implemented at this time\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help registry +. +.IP "\(bu" 4 +npm help adduser +. +.IP "" 0 + diff --git a/deps/npm/man/man1/bin.1 b/deps/npm/man/man1/bin.1 new file mode 100644 index 00000000000..3922180e810 --- /dev/null +++ b/deps/npm/man/man1/bin.1 @@ -0,0 +1,34 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-BIN" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-bin\fR \-\- Display npm bin folder +. +.SH "SYNOPSIS" +. +.nf +npm bin +. +.fi +. +.SH "DESCRIPTION" +Print the folder where npm will install executables\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help prefix +. +.IP "\(bu" 4 +npm help root +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help config +. +.IP "" 0 + diff --git a/deps/npm/man/man1/bugs.1 b/deps/npm/man/man1/bugs.1 new file mode 100644 index 00000000000..2c30126fb26 --- /dev/null +++ b/deps/npm/man/man1/bugs.1 @@ -0,0 +1,70 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-BUGS" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-bugs\fR \-\- Bugs for a package in a web browser maybe +. +.SH "SYNOPSIS" +. +.nf +npm bugs +. +.fi +. +.SH "DESCRIPTION" +This command tries to guess at the likely location of a package\'s +bug tracker URL, and then tries to open it using the \fB\-\-browser\fR +config param\. +. +.SH "CONFIGURATION" +. +.SS "browser" +. +.IP "\(bu" 4 +Default: OS X: \fB"open"\fR, others: \fB"google\-chrome"\fR +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The browser that is called by the \fBnpm bugs\fR command to open websites\. +. +.SS "registry" +. +.IP "\(bu" 4 +Default: https://registry\.npmjs\.org/ +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +The base URL of the npm package registry\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help docs +. +.IP "\(bu" 4 +npm help view +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help registry +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help json +. +.IP "" 0 + diff --git a/deps/npm/man/man1/build.1 b/deps/npm/man/man1/build.1 new file mode 100644 index 00000000000..79b5e49d0fb --- /dev/null +++ b/deps/npm/man/man1/build.1 @@ -0,0 +1,43 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-BUILD" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-build\fR \-\- Build a package +. +.SH "SYNOPSIS" +. +.nf +npm build +. +.fi +. +.IP "\(bu" 4 +\fB\fR: +A folder containing a \fBpackage\.json\fR file in its root\. +. +.IP "" 0 +. +.SH "DESCRIPTION" +This is the plumbing command called by \fBnpm link\fR and \fBnpm install\fR\|\. +. +.P +It should generally not be called directly\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help link +. +.IP "\(bu" 4 +npm help scripts +. +.IP "\(bu" 4 +npm help json +. +.IP "" 0 + diff --git a/deps/npm/man/man1/bundle.1 b/deps/npm/man/man1/bundle.1 new file mode 100644 index 00000000000..9cb517a8fac --- /dev/null +++ b/deps/npm/man/man1/bundle.1 @@ -0,0 +1,23 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-BUNDLE" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-bundle\fR \-\- REMOVED +. +.SH "DESCRIPTION" +The \fBnpm bundle\fR command has been removed in 1\.0, for the simple reason +that it is no longer necessary, as the default behavior is now to +install packages into the local space\. +. +.P +Just use \fBnpm install\fR now to do what \fBnpm bundle\fR used to do\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help install +. +.IP "" 0 + diff --git a/deps/npm/man/man1/cache.1 b/deps/npm/man/man1/cache.1 new file mode 100644 index 00000000000..04a1c959ee4 --- /dev/null +++ b/deps/npm/man/man1/cache.1 @@ -0,0 +1,97 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-CACHE" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-cache\fR \-\- Manipulates packages cache +. +.SH "SYNOPSIS" +. +.nf +npm cache add +npm cache add +npm cache add +npm cache add @ +npm cache ls [] +npm cache clean [] +. +.fi +. +.SH "DESCRIPTION" +Used to add, list, or clear the npm cache folder\. +. +.IP "\(bu" 4 +add: +Add the specified package to the local cache\. This command is primarily +intended to be used internally by npm, but it can provide a way to +add data to the local installation cache explicitly\. +. +.IP "\(bu" 4 +ls: +Show the data in the cache\. Argument is a path to show in the cache +folder\. Works a bit like the \fBfind\fR program, but limited by the \fBdepth\fR config\. +. +.IP "\(bu" 4 +clean: +Delete data out of the cache folder\. If an argument is provided, then +it specifies a subpath to delete\. If no argument is provided, then +the entire cache is cleared\. +. +.IP "" 0 +. +.SH "DETAILS" +npm stores cache data in \fB$HOME/\.npm\fR\|\. For each package that is added +to the cache, three pieces of information are stored in \fB{cache}/{name}/{version}\fR: +. +.IP "\(bu" 4 +\|\.\.\./package/: +A folder containing the package contents as they appear in the tarball\. +. +.IP "\(bu" 4 +\|\.\.\./package\.json: +The package\.json file, as npm sees it, with overlays applied and a _id attribute\. +. +.IP "\(bu" 4 +\|\.\.\./package\.tgz: +The tarball for that version\. +. +.IP "" 0 +. +.P +Additionally, whenever a registry request is made, a \fB\|\.cache\.json\fR file +is placed at the corresponding URI, to store the ETag and the requested +data\. +. +.P +Commands that make non\-essential registry requests (such as \fBsearch\fR and \fBview\fR, or the completion scripts) generally specify a minimum timeout\. +If the \fB\|\.cache\.json\fR file is younger than the specified timeout, then +they do not make an HTTP request to the registry\. +. +.SH "CONFIGURATION" +. +.SS "cache" +Default: \fB$HOME/\.npm\fR on Posix, or \fB$HOME/npm\-cache\fR on Windows\. +. +.P +The root cache folder\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help pack +. +.IP "" 0 + diff --git a/deps/npm/man/man1/changelog.1 b/deps/npm/man/man1/changelog.1 new file mode 100644 index 00000000000..33872b90626 --- /dev/null +++ b/deps/npm/man/man1/changelog.1 @@ -0,0 +1,91 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-CHANGELOG" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-changelog\fR \-\- Changes +. +.SH "HISTORY" +. +.SS "1\.0" +. +.IP "\(bu" 4 +Greatly simplified folder structure +. +.IP "\(bu" 4 +Install locally (bundle by default) +. +.IP "\(bu" 4 +Drastic rearchitecture +. +.IP "" 0 +. +.SS "0\.3" +. +.IP "\(bu" 4 +More correct permission/uid handling when running as root +. +.IP "\(bu" 4 +Require node 0\.4\.0 +. +.IP "\(bu" 4 +Reduce featureset +. +.IP "\(bu" 4 +Packages without "main" modules don\'t export modules +. +.IP "\(bu" 4 +Remove support for invalid JSON (since node doesn\'t support it) +. +.IP "" 0 +. +.SS "0\.2" +. +.IP "\(bu" 4 +First allegedly "stable" release +. +.IP "\(bu" 4 +Most functionality implemented +. +.IP "\(bu" 4 +Used shim files and \fBname@version\fR symlinks +. +.IP "\(bu" 4 +Feature explosion +. +.IP "\(bu" 4 +Kind of a mess +. +.IP "" 0 +. +.SS "0\.1" +. +.IP "\(bu" 4 +push to beta, and announce +. +.IP "\(bu" 4 +Solaris and Cygwin support +. +.IP "" 0 +. +.SS "0\.0" +. +.IP "\(bu" 4 +Lots of sketches and false starts; abandoned a few times +. +.IP "\(bu" 4 +Core functionality established +. +.IP "" 0 +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help npm +. +.IP "\(bu" 4 +npm help faq +. +.IP "" 0 + diff --git a/deps/npm/man/man1/coding-style.1 b/deps/npm/man/man1/coding-style.1 new file mode 100644 index 00000000000..cc491770ed4 --- /dev/null +++ b/deps/npm/man/man1/coding-style.1 @@ -0,0 +1,269 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-CODING\-STYLE" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-coding-style\fR \-\- npm\'s "funny" coding style +. +.SH "DESCRIPTION" +npm\'s coding style is a bit unconventional\. It is not different for +difference\'s sake, but rather a carefully crafted style that is +designed to reduce visual clutter and make bugs more apparent\. +. +.P +If you want to contribute to npm (which is very encouraged), you should +make your code conform to npm\'s style\. +. +.SH "Line Length" +Keep lines shorter than 80 characters\. It\'s better for lines to be +too short than to be too long\. Break up long lists, objects, and other +statements onto multiple lines\. +. +.SH "Indentation" +Two\-spaces\. Tabs are better, but they look like hell in web browsers +(and on github), and node uses 2 spaces, so that\'s that\. +. +.P +Configure your editor appropriately\. +. +.SH "Curly braces" +Curly braces belong on the same line as the thing that necessitates them\. +. +.P +Bad: +. +.IP "" 4 +. +.nf +function () +{ +. +.fi +. +.IP "" 0 +. +.P +Good: +. +.IP "" 4 +. +.nf +function () { +. +.fi +. +.IP "" 0 +. +.P +If a block needs to wrap to the next line, use a curly brace\. Don\'t +use it if it doesn\'t\. +. +.P +Bad: +. +.IP "" 4 +. +.nf +if (foo) { bar() } +while (foo) + bar() +. +.fi +. +.IP "" 0 +. +.P +Good: +. +.IP "" 4 +. +.nf +if (foo) bar() +while (foo) { + bar() +} +. +.fi +. +.IP "" 0 +. +.SH "Semicolons" +Don\'t use them except in four situations: +. +.IP "\(bu" 4 +\fBfor (;;)\fR loops\. They\'re actually required\. +. +.IP "\(bu" 4 +null loops like: \fBwhile (something) ;\fR (But you\'d better have a good +reason for doing that\.) +. +.IP "\(bu" 4 +case "foo": doSomething(); break +. +.IP "\(bu" 4 +In front of a leading ( or [ at the start of the line\. +This prevents the expression from being interpreted +as a function call or property access, respectively\. +. +.IP "" 0 +. +.P +Some examples of good semicolon usage: +. +.IP "" 4 +. +.nf +;(x || y)\.doSomething() +;[a, b, c]\.forEach(doSomething) +for (var i = 0; i < 10; i ++) { + switch (state) { + case "begin": start(); continue + case "end": finish(); break + default: throw new Error("unknown state") + } + end() +} +. +.fi +. +.IP "" 0 +. +.P +Note that starting lines with \fB\-\fR and \fB+\fR also should be prefixed +with a semicolon, but this is much less common\. +. +.SH "Comma First" +If there is a list of things separated by commas, and it wraps +across multiple lines, put the comma at the start of the next +line, directly below the token that starts the list\. Put the +final token in the list on a line by itself\. For example: +. +.IP "" 4 +. +.nf +var magicWords = [ "abracadabra" + , "gesundheit" + , "ventrilo" + ] + , spells = { "fireball" : function () { setOnFire() } + , "water" : function () { putOut() } + } + , a = 1 + , b = "abc" + , etc + , somethingElse +. +.fi +. +.IP "" 0 +. +.SH "Whitespace" +Put a single space in front of ( for anything other than a function call\. +Also use a single space wherever it makes things more readable\. +. +.P +Don\'t leave trailing whitespace at the end of lines\. Don\'t indent empty +lines\. Don\'t use more spaces than are helpful\. +. +.SH "Functions" +Use named functions\. They make stack traces a lot easier to read\. +. +.SH "Callbacks, Sync/async Style" +Use the asynchronous/non\-blocking versions of things as much as possible\. +It might make more sense for npm to use the synchronous fs APIs, but this +way, the fs and http and child process stuff all uses the same callback\-passing +methodology\. +. +.P +The callback should always be the last argument in the list\. Its first +argument is the Error or null\. +. +.P +Be very careful never to ever ever throw anything\. It\'s worse than useless\. +Just send the error message back as the first argument to the callback\. +. +.SH "Errors" +Always create a new Error object with your message\. Don\'t just return a +string message to the callback\. Stack traces are handy\. +. +.P +Use the \fBrequire("\./utils/log")\.er\fR function\. It takes a callback and an +error message, and returns an object that will report the message in the +event of a failure\. It\'s quite handy\. +. +.IP "" 4 +. +.nf +function myThing (args, cb) { + getData(args, function (er, data) { + if (er) return log\.er(cb, "Couldn\'t get data")(er) + doSomethingElse(data, cb) + }) +} +function justHasToWork (cb) { + doSomething(log\.er(cb, "the doSomething failed\.")) +} +. +.fi +. +.IP "" 0 +. +.SH "Logging" +Please clean up logs when they are no longer helpful\. In particular, +logging the same object over and over again is not helpful\. Logs should +report what\'s happening so that it\'s easier to track down where a fault +occurs\. +. +.P +Use appropriate log levels\. The default log() function logs at the +"info" level\. See \fBnpm help config\fR and search for "loglevel"\. +. +.SH "Case, naming, etc\." +Use \fBlowerCamelCase\fR for multiword identifiers when they refer to objects, +functions, methods, members, or anything not specified in this section\. +. +.P +Use \fBUpperCamelCase\fR for class names (things that you\'d pass to "new")\. +. +.P +Use \fBall\-lower\-hyphen\-css\-case\fR for multiword filenames and config keys\. +. +.P +Use named functions\. They make stack traces easier to follow\. +. +.P +Use \fBCAPS_SNAKE_CASE\fR for constants, things that should never change +and are rarely used\. +. +.P +Use a single uppercase letter for function names where the function +would normally be anonymous, but needs to call itself recursively\. It +makes it clear that it\'s a "throwaway" function\. +. +.SH "null, undefined, false, 0" +Boolean variables and functions should always be either \fBtrue\fR or \fBfalse\fR\|\. Don\'t set it to 0 unless it\'s supposed to be a number\. +. +.P +When something is intentionally missing or removed, set it to \fBnull\fR\|\. +. +.P +Don\'t set things to \fBundefined\fR\|\. Reserve that value to mean "not yet +set to anything\." +. +.P +Boolean objects are verboten\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help developers +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help npm +. +.IP "" 0 + diff --git a/deps/npm/man/man1/completion.1 b/deps/npm/man/man1/completion.1 new file mode 100644 index 00000000000..0373faf033f --- /dev/null +++ b/deps/npm/man/man1/completion.1 @@ -0,0 +1,47 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-COMPLETION" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-completion\fR \-\- Tab Completion for npm +. +.SH "SYNOPSIS" +. +.nf +\|\. <(npm completion) +. +.fi +. +.SH "DESCRIPTION" +Enables tab\-completion in all npm commands\. +. +.P +The synopsis above +loads the completions into your current shell\. Adding it to +your ~/\.bashrc or ~/\.zshrc will make the completions available +everywhere\. +. +.P +You may of course also pipe the output of npm completion to a file +such as \fB/usr/local/etc/bash_completion\.d/npm\fR if you have a system +that will read that file for you\. +. +.P +When \fBCOMP_CWORD\fR, \fBCOMP_LINE\fR, and \fBCOMP_POINT\fR are defined in the +environment, \fBnpm completion\fR acts in "plumbing mode", and outputs +completions based on the arguments\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help developers +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help npm +. +.IP "" 0 + diff --git a/deps/npm/man/man1/config.1 b/deps/npm/man/man1/config.1 new file mode 100644 index 00000000000..3cbbc72119c --- /dev/null +++ b/deps/npm/man/man1/config.1 @@ -0,0 +1,1173 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-CONFIG" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-config\fR \-\- Manage the npm configuration file +. +.SH "SYNOPSIS" +. +.nf +npm config set [\-\-global] +npm config get +npm config delete +npm config list +npm config edit +npm get +npm set [\-\-global] +. +.fi +. +.SH "DESCRIPTION" +npm gets its configuration values from 6 sources, in this priority: +. +.SS "Command Line Flags" +Putting \fB\-\-foo bar\fR on the command line sets the \fBfoo\fR configuration parameter to \fB"bar"\fR\|\. A \fB\-\-\fR argument tells the cli +parser to stop reading flags\. A \fB\-\-flag\fR parameter that is at the \fIend\fR of +the command will be given the value of \fBtrue\fR\|\. +. +.SS "Environment Variables" +Any environment variables that start with \fBnpm_config_\fR will be interpreted +as a configuration parameter\. For example, putting \fBnpm_config_foo=bar\fR in +your environment will set the \fBfoo\fR configuration parameter to \fBbar\fR\|\. Any +environment configurations that are not given a value will be given the value +of \fBtrue\fR\|\. Config values are case\-insensitive, so \fBNPM_CONFIG_FOO=bar\fR will +work the same\. +. +.SS "Per\-user config file" +\fB$HOME/\.npmrc\fR (or the \fBuserconfig\fR param, if set above) +. +.P +This file is an ini\-file formatted list of \fBkey = value\fR parameters\. +. +.SS "Global config file" +\fB$PREFIX/etc/npmrc\fR (or the \fBglobalconfig\fR param, if set above): +This file is an ini\-file formatted list of \fBkey = value\fR parameters +. +.SS "Built\-in config file" +\fBpath/to/npm/itself/npmrc\fR +. +.P +This is an unchangeable "builtin" +configuration file that npm keeps consistent across updates\. Set +fields in here using the \fB\|\./configure\fR script that comes with npm\. +This is primarily for distribution maintainers to override default +configs in a standard and consistent manner\. +. +.SS "Default Configs" +A set of configuration parameters that are internal to npm, and are +defaults if nothing else is specified\. +. +.SH "Sub\-commands" +Config supports the following sub\-commands: +. +.SS "set" +. +.nf +npm config set key value +. +.fi +. +.P +Sets the config key to the value\. +. +.P +If value is omitted, then it sets it to "true"\. +. +.SS "get" +. +.nf +npm config get key +. +.fi +. +.P +Echo the config value to stdout\. +. +.SS "list" +. +.nf +npm config list +. +.fi +. +.P +Show all the config settings\. +. +.SS "delete" +. +.nf +npm config delete key +. +.fi +. +.P +Deletes the key from all configuration files\. +. +.SS "edit" +. +.nf +npm config edit +. +.fi +. +.P +Opens the config file in an editor\. Use the \fB\-\-global\fR flag to edit the +global config\. +. +.SH "Shorthands and Other CLI Niceties" +The following shorthands are parsed on the command\-line: +. +.IP "\(bu" 4 +\fB\-v\fR: \fB\-\-version\fR +. +.IP "\(bu" 4 +\fB\-h\fR, \fB\-?\fR, \fB\-\-help\fR, \fB\-H\fR: \fB\-\-usage\fR +. +.IP "\(bu" 4 +\fB\-s\fR, \fB\-\-silent\fR: \fB\-\-loglevel silent\fR +. +.IP "\(bu" 4 +\fB\-d\fR: \fB\-\-loglevel info\fR +. +.IP "\(bu" 4 +\fB\-dd\fR, \fB\-\-verbose\fR: \fB\-\-loglevel verbose\fR +. +.IP "\(bu" 4 +\fB\-ddd\fR: \fB\-\-loglevel silly\fR +. +.IP "\(bu" 4 +\fB\-g\fR: \fB\-\-global\fR +. +.IP "\(bu" 4 +\fB\-l\fR: \fB\-\-long\fR +. +.IP "\(bu" 4 +\fB\-m\fR: \fB\-\-message\fR +. +.IP "\(bu" 4 +\fB\-p\fR, \fB\-\-porcelain\fR: \fB\-\-parseable\fR +. +.IP "\(bu" 4 +\fB\-reg\fR: \fB\-\-registry\fR +. +.IP "\(bu" 4 +\fB\-v\fR: \fB\-\-version\fR +. +.IP "\(bu" 4 +\fB\-f\fR: \fB\-\-force\fR +. +.IP "\(bu" 4 +\fB\-l\fR: \fB\-\-long\fR +. +.IP "\(bu" 4 +\fB\-desc\fR: \fB\-\-description\fR +. +.IP "\(bu" 4 +\fB\-S\fR: \fB\-\-save\fR +. +.IP "\(bu" 4 +\fB\-y\fR: \fB\-\-yes\fR +. +.IP "\(bu" 4 +\fB\-n\fR: \fB\-\-yes false\fR +. +.IP "\(bu" 4 +\fBll\fR and \fBla\fR commands: \fBls \-\-long\fR +. +.IP "" 0 +. +.P +If the specified configuration param resolves unambiguously to a known +configuration parameter, then it is expanded to that configuration +parameter\. For example: +. +.IP "" 4 +. +.nf +npm ls \-\-par +# same as: +npm ls \-\-parseable +. +.fi +. +.IP "" 0 +. +.P +If multiple single\-character shorthands are strung together, and the +resulting combination is unambiguously not some other configuration +param, then it is expanded to its various component pieces\. For +example: +. +.IP "" 4 +. +.nf +npm ls \-gpld +# same as: +npm ls \-\-global \-\-parseable \-\-long \-\-loglevel info +. +.fi +. +.IP "" 0 +. +.SH "Per\-Package Config Settings" +When running scripts (see \fBnpm help scripts\fR) +the package\.json "config" keys are overwritten in the environment if +there is a config param of \fB[@]:\fR\|\. For example, if +the package\.json has this: +. +.IP "" 4 +. +.nf +{ "name" : "foo" +, "config" : { "port" : "8080" } +, "scripts" : { "start" : "node server\.js" } } +. +.fi +. +.IP "" 0 +. +.P +and the server\.js is this: +. +.IP "" 4 +. +.nf +http\.createServer(\.\.\.)\.listen(process\.env\.npm_package_config_port) +. +.fi +. +.IP "" 0 +. +.P +then the user could change the behavior by doing: +. +.IP "" 4 +. +.nf +npm config set foo:port 80 +. +.fi +. +.IP "" 0 +. +.SH "Config Settings" +. +.SS "always\-auth" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Force npm to always require authentication when accessing the registry, +even for \fBGET\fR requests\. +. +.SS "bin\-publish" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +If set to true, then binary packages will be created on publish\. +. +.P +This is the way to opt into the "bindist" behavior described below\. +. +.SS "bindist" +. +.IP "\(bu" 4 +Default: Unstable node versions, \fBnull\fR, otherwise \fB"\-\-"\fR +. +.IP "\(bu" 4 +Type: String or \fBnull\fR +. +.IP "" 0 +. +.P +Experimental: on stable versions of node, binary distributions will be +created with this tag\. If a user then installs that package, and their \fBbindist\fR tag is found in the list of binary distributions, they will +get that prebuilt version\. +. +.P +Pre\-build node packages have their preinstall, install, and postinstall +scripts stripped (since they are run prior to publishing), and do not +have their \fBbuild\fR directories automatically ignored\. +. +.P +It\'s yet to be seen if this is a good idea\. +. +.SS "browser" +. +.IP "\(bu" 4 +Default: OS X: \fB"open"\fR, others: \fB"google\-chrome"\fR +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The browser that is called by the \fBnpm docs\fR command to open websites\. +. +.SS "ca" +. +.IP "\(bu" 4 +Default: The npm CA certificate +. +.IP "\(bu" 4 +Type: String or null +. +.IP "" 0 +. +.P +The Certificate Authority signing certificate that is trusted for SSL +connections to the registry\. +. +.P +Set to \fBnull\fR to only allow "known" registrars, or to a specific CA cert +to trust only that specific signing authority\. +. +.P +See also the \fBstrict\-ssl\fR config\. +. +.SS "cache" +. +.IP "\(bu" 4 +Default: Windows: \fB%APPDATA%\\npm\-cache\fR, Posix: \fB~/\.npm\fR +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The location of npm\'s cache directory\. See \fBnpm help cache\fR +. +.SS "color" +. +.IP "\(bu" 4 +Default: true on Posix, false on Windows +. +.IP "\(bu" 4 +Type: Boolean or \fB"always"\fR +. +.IP "" 0 +. +.P +If false, never shows colors\. If \fB"always"\fR then always shows colors\. +If true, then only prints color codes for tty file descriptors\. +. +.SS "depth" +. +.IP "\(bu" 4 +Default: Infinity +. +.IP "\(bu" 4 +Type: Number +. +.IP "" 0 +. +.P +The depth to go when recursing directories for \fBnpm ls\fR and \fBnpm cache ls\fR\|\. +. +.SS "description" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Show the description in \fBnpm search\fR +. +.SS "dev" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Install \fBdev\-dependencies\fR along with packages\. +. +.P +Note that \fBdev\-dependencies\fR are also installed if the \fBnpat\fR flag is +set\. +. +.SS "editor" +. +.IP "\(bu" 4 +Default: \fBEDITOR\fR environment variable if set, or \fB"vi"\fR on Posix, +or \fB"notepad"\fR on Windows\. +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The command to run for \fBnpm edit\fR or \fBnpm config edit\fR\|\. +. +.SS "force" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Makes various commands more forceful\. +. +.IP "\(bu" 4 +lifecycle script failure does not block progress\. +. +.IP "\(bu" 4 +publishing clobbers previously published versions\. +. +.IP "\(bu" 4 +skips cache when requesting from the registry\. +. +.IP "\(bu" 4 +prevents checks against clobbering non\-npm files\. +. +.IP "" 0 +. +.SS "global" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Operates in "global" mode, so that packages are installed into the \fBprefix\fR folder instead of the current working directory\. See \fBnpm help folders\fR for more on the differences in behavior\. +. +.IP "\(bu" 4 +packages are installed into the \fBprefix/node_modules\fR folder, instead of the +current working directory\. +. +.IP "\(bu" 4 +bin files are linked to \fBprefix/bin\fR +. +.IP "\(bu" 4 +man pages are linked to \fBprefix/share/man\fR +. +.IP "" 0 +. +.SS "globalconfig" +. +.IP "\(bu" 4 +Default: {prefix}/etc/npmrc +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The config file to read for global config options\. +. +.SS "globalignorefile" +. +.IP "\(bu" 4 +Default: {prefix}/etc/npmignore +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The config file to read for global ignore patterns to apply to all users +and all projects\. +. +.P +If not found, but there is a "gitignore" file in the +same directory, then that will be used instead\. +. +.SS "group" +. +.IP "\(bu" 4 +Default: GID of the current process +. +.IP "\(bu" 4 +Type: String or Number +. +.IP "" 0 +. +.P +The group to use when running package scripts in global mode as the root +user\. +. +.SS "https\-proxy" +. +.IP "\(bu" 4 +Default: the \fBHTTPS_PROXY\fR or \fBhttps_proxy\fR or \fBHTTP_PROXY\fR or \fBhttp_proxy\fR environment variables\. +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +A proxy to use for outgoing https requests\. +. +.SS "ignore" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: string +. +.IP "" 0 +. +.P +A white\-space separated list of glob patterns of files to always exclude +from packages when building tarballs\. +. +.SS "init\.version" +. +.IP "\(bu" 4 +Default: "0\.0\.0" +. +.IP "\(bu" 4 +Type: semver +. +.IP "" 0 +. +.P +The value \fBnpm init\fR should use by default for the package version\. +. +.SS "init\.author\.name" +. +.IP "\(bu" 4 +Default: "0\.0\.0" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The value \fBnpm init\fR should use by default for the package author\'s name\. +. +.SS "init\.author\.email" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The value \fBnpm init\fR should use by default for the package author\'s email\. +. +.SS "init\.author\.url" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The value \fBnpm init\fR should use by default for the package author\'s homepage\. +. +.SS "link" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +If true, then local installs will link if there is a suitable globally +installed package\. +. +.P +Note that this means that local installs can cause things to be +installed into the global space at the same time\. The link is only done +if one of the two conditions are met: +. +.IP "\(bu" 4 +The package is not already installed globally, or +. +.IP "\(bu" 4 +the globally installed version is identical to the version that is +being installed locally\. +. +.IP "" 0 +. +.SS "logfd" +. +.IP "\(bu" 4 +Default: stderr file descriptor +. +.IP "\(bu" 4 +Type: Number or Stream +. +.IP "" 0 +. +.P +The location to write log output\. +. +.SS "loglevel" +. +.IP "\(bu" 4 +Default: "warn" +. +.IP "\(bu" 4 +Type: String +. +.IP "\(bu" 4 +Values: "silent", "win", "error", "warn", "info", "verbose", "silly" +. +.IP "" 0 +. +.P +What level of logs to report\. On failure, \fIall\fR logs are written to \fBnpm\-debug\.log\fR in the current working directory\. +. +.SS "logprefix" +. +.IP "\(bu" 4 +Default: true on Posix, false on Windows +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Whether or not to prefix log messages with "npm" and the log level\. See +also "color" and "loglevel"\. +. +.SS "long" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Show extended information in \fBnpm ls\fR +. +.SS "message" +. +.IP "\(bu" 4 +Default: "%s" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +Commit message which is used by \fBnpm version\fR when creating version commit\. +. +.P +Any "%s" in the message will be replaced with the version number\. +. +.SS "node\-version" +. +.IP "\(bu" 4 +Default: process\.version +. +.IP "\(bu" 4 +Type: semver or false +. +.IP "" 0 +. +.P +The node version to use when checking package\'s "engines" hash\. +. +.SS "npat" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Run tests on installation and report results to the \fBnpaturl\fR\|\. +. +.SS "npaturl" +. +.IP "\(bu" 4 +Default: Not yet implemented +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +The url to report npat test results\. +. +.SS "onload\-script" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +A node module to \fBrequire()\fR when npm loads\. Useful for programmatic +usage\. +. +.SS "outfd" +. +.IP "\(bu" 4 +Default: standard output file descriptor +. +.IP "\(bu" 4 +Type: Number or Stream +. +.IP "" 0 +. +.P +Where to write "normal" output\. This has no effect on log output\. +. +.SS "parseable" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Output parseable results from commands that write to +standard output\. +. +.SS "prefix" +. +.IP "\(bu" 4 +Default: node\'s process\.installPrefix +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The location to install global items\. If set on the command line, then +it forces non\-global commands to run in the specified folder\. +. +.SS "production" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Set to true to run in "production" mode\. +. +.IP "1" 4 +devDependencies are not installed at the topmost level when running +local \fBnpm install\fR without any arguments\. +. +.IP "2" 4 +Set the NODE_ENV="production" for lifecycle scripts\. +. +.IP "" 0 +. +.SS "proprietary\-attribs" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Whether or not to include proprietary extended attributes in the +tarballs created by npm\. +. +.P +Unless you are expecting to unpack package tarballs with something other +than npm \-\- particularly a very outdated tar implementation \-\- leave +this as true\. +. +.SS "proxy" +. +.IP "\(bu" 4 +Default: \fBHTTP_PROXY\fR or \fBhttp_proxy\fR environment variable, or null +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +A proxy to use for outgoing http requests\. +. +.SS "rebuild\-bundle" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Rebuild bundled dependencies after installation\. +. +.SS "registry" +. +.IP "\(bu" 4 +Default: https://registry\.npmjs\.org/ +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +The base URL of the npm package registry\. +. +.SS "rollback" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Remove failed installs\. +. +.SS "save" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Save installed packages to a package\.json file as dependencies\. +. +.P +Only works if there is already a package\.json file present\. +. +.SS "searchopts" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +Space\-separated options that are always passed to search\. +. +.SS "searchexclude" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +Space\-separated options that limit the results from search\. +. +.SS "shell" +. +.IP "\(bu" 4 +Default: SHELL environment variable, or "bash" on Posix, or "cmd" on +Windows +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The shell to run for the \fBnpm explore\fR command\. +. +.SS "strict\-ssl" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Whether or not to do SSL key validation when making requests to the +registry via https\. +. +.P +See also the \fBca\fR config\. +. +.SS "tag" +. +.IP "\(bu" 4 +Default: latest +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +If you ask npm to install a package and don\'t tell it a specific version, then +it will install the specified tag\. +. +.P +Also the tag that is added to the package@version specified by the \fBnpm +tag\fR command, if no explicit tag is given\. +. +.SS "tmp" +. +.IP "\(bu" 4 +Default: TMPDIR environment variable, or "/tmp" +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +Where to store temporary files and folders\. All temp files are deleted +on success, but left behind on failure for forensic purposes\. +. +.SS "unicode" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +When set to true, npm uses unicode characters in the tree output\. When +false, it uses ascii characters to draw trees\. +. +.SS "unsafe\-perm" +. +.IP "\(bu" 4 +Default: false if running as root, true otherwise +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Set to true to suppress the UID/GID switching when running package +scripts\. If set explicitly to false, then installing as a non\-root user +will fail\. +. +.SS "usage" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Set to show short usage output (like the \-H output) +instead of complete help when doing \fBnpm help help\fR\|\. +. +.SS "user" +. +.IP "\(bu" 4 +Default: "nobody" +. +.IP "\(bu" 4 +Type: String or Number +. +.IP "" 0 +. +.P +The UID to set to when running package scripts as root\. +. +.SS "username" +. +.IP "\(bu" 4 +Default: null +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The username on the npm registry\. Set with \fBnpm adduser\fR +. +.SS "userconfig" +. +.IP "\(bu" 4 +Default: ~/\.npmrc +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The location of user\-level configuration settings\. +. +.SS "userignorefile" +. +.IP "\(bu" 4 +Default: ~/\.npmignore +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The location of a user\-level ignore file to apply to all packages\. +. +.P +If not found, but there is a \.gitignore file in the same directory, then +that will be used instead\. +. +.SS "umask" +. +.IP "\(bu" 4 +Default: 022 +. +.IP "\(bu" 4 +Type: Octal numeric string +. +.IP "" 0 +. +.P +The "umask" value to use when setting the file creation mode on files +and folders\. +. +.P +Folders and executables are given a mode which is \fB0777\fR masked against +this value\. Other files are given a mode which is \fB0666\fR masked against +this value\. Thus, the defaults are \fB0755\fR and \fB0644\fR respectively\. +. +.SS "version" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: boolean +. +.IP "" 0 +. +.P +If true, output the npm version and exit successfully\. +. +.P +Only relevant when specified explicitly on the command line\. +. +.SS "viewer" +. +.IP "\(bu" 4 +Default: "man" on Posix, "browser" on Windows +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The program to use to view help content\. +. +.P +Set to \fB"browser"\fR to view html help content in the default web browser\. +. +.SS "yes" +. +.IP "\(bu" 4 +Default: null +. +.IP "\(bu" 4 +Type: Boolean or null +. +.IP "" 0 +. +.P +If set to \fBnull\fR, then prompt the user for responses in some +circumstances\. +. +.P +If set to \fBtrue\fR, then answer "yes" to any prompt\. If set to \fBfalse\fR +then answer "no" to any prompt\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help npm +. +.IP "" 0 + diff --git a/deps/npm/man/man1/deprecate.1 b/deps/npm/man/man1/deprecate.1 new file mode 100644 index 00000000000..d99d8175eb4 --- /dev/null +++ b/deps/npm/man/man1/deprecate.1 @@ -0,0 +1,45 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-DEPRECATE" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-deprecate\fR \-\- Deprecate a version of a package +. +.SH "SYNOPSIS" +. +.nf +npm deprecate [@] +. +.fi +. +.SH "DESCRIPTION" +This command will update the npm registry entry for a package, providing +a deprecation warning to all who attempt to install it\. +. +.P +It works on version ranges as well as specific versions, so you can do +something like this: +. +.IP "" 4 +. +.nf +npm deprecate my\-thing@"< 0\.2\.3" "critical bug fixed in v0\.2\.3" +. +.fi +. +.IP "" 0 +. +.P +Note that you must be the package owner to deprecate something\. See the \fBowner\fR and \fBadduser\fR help topics\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help registry +. +.IP "" 0 + diff --git a/deps/npm/man/man1/developers.1 b/deps/npm/man/man1/developers.1 new file mode 100644 index 00000000000..8ef25dac2b1 --- /dev/null +++ b/deps/npm/man/man1/developers.1 @@ -0,0 +1,262 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-DEVELOPERS" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-developers\fR \-\- Developer Guide +. +.SH "DESCRIPTION" +So, you\'ve decided to use npm to develop (and maybe publish/deploy) +your project\. +. +.P +Fantastic! +. +.P +There are a few things that you need to do above the simple steps +that your users will do to install your program\. +. +.SH "About These Documents" +These are man pages\. If you install npm, you should be able to +then do \fBman npm\-thing\fR to get the documentation on a particular +topic, or \fBnpm help thing\fR to see the same information\. +. +.SH "What is a `package`" +A package is: +. +.IP "\(bu" 4 +a) a folder containing a program described by a package\.json file +. +.IP "\(bu" 4 +b) a gzipped tarball containing (a) +. +.IP "\(bu" 4 +c) a url that resolves to (b) +. +.IP "\(bu" 4 +d) a \fB@\fR that is published on the registry with (c) +. +.IP "\(bu" 4 +e) a \fB@\fR that points to (d) +. +.IP "\(bu" 4 +f) a \fB\fR that has a "latest" tag satisfying (e) +. +.IP "" 0 +. +.P +Even if you never publish your package, you can still get a lot of +benefits of using npm if you just want to write a node program (a), and +perhaps if you also want to be able to easily install it elsewhere +after packing it up into a tarball (b)\. +. +.SH "The package\.json File" +You need to have a \fBpackage\.json\fR file in the root of your project to do +much of anything with npm\. That is basically the whole interface\. +. +.P +See \fBnpm help json\fR for details about what goes in that file\. At the very +least, you need: +. +.IP "\(bu" 4 +name: +This should be a string that identifies your project\. Please do not +use the name to specify that it runs on node, or is in JavaScript\. +You can use the "engines" field to explicitly state the versions of +node (or whatever else) that your program requires, and it\'s pretty +well assumed that it\'s javascript\. +. +.IP +It does not necessarily need to match your github repository name\. +. +.IP +So, \fBnode\-foo\fR and \fBbar\-js\fR are bad names\. \fBfoo\fR or \fBbar\fR are better\. +. +.IP "\(bu" 4 +version: +A semver\-compatible version\. +. +.IP "\(bu" 4 +engines: +Specify the versions of node (or whatever else) that your program +runs on\. The node API changes a lot, and there may be bugs or new +functionality that you depend on\. Be explicit\. +. +.IP "\(bu" 4 +author: +Take some credit\. +. +.IP "\(bu" 4 +scripts: +If you have a special compilation or installation script, then you +should put it in the \fBscripts\fR hash\. You should definitely have at +least a basic smoke\-test command as the "scripts\.test" field\. +See npm help scripts\. +. +.IP "\(bu" 4 +main: +If you have a single module that serves as the entry point to your +program (like what the "foo" package gives you at require("foo")), +then you need to specify that in the "main" field\. +. +.IP "\(bu" 4 +directories: +This is a hash of folders\. The best ones to include are "lib" and +"doc", but if you specify a folder full of man pages in "man", then +they\'ll get installed just like these ones\. +. +.IP "" 0 +. +.P +You can use \fBnpm init\fR in the root of your package in order to get you +started with a pretty basic package\.json file\. See \fBnpm help init\fR for +more info\. +. +.SH "Keeping files *out* of your package" +Use a \fB\|\.npmignore\fR file to keep stuff out of your package\. If there\'s +no \.npmignore file, but there \fIis\fR a \.gitignore file, then npm will +ignore the stuff matched by the \.gitignore file\. If you \fIwant\fR to +include something that is excluded by your \.gitignore file, you can +create an empty \.npmignore file to override it\. +. +.SH "Link Packages" +\fBnpm link\fR is designed to install a development package and see the +changes in real time without having to keep re\-installing it\. (You do +need to either re\-link or \fBnpm rebuild \-g\fR to update compiled packages, +of course\.) +. +.P +More info at \fBnpm help link\fR\|\. +. +.SH "Before Publishing: Make Sure Your Package Installs and Works" +\fBThis is important\.\fR +. +.P +If you can not install it locally, you\'ll have +problems trying to publish it\. Or, worse yet, you\'ll be able to +publish it, but you\'ll be publishing a broken or pointless package\. +So don\'t do that\. +. +.P +In the root of your package, do this: +. +.IP "" 4 +. +.nf +npm install \. \-g +. +.fi +. +.IP "" 0 +. +.P +That\'ll show you that it\'s working\. If you\'d rather just create a symlink +package that points to your working directory, then do this: +. +.IP "" 4 +. +.nf +npm link +. +.fi +. +.IP "" 0 +. +.P +Use \fBnpm ls \-g\fR to see if it\'s there\. +. +.P +To test a local install, go into some other folder, and then do: +. +.IP "" 4 +. +.nf +cd \.\./some\-other\-folder +npm install \.\./my\-package +. +.fi +. +.IP "" 0 +. +.P +to install it locally into the node_modules folder in that other place\. +. +.P +Then go into the node\-repl, and try using require("my\-thing") to +bring in your module\'s main module\. +. +.SH "Create a User Account" +Create a user with the adduser command\. It works like this: +. +.IP "" 4 +. +.nf +npm adduser +. +.fi +. +.IP "" 0 +. +.P +and then follow the prompts\. +. +.P +This is documented better in npm help adduser\. +. +.SH "Publish your package" +This part\'s easy\. IN the root of your folder, do this: +. +.IP "" 4 +. +.nf +npm publish +. +.fi +. +.IP "" 0 +. +.P +You can give publish a url to a tarball, or a filename of a tarball, +or a path to a folder\. +. +.P +Note that pretty much \fBeverything in that folder will be exposed\fR +by default\. So, if you have secret stuff in there, use a \fB\|\.npminclude\fR +or \fB\|\.npmignore\fR file to list out the globs to include/ignore, or publish +from a fresh checkout\. +. +.SH "Brag about it" +Send emails, write blogs, blab in IRC\. +. +.P +Tell the world how easy it is to install your program! +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help npm +. +.IP "\(bu" 4 +npm help init +. +.IP "\(bu" 4 +npm help json +. +.IP "\(bu" 4 +npm help scripts +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help adduser +. +.IP "\(bu" 4 +npm help registry +. +.IP "" 0 + diff --git a/deps/npm/man/man1/docs.1 b/deps/npm/man/man1/docs.1 new file mode 100644 index 00000000000..87071a1c9ae --- /dev/null +++ b/deps/npm/man/man1/docs.1 @@ -0,0 +1,68 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-DOCS" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-docs\fR \-\- Docs for a package in a web browser maybe +. +.SH "SYNOPSIS" +. +.nf +npm docs +npm home +. +.fi +. +.SH "DESCRIPTION" +This command tries to guess at the likely location of a package\'s +documentation URL, and then tries to open it using the \fB\-\-browser\fR +config param\. +. +.SH "CONFIGURATION" +. +.SS "browser" +. +.IP "\(bu" 4 +Default: OS X: \fB"open"\fR, others: \fB"google\-chrome"\fR +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The browser that is called by the \fBnpm docs\fR command to open websites\. +. +.SS "registry" +. +.IP "\(bu" 4 +Default: https://registry\.npmjs\.org/ +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +The base URL of the npm package registry\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help view +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help registry +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help json +. +.IP "" 0 + diff --git a/deps/npm/man/man1/edit.1 b/deps/npm/man/man1/edit.1 new file mode 100644 index 00000000000..9278f458e79 --- /dev/null +++ b/deps/npm/man/man1/edit.1 @@ -0,0 +1,60 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-EDIT" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-edit\fR \-\- Edit an installed package +. +.SH "SYNOPSIS" +. +.nf +npm edit [@] +. +.fi +. +.SH "DESCRIPTION" +Opens the package folder in the default editor (or whatever you\'ve +configured as the npm \fBeditor\fR config \-\- see \fBnpm help config\fR\|\.) +. +.P +After it has been edited, the package is rebuilt so as to pick up any +changes in compiled packages\. +. +.P +For instance, you can do \fBnpm install connect\fR to install connect +into your package, and then \fBnpm edit connect\fR to make a few +changes to your locally installed copy\. +. +.SH "CONFIGURATION" +. +.SS "editor" +. +.IP "\(bu" 4 +Default: \fBEDITOR\fR environment variable if set, or \fB"vi"\fR on Posix, +or \fB"notepad"\fR on Windows\. +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The command to run for \fBnpm edit\fR or \fBnpm config edit\fR\|\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help explore +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help config +. +.IP "" 0 + diff --git a/deps/npm/man/man1/explore.1 b/deps/npm/man/man1/explore.1 new file mode 100644 index 00000000000..e0f65e4457e --- /dev/null +++ b/deps/npm/man/man1/explore.1 @@ -0,0 +1,76 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-EXPLORE" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-explore\fR \-\- Browse an installed package +. +.SH "SYNOPSIS" +. +.nf +npm explore [@] [ \-\- ] +. +.fi +. +.SH "DESCRIPTION" +Spawn a subshell in the directory of the installed package specified\. +. +.P +If a command is specified, then it is run in the subshell, which then +immediately terminates\. +. +.P +This is particularly handy in the case of git submodules in the \fBnode_modules\fR folder: +. +.IP "" 4 +. +.nf +npm explore some\-dependency \-\- git pull origin master +. +.fi +. +.IP "" 0 +. +.P +Note that the package is \fInot\fR automatically rebuilt afterwards, so be +sure to use \fBnpm rebuild \fR if you make any changes\. +. +.SH "CONFIGURATION" +. +.SS "shell" +. +.IP "\(bu" 4 +Default: SHELL environment variable, or "bash" on Posix, or "cmd" on +Windows +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The shell to run for the \fBnpm explore\fR command\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help submodule +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help edit +. +.IP "\(bu" 4 +npm help rebuild +. +.IP "\(bu" 4 +npm help build +. +.IP "\(bu" 4 +npm help install +. +.IP "" 0 + diff --git a/deps/npm/man/man1/faq.1 b/deps/npm/man/man1/faq.1 new file mode 100644 index 00000000000..b78fe35cf47 --- /dev/null +++ b/deps/npm/man/man1/faq.1 @@ -0,0 +1,308 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-FAQ" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-faq\fR \-\- Frequently Asked Questions +. +.SH "Where can I find these docs in HTML?" +\fIhttp://npmjs\.org/doc/\fR, or run: +. +.IP "" 4 +. +.nf +npm config set viewer browser +. +.fi +. +.IP "" 0 +. +.P +to open these documents in your default web browser rather than \fBman\fR\|\. +. +.SH "It didn\'t work\." +That\'s not really a question\. +. +.SH "Why didn\'t it work?" +I don\'t know yet\. +. +.P +Read the error output, and if you can\'t figure out what it means, +do what it says and post a bug with all the information it asks for\. +. +.SH "Where does npm put stuff?" +See \fBnpm help folders\fR +. +.P +tl;dr: +. +.IP "\(bu" 4 +Use the \fBnpm root\fR command to see where modules go, and the \fBnpm bin\fR +command to see where executables go +. +.IP "\(bu" 4 +Global installs are different from local installs\. If you install +something with the \fB\-g\fR flag, then its executables go in \fBnpm bin \-g\fR +and its modules go in \fBnpm root \-g\fR\|\. +. +.IP "" 0 +. +.SH "How do I install something everywhere?" +Install it globally by tacking \fB\-g\fR or \fB\-\-global\fR to the command\. +. +.SH "I installed something globally, but I can\'t `require()` it" +Install it locally\. +. +.SH "I don\'t wanna\." +Check out \fBnpm link\fR\|\. You might like it\. +. +.SH "No, I really want 0\.x style \'everything global\' style\." +Ok, fine\. Do this: +. +.IP "" 4 +. +.nf +echo \'export NODE_PATH="\'$(npm root \-g)\'"\' >> ~/\.bashrc +\|\. ~/\.bashrc +npm config set global true +. +.fi +. +.IP "" 0 +. +.P +This is not recommended\. +. +.P +Many things \fBwill not work\fR if you do this\. Make sure you read and +understand \fBnpm help config\fR and \fBnpm help global\fR before you complain +about things being broken\. +. +.P +When you realize what a mistake it was, do this to switch back: +. +.IP "" 4 +. +.nf +npm config delete global \-\-local +. +.fi +. +.IP "" 0 +. +.SH "If \'npm\' is an acronym, why is it never capitalized?" +Contrary to the belief of many, "npm" is not in fact an abbreviation for +"Node Package Manager"\. It is a recursive bacronymic abbreviation for +"npm is not an acronym"\. (If it was "ninaa", then it would be an +acronym, and thus incorrectly named\.) +. +.P +"NPM", however, \fIis\fR an acronym (more precisely, a capitonym) for the +National Association of Pastoral Musicians\. You can learn more +about them at \fIhttp://npm\.org/\fR\|\. +. +.P +In software, "NPM" is a non\-parametric mapping utility written by +Chris Rorden\. You can analyze pictures of brains with it\. Learn more +about the (capitalized) NPM program at \fIhttp://www\.cabiatl\.com/mricro/npm/\fR\|\. +. +.P +The first seed that eventually grew into this flower was a bash utility +named "pm", which was a shortened descendent of "pkgmakeinst", a +bash function that was used to install various different things on different +platforms, most often using Yahoo\'s \fByinst\fR\|\. If \fBnpm\fR was ever an +acronym for anything, it was \fBnode pm\fR or maybe \fBnew pm\fR\|\. +. +.P +So, in all seriousness, the "npm" project is named after its command\-line +utility, which was organically selected to be easily typed by a right\-handed +programmer using a US QWERTY keyboard layout, ending with the +right\-ring\-finger in a postition to type the \fB\-\fR key for flags and +other command\-line arguments\. That command\-line utility is always +lower\-case, though it starts most sentences it is a part of\. +. +.SH "How do I list installed packages?" +\fBnpm ls\fR +. +.SH "How do I search for packages?" +\fBnpm search\fR +. +.P +Arguments are greps\. \fBnpm search jsdom\fR shows jsdom packages\. +. +.SH "How do I update npm?" +. +.nf +npm update npm \-g +. +.fi +. +.P +You can also update all outdated local packages by doing \fBnpm update\fR without +any arguments, or global packages by doing \fBnpm update \-g\fR\|\. +. +.P +Occasionally, the version of npm will progress such that the current +version cannot be properly installed with the version that you have +installed already\. (Consider, if there is ever a bug in the \fBupdate\fR +command\.) +. +.P +In those cases, you can do this: +. +.IP "" 4 +. +.nf +curl http://npmjs\.org/install\.sh | sh +. +.fi +. +.IP "" 0 +. +.SH "What is a `package`?" +A package is: +. +.IP "\(bu" 4 +a) a folder containing a program described by a package\.json file +. +.IP "\(bu" 4 +b) a gzipped tarball containing (a) +. +.IP "\(bu" 4 +c) a url that resolves to (b) +. +.IP "\(bu" 4 +d) a \fB@\fR that is published on the registry with (c) +. +.IP "\(bu" 4 +e) a \fB@\fR that points to (d) +. +.IP "\(bu" 4 +f) a \fB\fR that has a "latest" tag satisfying (e) +. +.IP "\(bu" 4 +g) a \fBgit\fR url that, when cloned, results in (a)\. +. +.IP "" 0 +. +.P +Even if you never publish your package, you can still get a lot of +benefits of using npm if you just want to write a node program (a), and +perhaps if you also want to be able to easily install it elsewhere +after packing it up into a tarball (b)\. +. +.P +Git urls can be of the form: +. +.IP "" 4 +. +.nf +git://github\.com/user/project\.git#commit\-ish +git+ssh://user@hostname:project\.git#commit\-ish +git+http://user@hostname/project/blah\.git#commit\-ish +git+https://user@hostname/project/blah\.git#commit\-ish +. +.fi +. +.IP "" 0 +. +.P +The \fBcommit\-ish\fR can be any tag, sha, or branch which can be supplied as +an argument to \fBgit checkout\fR\|\. The default is \fBmaster\fR\|\. +. +.SH "How do I install node with npm?" +You don\'t\. Try one of these: +. +.IP "\(bu" 4 +\fIhttp://github\.com/isaacs/nave\fR +. +.IP "\(bu" 4 +\fIhttp://github\.com/visionmedia/n\fR +. +.IP "\(bu" 4 +\fIhttp://github\.com/creationix/nvm\fR +. +.IP "" 0 +. +.SH "How can I use npm for development?" +See \fBnpm help developers\fR and \fBnpm help json\fR\|\. +. +.P +You\'ll most likely want to \fBnpm link\fR your development folder\. That\'s +awesomely handy\. +. +.P +To set up your own private registry, check out \fBnpm help registry\fR\|\. +. +.SH "Can I list a url as a dependency?" +Yes\. It should be a url to a gzipped tarball containing a single folder +that has a package\.json in its root, or a git url\. +(See "what is a package?" above\.) +. +.SH "How do I symlink to a dev folder so I don\'t have to keep re\-installing?" +See \fBnpm help link\fR +. +.SH "The package registry website\. What is that exactly?" +See \fBnpm help registry\fR\|\. +. +.SH "What\'s up with the insecure channel warnings?" +Until node 0\.4\.10, there were problems sending big files over HTTPS\. That +means that publishes go over HTTP by default in those versions of node\. +. +.SH "I forgot my password, and can\'t publish\. How do I reset it?" +Go to \fIhttp://admin\.npmjs\.org/reset\fR\|\. +. +.SH "I get ECONNREFUSED a lot\. What\'s up?" +Either the registry is down, or node\'s DNS isn\'t able to reach out\. +This happens a lot if you don\'t follow \fIall\fR the steps in the Cygwin +setup doc\. +. +.P +To check if the registry is down, open up \fIhttp://registry\.npmjs\.org/\-/short\fR +in a web browser\. This will also tell you if you are just unable to +access the internet for some reason\. +. +.P +If the registry IS down, let me know by emailing or posting an issue\. +We\'ll have someone kick it or something\. +. +.SH "Who does npm?" +\fBnpm view npm author\fR +. +.P +\fBnpm view npm contributors\fR +. +.SH "I have a question or request not addressed here\. Where should I put it?" +Discuss it on the mailing list, or post an issue\. +. +.IP "\(bu" 4 +\fInpm\-@googlegroups\.com\fR +. +.IP "\(bu" 4 +\fIhttp://github\.com/isaacs/npm/issues\fR +. +.IP "" 0 +. +.SH "Why does npm hate me?" +npm is not capable of hatred\. It loves everyone, especially you\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help npm +. +.IP "\(bu" 4 +npm help developers +. +.IP "\(bu" 4 +npm help json +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help folders +. +.IP "" 0 + diff --git a/deps/npm/man/man1/find.1 b/deps/npm/man/man1/find.1 new file mode 100644 index 00000000000..653597ffa8f --- /dev/null +++ b/deps/npm/man/man1/find.1 @@ -0,0 +1,72 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-SEARCH" "1" "November 2011" "" "" +. +.SH "NAME" +\fBnpm-search\fR \-\- Search for packages +. +.SH "SYNOPSIS" +. +.nf +npm search [search terms \.\.\.] +. +.fi +. +.SH "DESCRIPTION" +Search the registry for packages matching the search terms\. +. +.SH "CONFIGURATION" +. +.SS "description" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Show the description in \fBnpm search\fR +. +.SS "searchopts" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +Space\-separated options that are always passed to search\. +. +.SS "searchexclude" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +Space\-separated options that limit the results from search\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help registry +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help view +. +.IP "" 0 + diff --git a/deps/npm/man/man1/folders.1 b/deps/npm/man/man1/folders.1 new file mode 100644 index 00000000000..db46c2a2e76 --- /dev/null +++ b/deps/npm/man/man1/folders.1 @@ -0,0 +1,259 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-FOLDERS" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-folders\fR \-\- Folder Structures Used by npm +. +.SH "DESCRIPTION" +npm puts various things on your computer\. That\'s its job\. +. +.P +This document will tell you what it puts where\. +. +.SS "tl;dr" +. +.IP "\(bu" 4 +Local install (default): puts stuff in \fB\|\./node_modules\fR of the current +package root\. +. +.IP "\(bu" 4 +Global install (with \fB\-g\fR): puts stuff in /usr/local or wherever node +is installed\. +. +.IP "\(bu" 4 +Install it \fBlocally\fR if you\'re going to \fBrequire()\fR it\. +. +.IP "\(bu" 4 +Install it \fBglobally\fR if you\'re going to run it on the command line\. +. +.IP "\(bu" 4 +If you need both, then install it in both places, or use \fBnpm link\fR\|\. +. +.IP "" 0 +. +.SS "prefix Configuration" +The \fBprefix\fR config defaults to the location where node is installed\. +On most systems, this is \fB/usr/local\fR, and most of the time is the same +as node\'s \fBprocess\.installPrefix\fR\|\. +. +.P +On windows, this is the exact location of the node\.exe binary\. On Unix +systems, it\'s one level up, since node is typically installed at \fB{prefix}/bin/node\fR rather than \fB{prefix}/node\.exe\fR\|\. +. +.P +When the \fBglobal\fR flag is set, npm installs things into this prefix\. +When it is not set, it uses the root of the current package, or the +current working directory if not in a package already\. +. +.SS "Node Modules" +Packages are dropped into the \fBnode_modules\fR folder under the \fBprefix\fR\|\. +When installing locally, this means that you can \fBrequire("packagename")\fR to load its main module, or \fBrequire("packagename/lib/path/to/sub/module")\fR to load other modules\. +. +.P +Global installs on Unix systems go to \fB{prefix}/lib/node_modules\fR\|\. +Global installs on Windows go to \fB{prefix}/node_modules\fR (that is, no \fBlib\fR folder\.) +. +.P +If you wish to \fBrequire()\fR a package, then install it locally\. +. +.SS "Executables" +When in global mode, executables are linked into \fB{prefix}/bin\fR on Unix, +or directly into \fB{prefix}\fR on Windows\. +. +.P +When in local mode, executables are linked into \fB\|\./node_modules/\.bin\fR so that they can be made available to scripts run +through npm\. (For example, so that a test runner will be in the path +when you run \fBnpm test\fR\|\.) +. +.SS "Man Pages" +When in global mode, man pages are linked into \fB{prefix}/share/man\fR\|\. +. +.P +When in local mode, man pages are not installed\. +. +.P +Man pages are not installed on Windows systems\. +. +.SS "Cache" +See \fBnpm help cache\fR\|\. Cache files are stored in \fB~/\.npm\fR on Posix, or \fB~/npm\-cache\fR on Windows\. +. +.P +This is controlled by the \fBcache\fR configuration param\. +. +.SS "Temp Files" +Temporary files are stored by default in the folder specified by the \fBtmp\fR config, which defaults to the TMPDIR, TMP, or TEMP environment +variables, or \fB/tmp\fR on Unix and \fBc:\\windows\\temp\fR on Windows\. +. +.P +Temp files are given a unique folder under this root for each run of the +program, and are deleted upon successful exit\. +. +.SH "More Information" +When installing locally, npm first tries to find an appropriate \fBprefix\fR folder\. This is so that \fBnpm install foo@1\.2\.3\fR will install +to the sensible root of your package, even if you happen to have \fBcd\fRed +into some other folder\. +. +.P +Starting at the $PWD, npm will walk up the folder tree checking for a +folder that contains either a \fBpackage\.json\fR file, or a \fBnode_modules\fR +folder\. If such a thing is found, then that is treated as the effective +"current directory" for the purpose of running npm commands\. (This +behavior is inspired by and similar to git\'s \.git\-folder seeking +logic when running git commands in a working dir\.) +. +.P +If no package root is found, then the current folder is used\. +. +.P +When you run \fBnpm install foo@1\.2\.3\fR, then the package is loaded into +the cache, and then unpacked into \fB\|\./node_modules/foo\fR\|\. Then, any of +foo\'s dependencies are similarly unpacked into \fB\|\./node_modules/foo/node_modules/\.\.\.\fR\|\. +. +.P +Any bin files are symlinked to \fB\|\./node_modules/\.bin/\fR, so that they may +be found by npm scripts when necessary\. +. +.SS "Global Installation" +If the \fBglobal\fR configuration is set to true, then npm will +install packages "globally"\. +. +.P +For global installation, packages are installed roughly the same way, +but using the folders described above\. +. +.SS "Cycles, Conflicts, and Folder Parsimony" +Cycles are handled using the property of node\'s module system that it +walks up the directories looking for \fBnode_modules\fR folders\. So, at every +stage, if a package is already installed in an ancestor \fBnode_modules\fR +folder, then it is not installed at the current location\. +. +.P +Consider the case above, where \fBfoo \-> bar \-> baz\fR\|\. Imagine if, in +addition to that, baz depended on bar, so you\'d have: \fBfoo \-> bar \-> baz \-> bar \-> baz \.\.\.\fR\|\. However, since the folder +structure is: \fBfoo/node_modules/bar/node_modules/baz\fR, there\'s no need to +put another copy of bar into \fB\|\.\.\./baz/node_modules\fR, since when it calls +require("bar"), it will get the copy that is installed in \fBfoo/node_modules/bar\fR\|\. +. +.P +This shortcut is only used if the exact same +version would be installed in multiple nested \fBnode_modules\fR folders\. It +is still possible to have \fBa/node_modules/b/node_modules/a\fR if the two +"a" packages are different versions\. However, without repeating the +exact same package multiple times, an infinite regress will always be +prevented\. +. +.P +Another optimization can be made by installing dependencies at the +highest level possible, below the localized "target" folder\. +. +.TP +Example +.Consider this dependency graph: +. +.IP "" 4 +. +.nf +foo ++\-\- blerg@1\.2\.5 ++\-\- bar@1\.2\.3 +| +\-\- blerg@1\.x (latest=1\.3\.7) +| +\-\- baz@2\.x +| | `\-\- quux@3\.x +| | `\-\- bar@1\.2\.3 (cycle) +| `\-\- asdf@* +`\-\- baz@1\.2\.3 + `\-\- quux@3\.x + `\-\- bar +. +.fi +. +.IP "" 0 +. +.P +In this case, we might expect a folder structure like this: +. +.IP "" 4 +. +.nf +foo ++\-\- node_modules + +\-\- blerg (1\.2\.5) <\-\-\-[A] + +\-\- bar (1\.2\.3) <\-\-\-[B] + | +\-\- node_modules + | | `\-\- baz (2\.0\.2) <\-\-\-[C] + | | `\-\- node_modules + | | `\-\- quux (3\.2\.0) + | `\-\- asdf (2\.3\.4) + `\-\- baz (1\.2\.3) <\-\-\-[D] + `\-\- node_modules + `\-\- quux (3\.2\.0) <\-\-\-[E] +. +.fi +. +.IP "" 0 +. +.P +Since foo depends directly on bar@1\.2\.3 and baz@1\.2\.3, those are +installed in foo\'s \fBnode_modules\fR folder\. +. +.P +Even though the latest copy of blerg is 1\.3\.7, foo has a specific +dependency on version 1\.2\.5\. So, that gets installed at [A]\. Since the +parent installation of blerg satisfie\'s bar\'s dependency on blerg@1\.x, +it does not install another copy under [B]\. +. +.P +Bar [B] also has dependencies on baz and asdf, so those are installed in +bar\'s \fBnode_modules\fR folder\. Because it depends on \fBbaz@2\.x\fR, it cannot +re\-use the \fBbaz@1\.2\.3\fR installed in the parent \fBnode_modules\fR folder [D], +and must install its own copy [C]\. +. +.P +Underneath bar, the \fBbaz\->quux\->bar\fR dependency creates a cycle\. +However, because \fBbar\fR is already in \fBquux\fR\'s ancestry [B], it does not +unpack another copy of bar into that folder\. +. +.P +Underneath \fBfoo\->baz\fR [D], quux\'s [E] folder tree is empty, because its +dependency on bar is satisfied by the parent folder copy installed at [B]\. +. +.P +For a graphical breakdown of what is installed where, use \fBnpm ls\fR\|\. +. +.SS "Publishing" +Upon publishing, npm will look in the \fBnode_modules\fR folder\. If any of +the items there are not in the \fBbundledDependencies\fR array, then they will +not be included in the package tarball\. +. +.P +This allows a package maintainer to install all of their dependencies +(and dev dependencies) locally, but only re\-publish those items that +cannot be found elsewhere\. See \fBnpm help json\fR for more information\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help json +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help pack +. +.IP "\(bu" 4 +npm help cache +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help publish +. +.IP "" 0 + diff --git a/deps/npm/man/man1/get.1 b/deps/npm/man/man1/get.1 new file mode 100644 index 00000000000..5075c9f0cc8 --- /dev/null +++ b/deps/npm/man/man1/get.1 @@ -0,0 +1,1154 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-CONFIG" "1" "November 2011" "" "" +. +.SH "NAME" +\fBnpm-config\fR \-\- Manage the npm configuration file +. +.SH "SYNOPSIS" +. +.nf +npm config set [\-\-global] +npm config get +npm config delete +npm config list +npm config edit +npm get +npm set [\-\-global] +. +.fi +. +.SH "DESCRIPTION" +npm gets its configuration values from 6 sources, in this priority: +. +.SS "Command Line Flags" +Putting \fB\-\-foo bar\fR on the command line sets the \fBfoo\fR configuration parameter to \fB"bar"\fR\|\. A \fB\-\-\fR argument tells the cli +parser to stop reading flags\. A \fB\-\-flag\fR parameter that is at the \fIend\fR of +the command will be given the value of \fBtrue\fR\|\. +. +.SS "Environment Variables" +Any environment variables that start with \fBnpm_config_\fR will be interpreted +as a configuration parameter\. For example, putting \fBnpm_config_foo=bar\fR in +your environment will set the \fBfoo\fR configuration parameter to \fBbar\fR\|\. Any +environment configurations that are not given a value will be given the value +of \fBtrue\fR\|\. Config values are case\-insensitive, so \fBNPM_CONFIG_FOO=bar\fR will +work the same\. +. +.SS "Per\-user config file" +\fB$HOME/\.npmrc\fR (or the \fBuserconfig\fR param, if set above) +. +.P +This file is an ini\-file formatted list of \fBkey = value\fR parameters\. +. +.SS "Global config file" +\fB$PREFIX/etc/npmrc\fR (or the \fBglobalconfig\fR param, if set above): +This file is an ini\-file formatted list of \fBkey = value\fR parameters +. +.SS "Built\-in config file" +\fBpath/to/npm/itself/npmrc\fR +. +.P +This is an unchangeable "builtin" +configuration file that npm keeps consistent across updates\. Set +fields in here using the \fB\|\./configure\fR script that comes with npm\. +This is primarily for distribution maintainers to override default +configs in a standard and consistent manner\. +. +.SS "Default Configs" +A set of configuration parameters that are internal to npm, and are +defaults if nothing else is specified\. +. +.SH "Sub\-commands" +Config supports the following sub\-commands: +. +.SS "set" +. +.nf +npm config set key value +. +.fi +. +.P +Sets the config key to the value\. +. +.P +If value is omitted, then it sets it to "true"\. +. +.SS "get" +. +.nf +npm config get key +. +.fi +. +.P +Echo the config value to stdout\. +. +.SS "list" +. +.nf +npm config list +. +.fi +. +.P +Show all the config settings\. +. +.SS "delete" +. +.nf +npm config delete key +. +.fi +. +.P +Deletes the key from all configuration files\. +. +.SS "edit" +. +.nf +npm config edit +. +.fi +. +.P +Opens the config file in an editor\. Use the \fB\-\-global\fR flag to edit the +global config\. +. +.SH "Shorthands and Other CLI Niceties" +The following shorthands are parsed on the command\-line: +. +.IP "\(bu" 4 +\fB\-v\fR: \fB\-\-version\fR +. +.IP "\(bu" 4 +\fB\-h\fR, \fB\-?\fR, \fB\-\-help\fR, \fB\-H\fR: \fB\-\-usage\fR +. +.IP "\(bu" 4 +\fB\-s\fR, \fB\-\-silent\fR: \fB\-\-loglevel silent\fR +. +.IP "\(bu" 4 +\fB\-d\fR: \fB\-\-loglevel info\fR +. +.IP "\(bu" 4 +\fB\-dd\fR, \fB\-\-verbose\fR: \fB\-\-loglevel verbose\fR +. +.IP "\(bu" 4 +\fB\-ddd\fR: \fB\-\-loglevel silly\fR +. +.IP "\(bu" 4 +\fB\-g\fR: \fB\-\-global\fR +. +.IP "\(bu" 4 +\fB\-l\fR: \fB\-\-long\fR +. +.IP "\(bu" 4 +\fB\-m\fR: \fB\-\-message\fR +. +.IP "\(bu" 4 +\fB\-p\fR, \fB\-\-porcelain\fR: \fB\-\-parseable\fR +. +.IP "\(bu" 4 +\fB\-reg\fR: \fB\-\-registry\fR +. +.IP "\(bu" 4 +\fB\-v\fR: \fB\-\-version\fR +. +.IP "\(bu" 4 +\fB\-f\fR: \fB\-\-force\fR +. +.IP "\(bu" 4 +\fB\-l\fR: \fB\-\-long\fR +. +.IP "\(bu" 4 +\fB\-desc\fR: \fB\-\-description\fR +. +.IP "\(bu" 4 +\fB\-S\fR: \fB\-\-save\fR +. +.IP "\(bu" 4 +\fB\-y\fR: \fB\-\-yes\fR +. +.IP "\(bu" 4 +\fB\-n\fR: \fB\-\-yes false\fR +. +.IP "\(bu" 4 +\fBll\fR and \fBla\fR commands: \fBls \-\-long\fR +. +.IP "" 0 +. +.P +If the specified configuration param resolves unambiguously to a known +configuration parameter, then it is expanded to that configuration +parameter\. For example: +. +.IP "" 4 +. +.nf +npm ls \-\-par +# same as: +npm ls \-\-parseable +. +.fi +. +.IP "" 0 +. +.P +If multiple single\-character shorthands are strung together, and the +resulting combination is unambiguously not some other configuration +param, then it is expanded to its various component pieces\. For +example: +. +.IP "" 4 +. +.nf +npm ls \-gpld +# same as: +npm ls \-\-global \-\-parseable \-\-long \-\-loglevel info +. +.fi +. +.IP "" 0 +. +.SH "Per\-Package Config Settings" +When running scripts (see \fBnpm help scripts\fR) +the package\.json "config" keys are overwritten in the environment if +there is a config param of \fB[@]:\fR\|\. For example, if +the package\.json has this: +. +.IP "" 4 +. +.nf +{ "name" : "foo" +, "config" : { "port" : "8080" } +, "scripts" : { "start" : "node server\.js" } } +. +.fi +. +.IP "" 0 +. +.P +and the server\.js is this: +. +.IP "" 4 +. +.nf +http\.createServer(\.\.\.)\.listen(process\.env\.npm_package_config_port) +. +.fi +. +.IP "" 0 +. +.P +then the user could change the behavior by doing: +. +.IP "" 4 +. +.nf +npm config set foo:port 80 +. +.fi +. +.IP "" 0 +. +.SH "Config Settings" +. +.SS "always\-auth" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Force npm to always require authentication when accessing the registry, +even for \fBGET\fR requests\. +. +.SS "bin\-publish" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +If set to true, then binary packages will be created on publish\. +. +.P +This is the way to opt into the "bindist" behavior described below\. +. +.SS "bindist" +. +.IP "\(bu" 4 +Default: Unstable node versions, \fBnull\fR, otherwise \fB"\-\-"\fR +. +.IP "\(bu" 4 +Type: String or \fBnull\fR +. +.IP "" 0 +. +.P +Experimental: on stable versions of node, binary distributions will be +created with this tag\. If a user then installs that package, and their \fBbindist\fR tag is found in the list of binary distributions, they will +get that prebuilt version\. +. +.P +Pre\-build node packages have their preinstall, install, and postinstall +scripts stripped (since they are run prior to publishing), and do not +have their \fBbuild\fR directories automatically ignored\. +. +.P +It\'s yet to be seen if this is a good idea\. +. +.SS "browser" +. +.IP "\(bu" 4 +Default: OS X: \fB"open"\fR, others: \fB"google\-chrome"\fR +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The browser that is called by the \fBnpm docs\fR command to open websites\. +. +.SS "ca" +. +.IP "\(bu" 4 +Default: The npm CA certificate +. +.IP "\(bu" 4 +Type: String or null +. +.IP "" 0 +. +.P +The Certificate Authority signing certificate that is trusted for SSL +connections to the registry\. +. +.P +Set to \fBnull\fR to only allow "known" registrars, or to a specific CA cert +to trust only that specific signing authority\. +. +.P +See also the \fBstrict\-ssl\fR config\. +. +.SS "cache" +. +.IP "\(bu" 4 +Default: Windows: \fB~/npm\-cache\fR, Posix: \fB~/\.npm\fR +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The location of npm\'s cache directory\. See \fBnpm help cache\fR +. +.SS "color" +. +.IP "\(bu" 4 +Default: true on Posix, false on Windows +. +.IP "\(bu" 4 +Type: Boolean or \fB"always"\fR +. +.IP "" 0 +. +.P +If false, never shows colors\. If \fB"always"\fR then always shows colors\. +If true, then only prints color codes for tty file descriptors\. +. +.SS "depth" +. +.IP "\(bu" 4 +Default: Infinity +. +.IP "\(bu" 4 +Type: Number +. +.IP "" 0 +. +.P +The depth to go when recursing directories for \fBnpm ls\fR and \fBnpm cache ls\fR\|\. +. +.SS "description" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Show the description in \fBnpm search\fR +. +.SS "dev" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Install \fBdev\-dependencies\fR along with packages\. +. +.P +Note that \fBdev\-dependencies\fR are also installed if the \fBnpat\fR flag is +set\. +. +.SS "editor" +. +.IP "\(bu" 4 +Default: \fBEDITOR\fR environment variable if set, or \fB"vi"\fR on Posix, +or \fB"notepad"\fR on Windows\. +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The command to run for \fBnpm edit\fR or \fBnpm config edit\fR\|\. +. +.SS "force" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Makes various commands more forceful\. +. +.IP "\(bu" 4 +lifecycle script failure does not block progress\. +. +.IP "\(bu" 4 +publishing clobbers previously published versions\. +. +.IP "\(bu" 4 +skips cache when requesting from the registry\. +. +.IP "\(bu" 4 +prevents checks against clobbering non\-npm files\. +. +.IP "" 0 +. +.SS "global" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Operates in "global" mode, so that packages are installed into the \fBprefix\fR folder instead of the current working directory\. See \fBnpm help folders\fR for more on the differences in behavior\. +. +.IP "\(bu" 4 +packages are installed into the \fBprefix/node_modules\fR folder, instead of the +current working directory\. +. +.IP "\(bu" 4 +bin files are linked to \fBprefix/bin\fR +. +.IP "\(bu" 4 +man pages are linked to \fBprefix/share/man\fR +. +.IP "" 0 +. +.SS "globalconfig" +. +.IP "\(bu" 4 +Default: {prefix}/etc/npmrc +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The config file to read for global config options\. +. +.SS "globalignorefile" +. +.IP "\(bu" 4 +Default: {prefix}/etc/npmignore +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The config file to read for global ignore patterns to apply to all users +and all projects\. +. +.P +If not found, but there is a "gitignore" file in the +same directory, then that will be used instead\. +. +.SS "group" +. +.IP "\(bu" 4 +Default: GID of the current process +. +.IP "\(bu" 4 +Type: String or Number +. +.IP "" 0 +. +.P +The group to use when running package scripts in global mode as the root +user\. +. +.SS "https\-proxy" +. +.IP "\(bu" 4 +Default: the \fBHTTPS_PROXY\fR or \fBhttps_proxy\fR or \fBHTTP_PROXY\fR or \fBhttp_proxy\fR environment variables\. +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +A proxy to use for outgoing https requests\. +. +.SS "ignore" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: string +. +.IP "" 0 +. +.P +A white\-space separated list of glob patterns of files to always exclude +from packages when building tarballs\. +. +.SS "init\.version" +. +.IP "\(bu" 4 +Default: "0\.0\.0" +. +.IP "\(bu" 4 +Type: semver +. +.IP "" 0 +. +.P +The value \fBnpm init\fR should use by default for the package version\. +. +.SS "init\.author\.name" +. +.IP "\(bu" 4 +Default: "0\.0\.0" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The value \fBnpm init\fR should use by default for the package author\'s name\. +. +.SS "init\.author\.email" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The value \fBnpm init\fR should use by default for the package author\'s email\. +. +.SS "init\.author\.url" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The value \fBnpm init\fR should use by default for the package author\'s homepage\. +. +.SS "link" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +If true, then local installs will link if there is a suitable globally +installed package\. +. +.P +Note that this means that local installs can cause things to be +installed into the global space at the same time\. The link is only done +if one of the two conditions are met: +. +.IP "\(bu" 4 +The package is not already installed globally, or +. +.IP "\(bu" 4 +the globally installed version is identical to the version that is +being installed locally\. +. +.IP "" 0 +. +.SS "logfd" +. +.IP "\(bu" 4 +Default: stderr file descriptor +. +.IP "\(bu" 4 +Type: Number or Stream +. +.IP "" 0 +. +.P +The location to write log output\. +. +.SS "loglevel" +. +.IP "\(bu" 4 +Default: "warn" +. +.IP "\(bu" 4 +Type: String +. +.IP "\(bu" 4 +Values: "silent", "win", "error", "warn", "info", "verbose", "silly" +. +.IP "" 0 +. +.P +What level of logs to report\. On failure, \fIall\fR logs are written to \fBnpm\-debug\.log\fR in the current working directory\. +. +.SS "logprefix" +. +.IP "\(bu" 4 +Default: true on Posix, false on Windows +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Whether or not to prefix log messages with "npm" and the log level\. See +also "color" and "loglevel"\. +. +.SS "long" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Show extended information in \fBnpm ls\fR +. +.SS "message" +. +.IP "\(bu" 4 +Default: "%s" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +Commit message which is used by \fBnpm version\fR when creating version commit\. +. +.P +Any "%s" in the message will be replaced with the version number\. +. +.SS "node\-version" +. +.IP "\(bu" 4 +Default: process\.version +. +.IP "\(bu" 4 +Type: semver or false +. +.IP "" 0 +. +.P +The node version to use when checking package\'s "engines" hash\. +. +.SS "npat" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Run tests on installation and report results to the \fBnpaturl\fR\|\. +. +.SS "npaturl" +. +.IP "\(bu" 4 +Default: Not yet implemented +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +The url to report npat test results\. +. +.SS "onload\-script" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +A node module to \fBrequire()\fR when npm loads\. Useful for programmatic +usage\. +. +.SS "outfd" +. +.IP "\(bu" 4 +Default: standard output file descriptor +. +.IP "\(bu" 4 +Type: Number or Stream +. +.IP "" 0 +. +.P +Where to write "normal" output\. This has no effect on log output\. +. +.SS "parseable" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Output parseable results from commands that write to +standard output\. +. +.SS "prefix" +. +.IP "\(bu" 4 +Default: node\'s process\.installPrefix +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The location to install global items\. If set on the command line, then +it forces non\-global commands to run in the specified folder\. +. +.SS "production" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Set to true to run in "production" mode\. +. +.IP "1" 4 +devDependencies are not installed at the topmost level when running +local \fBnpm install\fR without any arguments\. +. +.IP "2" 4 +Set the NODE_ENV="production" for lifecycle scripts\. +. +.IP "" 0 +. +.SS "proxy" +. +.IP "\(bu" 4 +Default: \fBHTTP_PROXY\fR or \fBhttp_proxy\fR environment variable, or null +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +A proxy to use for outgoing http requests\. +. +.SS "rebuild\-bundle" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Rebuild bundled dependencies after installation\. +. +.SS "registry" +. +.IP "\(bu" 4 +Default: https://registry\.npmjs\.org/ +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +The base URL of the npm package registry\. +. +.SS "rollback" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Remove failed installs\. +. +.SS "save" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Save installed packages to a package\.json file as dependencies\. +. +.P +Only works if there is already a package\.json file present\. +. +.SS "searchopts" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +Space\-separated options that are always passed to search\. +. +.SS "searchexclude" +. +.IP "\(bu" 4 +Default: "" +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +Space\-separated options that limit the results from search\. +. +.SS "shell" +. +.IP "\(bu" 4 +Default: SHELL environment variable, or "bash" on Posix, or "cmd" on +Windows +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The shell to run for the \fBnpm explore\fR command\. +. +.SS "strict\-ssl" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Whether or not to do SSL key validation when making requests to the +registry via https\. +. +.P +See also the \fBca\fR config\. +. +.SS "tag" +. +.IP "\(bu" 4 +Default: latest +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +If you ask npm to install a package and don\'t tell it a specific version, then +it will install the specified tag\. +. +.P +Also the tag that is added to the package@version specified by the \fBnpm +tag\fR command, if no explicit tag is given\. +. +.SS "tmp" +. +.IP "\(bu" 4 +Default: TMPDIR environment variable, or "/tmp" +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +Where to store temporary files and folders\. All temp files are deleted +on success, but left behind on failure for forensic purposes\. +. +.SS "unicode" +. +.IP "\(bu" 4 +Default: true +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +When set to true, npm uses unicode characters in the tree output\. When +false, it uses ascii characters to draw trees\. +. +.SS "unsafe\-perm" +. +.IP "\(bu" 4 +Default: false if running as root, true otherwise +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Set to true to suppress the UID/GID switching when running package +scripts\. If set explicitly to false, then installing as a non\-root user +will fail\. +. +.SS "usage" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Set to show short usage output (like the \-H output) +instead of complete help when doing \fBnpm help help\fR\|\. +. +.SS "user" +. +.IP "\(bu" 4 +Default: "nobody" +. +.IP "\(bu" 4 +Type: String or Number +. +.IP "" 0 +. +.P +The UID to set to when running package scripts as root\. +. +.SS "username" +. +.IP "\(bu" 4 +Default: null +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The username on the npm registry\. Set with \fBnpm adduser\fR +. +.SS "userconfig" +. +.IP "\(bu" 4 +Default: ~/\.npmrc +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The location of user\-level configuration settings\. +. +.SS "userignorefile" +. +.IP "\(bu" 4 +Default: ~/\.npmignore +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The location of a user\-level ignore file to apply to all packages\. +. +.P +If not found, but there is a \.gitignore file in the same directory, then +that will be used instead\. +. +.SS "umask" +. +.IP "\(bu" 4 +Default: 022 +. +.IP "\(bu" 4 +Type: Octal numeric string +. +.IP "" 0 +. +.P +The "umask" value to use when setting the file creation mode on files +and folders\. +. +.P +Folders and executables are given a mode which is \fB0777\fR masked against +this value\. Other files are given a mode which is \fB0666\fR masked against +this value\. Thus, the defaults are \fB0755\fR and \fB0644\fR respectively\. +. +.SS "version" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: boolean +. +.IP "" 0 +. +.P +If true, output the npm version and exit successfully\. +. +.P +Only relevant when specified explicitly on the command line\. +. +.SS "viewer" +. +.IP "\(bu" 4 +Default: "man" on Posix, "browser" on Windows +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The program to use to view help content\. +. +.P +Set to \fB"browser"\fR to view html help content in the default web browser\. +. +.SS "yes" +. +.IP "\(bu" 4 +Default: null +. +.IP "\(bu" 4 +Type: Boolean or null +. +.IP "" 0 +. +.P +If set to \fBnull\fR, then prompt the user for responses in some +circumstances\. +. +.P +If set to \fBtrue\fR, then answer "yes" to any prompt\. If set to \fBfalse\fR +then answer "no" to any prompt\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help npm +. +.IP "" 0 + diff --git a/deps/npm/man/man1/global.1 b/deps/npm/man/man1/global.1 new file mode 100644 index 00000000000..070d40c4c46 --- /dev/null +++ b/deps/npm/man/man1/global.1 @@ -0,0 +1,259 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-FOLDERS" "1" "November 2011" "" "" +. +.SH "NAME" +\fBnpm-folders\fR \-\- Folder Structures Used by npm +. +.SH "DESCRIPTION" +npm puts various things on your computer\. That\'s its job\. +. +.P +This document will tell you what it puts where\. +. +.SS "tl;dr" +. +.IP "\(bu" 4 +Local install (default): puts stuff in \fB\|\./node_modules\fR of the current +package root\. +. +.IP "\(bu" 4 +Global install (with \fB\-g\fR): puts stuff in /usr/local or wherever node +is installed\. +. +.IP "\(bu" 4 +Install it \fBlocally\fR if you\'re going to \fBrequire()\fR it\. +. +.IP "\(bu" 4 +Install it \fBglobally\fR if you\'re going to run it on the command line\. +. +.IP "\(bu" 4 +If you need both, then install it in both places, or use \fBnpm link\fR\|\. +. +.IP "" 0 +. +.SS "prefix Configuration" +The \fBprefix\fR config defaults to the location where node is installed\. +On most systems, this is \fB/usr/local\fR, and most of the time is the same +as node\'s \fBprocess\.installPrefix\fR\|\. +. +.P +On windows, this is the exact location of the node\.exe binary\. On Unix +systems, it\'s one level up, since node is typically installed at \fB{prefix}/bin/node\fR rather than \fB{prefix}/node\.exe\fR\|\. +. +.P +When the \fBglobal\fR flag is set, npm installs things into this prefix\. +When it is not set, it uses the root of the current package, or the +current working directory if not in a package already\. +. +.SS "Node Modules" +Packages are dropped into the \fBnode_modules\fR folder under the \fBprefix\fR\|\. +When installing locally, this means that you can \fBrequire("packagename")\fR to load its main module, or \fBrequire("packagename/lib/path/to/sub/module")\fR to load other modules\. +. +.P +Global installs on Unix systems go to \fB{prefix}/lib/node_modules\fR\|\. +Global installs on Windows go to \fB{prefix}/node_modules\fR (that is, no \fBlib\fR folder\.) +. +.P +If you wish to \fBrequire()\fR a package, then install it locally\. +. +.SS "Executables" +When in global mode, executables are linked into \fB{prefix}/bin\fR on Unix, +or directly into \fB{prefix}\fR on Windows\. +. +.P +When in local mode, executables are linked into \fB\|\./node_modules/\.bin\fR so that they can be made available to scripts run +through npm\. (For example, so that a test runner will be in the path +when you run \fBnpm test\fR\|\.) +. +.SS "Man Pages" +When in global mode, man pages are linked into \fB{prefix}/share/man\fR\|\. +. +.P +When in local mode, man pages are not installed\. +. +.P +Man pages are not installed on Windows systems\. +. +.SS "Cache" +See \fBnpm help cache\fR\|\. Cache files are stored in \fB~/\.npm\fR on Posix, or \fB~/npm\-cache\fR on Windows\. +. +.P +This is controlled by the \fBcache\fR configuration param\. +. +.SS "Temp Files" +Temporary files are stored by default in the folder specified by the \fBtmp\fR config, which defaults to the TMPDIR, TMP, or TEMP environment +variables, or \fB/tmp\fR on Unix and \fBc:\\windows\\temp\fR on Windows\. +. +.P +Temp files are given a unique folder under this root for each run of the +program, and are deleted upon successful exit\. +. +.SH "More Information" +When installing locally, npm first tries to find an appropriate \fBprefix\fR folder\. This is so that \fBnpm install foo@1\.2\.3\fR will install +to the sensible root of your package, even if you happen to have \fBcd\fRed +into some other folder\. +. +.P +Starting at the $PWD, npm will walk up the folder tree checking for a +folder that contains either a \fBpackage\.json\fR file, or a \fBnode_modules\fR +folder\. If such a thing is found, then that is treated as the effective +"current directory" for the purpose of running npm commands\. (This +behavior is inspired by and similar to git\'s \.git\-folder seeking +logic when running git commands in a working dir\.) +. +.P +If no package root is found, then the current folder is used\. +. +.P +When you run \fBnpm install foo@1\.2\.3\fR, then the package is loaded into +the cache, and then unpacked into \fB\|\./node_modules/foo\fR\|\. Then, any of +foo\'s dependencies are similarly unpacked into \fB\|\./node_modules/foo/node_modules/\.\.\.\fR\|\. +. +.P +Any bin files are symlinked to \fB\|\./node_modules/\.bin/\fR, so that they may +be found by npm scripts when necessary\. +. +.SS "Global Installation" +If the \fBglobal\fR configuration is set to true, then npm will +install packages "globally"\. +. +.P +For global installation, packages are installed roughly the same way, +but using the folders described above\. +. +.SS "Cycles, Conflicts, and Folder Parsimony" +Cycles are handled using the property of node\'s module system that it +walks up the directories looking for \fBnode_modules\fR folders\. So, at every +stage, if a package is already installed in an ancestor \fBnode_modules\fR +folder, then it is not installed at the current location\. +. +.P +Consider the case above, where \fBfoo \-> bar \-> baz\fR\|\. Imagine if, in +addition to that, baz depended on bar, so you\'d have: \fBfoo \-> bar \-> baz \-> bar \-> baz \.\.\.\fR\|\. However, since the folder +structure is: \fBfoo/node_modules/bar/node_modules/baz\fR, there\'s no need to +put another copy of bar into \fB\|\.\.\./baz/node_modules\fR, since when it calls +require("bar"), it will get the copy that is installed in \fBfoo/node_modules/bar\fR\|\. +. +.P +This shortcut is only used if the exact same +version would be installed in multiple nested \fBnode_modules\fR folders\. It +is still possible to have \fBa/node_modules/b/node_modules/a\fR if the two +"a" packages are different versions\. However, without repeating the +exact same package multiple times, an infinite regress will always be +prevented\. +. +.P +Another optimization can be made by installing dependencies at the +highest level possible, below the localized "target" folder\. +. +.TP +Example +.Consider this dependency graph: +. +.IP "" 4 +. +.nf +foo ++\-\- blerg@1\.2\.5 ++\-\- bar@1\.2\.3 +| +\-\- blerg@1\.x (latest=1\.3\.7) +| +\-\- baz@2\.x +| | `\-\- quux@3\.x +| | `\-\- bar@1\.2\.3 (cycle) +| `\-\- asdf@* +`\-\- baz@1\.2\.3 + `\-\- quux@3\.x + `\-\- bar +. +.fi +. +.IP "" 0 +. +.P +In this case, we might expect a folder structure like this: +. +.IP "" 4 +. +.nf +foo ++\-\- node_modules + +\-\- blerg (1\.2\.5) <\-\-\-[A] + +\-\- bar (1\.2\.3) <\-\-\-[B] + | +\-\- node_modules + | | `\-\- baz (2\.0\.2) <\-\-\-[C] + | | `\-\- node_modules + | | `\-\- quux (3\.2\.0) + | `\-\- asdf (2\.3\.4) + `\-\- baz (1\.2\.3) <\-\-\-[D] + `\-\- node_modules + `\-\- quux (3\.2\.0) <\-\-\-[E] +. +.fi +. +.IP "" 0 +. +.P +Since foo depends directly on bar@1\.2\.3 and baz@1\.2\.3, those are +installed in foo\'s \fBnode_modules\fR folder\. +. +.P +Even though the latest copy of blerg is 1\.3\.7, foo has a specific +dependency on version 1\.2\.5\. So, that gets installed at [A]\. Since the +parent installation of blerg satisfie\'s bar\'s dependency on blerg@1\.x, +it does not install another copy under [B]\. +. +.P +Bar [B] also has dependencies on baz and asdf, so those are installed in +bar\'s \fBnode_modules\fR folder\. Because it depends on \fBbaz@2\.x\fR, it cannot +re\-use the \fBbaz@1\.2\.3\fR installed in the parent \fBnode_modules\fR folder [D], +and must install its own copy [C]\. +. +.P +Underneath bar, the \fBbaz\->quux\->bar\fR dependency creates a cycle\. +However, because \fBbar\fR is already in \fBquux\fR\'s ancestry [B], it does not +unpack another copy of bar into that folder\. +. +.P +Underneath \fBfoo\->baz\fR [D], quux\'s [E] folder tree is empty, because its +dependency on bar is satisfied by the parent folder copy installed at [B]\. +. +.P +For a graphical breakdown of what is installed where, use \fBnpm ls\fR\|\. +. +.SS "Publishing" +Upon publishing, npm will look in the \fBnode_modules\fR folder\. If any of +the items there are not in the \fBbundledDependencies\fR array, then they will +not be included in the package tarball\. +. +.P +This allows a package maintainer to install all of their dependencies +(and dev dependencies) locally, but only re\-publish those items that +cannot be found elsewhere\. See \fBnpm help json\fR for more information\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help json +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help pack +. +.IP "\(bu" 4 +npm help cache +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help publish +. +.IP "" 0 + diff --git a/deps/npm/man/man1/help-search.1 b/deps/npm/man/man1/help-search.1 new file mode 100644 index 00000000000..e079ac94598 --- /dev/null +++ b/deps/npm/man/man1/help-search.1 @@ -0,0 +1,59 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-HELP\-SEARCH" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-help-search\fR \-\- Search npm help documentation +. +.SH "SYNOPSIS" +. +.nf +npm help\-search some search terms +. +.fi +. +.SH "DESCRIPTION" +This command will search the npm markdown documentation files for the +terms provided, and then list the results, sorted by relevance\. +. +.P +If only one result is found, then it will show that help topic\. +. +.P +If the argument to \fBnpm help\fR is not a known help topic, then it will +call \fBhelp\-search\fR\|\. It is rarely if ever necessary to call this +command directly\. +. +.SH "CONFIGURATION" +. +.SS "long" +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "\(bu" 4 +Default false +. +.IP "" 0 +. +.P +If true, the "long" flag will cause help\-search to output context around +where the terms were found in the documentation\. +. +.P +If false, then help\-search will just list out the help topics found\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help npm +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help help +. +.IP "" 0 + diff --git a/deps/npm/man/man1/help.1 b/deps/npm/man/man1/help.1 new file mode 100644 index 00000000000..5637baadfd7 --- /dev/null +++ b/deps/npm/man/man1/help.1 @@ -0,0 +1,71 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-HELP" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-help\fR \-\- Get help on npm +. +.SH "SYNOPSIS" +. +.nf +npm help +npm help some search terms +. +.fi +. +.SH "DESCRIPTION" +If supplied a topic, then show the appropriate documentation page\. +. +.P +If the topic does not exist, or if multiple terms are provided, then run +the \fBhelp\-search\fR command to find a match\. Note that, if \fBhelp\-search\fR +finds a single subject, then it will run \fBhelp\fR on that topic, so unique +matches are equivalent to specifying a topic name\. +. +.SH "CONFIGURATION" +. +.SS "viewer" +. +.IP "\(bu" 4 +Default: "man" on Posix, "browser" on Windows +. +.IP "\(bu" 4 +Type: path +. +.IP "" 0 +. +.P +The program to use to view help content\. +. +.P +Set to \fB"browser"\fR to view html help content in the default web browser\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help npm +. +.IP "\(bu" 4 +README +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help json +. +.IP "\(bu" 4 +npm help help\-search +. +.IP "\(bu" 4 +npm help index +. +.IP "" 0 + diff --git a/deps/npm/man/man1/home.1 b/deps/npm/man/man1/home.1 new file mode 100644 index 00000000000..c63dd3cd9c3 --- /dev/null +++ b/deps/npm/man/man1/home.1 @@ -0,0 +1,68 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-DOCS" "1" "November 2011" "" "" +. +.SH "NAME" +\fBnpm-docs\fR \-\- Docs for a package in a web browser maybe +. +.SH "SYNOPSIS" +. +.nf +npm docs +npm home +. +.fi +. +.SH "DESCRIPTION" +This command tries to guess at the likely location of a package\'s +documentation URL, and then tries to open it using the \fB\-\-browser\fR +config param\. +. +.SH "CONFIGURATION" +. +.SS "browser" +. +.IP "\(bu" 4 +Default: OS X: \fB"open"\fR, others: \fB"google\-chrome"\fR +. +.IP "\(bu" 4 +Type: String +. +.IP "" 0 +. +.P +The browser that is called by the \fBnpm docs\fR command to open websites\. +. +.SS "registry" +. +.IP "\(bu" 4 +Default: https://registry\.npmjs\.org/ +. +.IP "\(bu" 4 +Type: url +. +.IP "" 0 +. +.P +The base URL of the npm package registry\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help view +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help registry +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help json +. +.IP "" 0 + diff --git a/deps/npm/man/man1/index.1 b/deps/npm/man/man1/index.1 new file mode 100644 index 00000000000..d2707f3548b --- /dev/null +++ b/deps/npm/man/man1/index.1 @@ -0,0 +1,277 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-INDEX" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-index\fR \-\- Index of all npm documentation +. +.SH "npm help README" + node package manager +. +.SH "npm help adduser" + Add a registry user account +. +.SH "npm help bin" + Display npm bin folder +. +.SH "npm help bugs" + Bugs for a package in a web browser maybe +. +.SH "npm help build" + Build a package +. +.SH "npm help bundle" + REMOVED +. +.SH "npm help cache" + Manipulates packages cache +. +.SH "npm help changelog" + Changes +. +.SH "npm help coding\-style" + npm\'s "funny" coding style +. +.SH "npm help completion" + Tab Completion for npm +. +.SH "npm help config" + Manage the npm configuration file +. +.SH "npm help deprecate" + Deprecate a version of a package +. +.SH "npm help developers" + Developer Guide +. +.SH "npm help docs" + Docs for a package in a web browser maybe +. +.SH "npm help edit" + Edit an installed package +. +.SH "npm help explore" + Browse an installed package +. +.SH "npm help faq" + Frequently Asked Questions +. +.SH "npm help folders" + Folder Structures Used by npm +. +.SH "npm help help\-search" + Search npm help documentation +. +.SH "npm help help" + Get help on npm +. +.SH "npm help init" + Interactively create a package\.json file +. +.SH "npm help install" + Install a package +. +.SH "npm help json" + Specifics of npm\'s package\.json handling +. +.SH "npm help link" + Symlink a package folder +. +.SH "npm help list" + List installed packages +. +.SH "npm help npm" + node package manager +. +.SH "npm help outdated" + Check for outdated packages +. +.SH "npm help owner" + Manage package owners +. +.SH "npm help pack" + Create a tarball from a package +. +.SH "npm help prefix" + Display prefix +. +.SH "npm help prune" + Remove extraneous packages +. +.SH "npm help publish" + Publish a package +. +.SH "npm help rebuild" + Rebuild a package +. +.SH "npm help registry" + The JavaScript Package Registry +. +.SH "npm help removing\-npm" + Cleaning the Slate +. +.SH "npm help restart" + Start a package +. +.SH "npm help root" + Display npm root +. +.SH "npm help run\-script" + Run arbitrary package scripts +. +.SH "npm help scripts" + How npm handles the "scripts" field +. +.SH "npm help search" + Search for packages +. +.SH "npm help semver" + The semantic versioner for npm +. +.SH "npm help star" + Mark your favorite packages +. +.SH "npm help start" + Start a package +. +.SH "npm help stop" + Stop a package +. +.SH "npm help submodule" + Add a package as a git submodule +. +.SH "npm help tag" + Tag a published version +. +.SH "npm help test" + Test a package +. +.SH "npm help uninstall" + Remove a package +. +.SH "npm help unpublish" + Remove a package from the registry +. +.SH "npm help update" + Update a package +. +.SH "npm help version" + Bump a package version +. +.SH "npm help view" + View registry info +. +.SH "npm help whoami" + Display npm username +. +.SH "npm apihelp bin" + Display npm bin folder +. +.SH "npm apihelp bugs" + Bugs for a package in a web browser maybe +. +.SH "npm apihelp commands" + npm commands +. +.SH "npm apihelp config" + Manage the npm configuration files +. +.SH "npm apihelp deprecate" + Deprecate a version of a package +. +.SH "npm apihelp docs" + Docs for a package in a web browser maybe +. +.SH "npm apihelp edit" + Edit an installed package +. +.SH "npm apihelp explore" + Browse an installed package +. +.SH "npm apihelp help\-search" + Search the help pages +. +.SH "npm apihelp init" + Interactively create a package\.json file +. +.SH "npm apihelp install" + install a package programmatically +. +.SH "npm apihelp link" + Symlink a package folder +. +.SH "npm apihelp load" + Load config settings +. +.SH "npm apihelp ls" + List installed packages +. +.SH "npm apihelp npm" + node package manager +. +.SH "npm apihelp outdated" + Check for outdated packages +. +.SH "npm apihelp owner" + Manage package owners +. +.SH "npm apihelp pack" + Create a tarball from a package +. +.SH "npm apihelp prefix" + Display prefix +. +.SH "npm apihelp prune" + Remove extraneous packages +. +.SH "npm apihelp publish" + Publish a package +. +.SH "npm apihelp rebuild" + Rebuild a package +. +.SH "npm apihelp restart" + Start a package +. +.SH "npm apihelp root" + Display npm root +. +.SH "npm apihelp run\-script" + Run arbitrary package scripts +. +.SH "npm apihelp search" + Search for packages +. +.SH "npm apihelp start" + Start a package +. +.SH "npm apihelp stop" + Stop a package +. +.SH "npm apihelp submodule" + Add a package as a git submodule +. +.SH "npm apihelp tag" + Tag a published version +. +.SH "npm apihelp test" + Test a package +. +.SH "npm apihelp uninstall" + uninstall a package programmatically +. +.SH "npm apihelp unpublish" + Remove a package from the registry +. +.SH "npm apihelp update" + Update a package +. +.SH "npm apihelp version" + Bump a package version +. +.SH "npm apihelp view" + View registry info +. +.SH "npm apihelp whoami" + Display npm username diff --git a/deps/npm/man/man1/init.1 b/deps/npm/man/man1/init.1 new file mode 100644 index 00000000000..19790f0bc30 --- /dev/null +++ b/deps/npm/man/man1/init.1 @@ -0,0 +1,40 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-INIT" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-init\fR \-\- Interactively create a package\.json file +. +.SH "SYNOPSIS" +. +.nf +npm init +. +.fi +. +.SH "DESCRIPTION" +This will ask you a bunch of questions, and then write a package\.json for you\. +. +.P +It attempts to make reasonable guesses about what you want things to be set to, +and then writes a package\.json file with the options you\'ve selected\. +. +.P +If you already have a package\.json file, it\'ll read that first, and default to +the options in there\. +. +.P +It is strictly additive, so it does not delete options from your package\.json +without a really good reason to do so\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help json +. +.IP "\(bu" 4 +npm help version +. +.IP "" 0 + diff --git a/deps/npm/man/man1/install.1 b/deps/npm/man/man1/install.1 new file mode 100644 index 00000000000..65a00f82271 --- /dev/null +++ b/deps/npm/man/man1/install.1 @@ -0,0 +1,374 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-INSTALL" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-install\fR \-\- Install a package +. +.SH "SYNOPSIS" +. +.nf +npm install (with no args in a package dir) +npm install +npm install +npm install +npm install +npm install @ +npm install @ +npm install @ +. +.fi +. +.SH "DESCRIPTION" +This command installs a package, and any packages that it depends on\. +. +.P +A \fBpackage\fR is: +. +.IP "\(bu" 4 +a) a folder containing a program described by a package\.json file +. +.IP "\(bu" 4 +b) a gzipped tarball containing (a) +. +.IP "\(bu" 4 +c) a url that resolves to (b) +. +.IP "\(bu" 4 +d) a \fB@\fR that is published on the registry with (c) +. +.IP "\(bu" 4 +e) a \fB@\fR that points to (d) +. +.IP "\(bu" 4 +f) a \fB\fR that has a "latest" tag satisfying (e) +. +.IP "\(bu" 4 +g) a \fB\fR that resolves to (b) +. +.IP "" 0 +. +.P +Even if you never publish your package, you can still get a lot of +benefits of using npm if you just want to write a node program (a), and +perhaps if you also want to be able to easily install it elsewhere +after packing it up into a tarball (b)\. +. +.IP "\(bu" 4 +\fBnpm install\fR (in package directory, no arguments): +Install the dependencies in the local node_modules folder\. +. +.IP +In global mode (ie, with \fB\-g\fR or \fB\-\-global\fR appended to the command), +it installs the current package context (ie, the current working +directory) as a global package\. +. +.IP "\(bu" 4 +\fBnpm install \fR: +Install a package that is sitting in a folder on the filesystem\. +. +.IP "\(bu" 4 +\fBnpm install \fR: +Install a package that is sitting on the filesystem\. Note: if you just want +to link a dev directory into your npm root, you can do this more easily by +using \fBnpm link\fR\|\. +. +.IP +Example: +. +.IP "" 4 +. +.nf +npm install \./package\.tgz +. +.fi +. +.IP "" 0 + +. +.IP "\(bu" 4 +\fBnpm install \fR: +Fetch the tarball url, and then install it\. In order to distinguish between +this and other options, the argument must start with "http://" or "https://" +. +.IP +Example: +. +.IP "" 4 +. +.nf +npm install https://github\.com/indexzero/forever/tarball/v0\.5\.6 +. +.fi +. +.IP "" 0 + +. +.IP "\(bu" 4 +\fBnpm install \fR: +Do a \fB@\fR install, where \fB\fR is the "tag" config\. (See \fBnpm help config\fR) +. +.IP +Example: +. +.IP "" 4 +. +.nf +npm install sax +. +.fi +. +.IP "" 0 +. +.IP +\fBNote\fR: If there is a file or folder named \fB\fR in the current +working directory, then it will try to install that, and only try to +fetch the package by name if it is not valid\. +. +.IP "\(bu" 4 +\fBnpm install @\fR: +Install the version of the package that is referenced by the specified tag\. +If the tag does not exist in the registry data for that package, then this +will fail\. +. +.IP +Example: +. +.IP "" 4 +. +.nf +npm install sax@latest +. +.fi +. +.IP "" 0 + +. +.IP "\(bu" 4 +\fBnpm install @\fR: +Install the specified version of the package\. This will fail if the version +has not been published to the registry\. +. +.IP +Example: +. +.IP "" 4 +. +.nf +npm install sax@0\.1\.1 +. +.fi +. +.IP "" 0 + +. +.IP "\(bu" 4 +\fBnpm install @\fR: +Install a version of the package matching the specified version range\. This +will follow the same rules for resolving dependencies described in \fBnpm help json\fR\|\. +. +.IP +Note that most version ranges must be put in quotes so that your shell will +treat it as a single argument\. +. +.IP +Example: +. +.IP "" 4 +. +.nf +npm install sax@">=0\.1\.0 <0\.2\.0" +. +.fi +. +.IP "" 0 + +. +.IP "\(bu" 4 +\fBnpm install \fR: +. +.IP +Install a package by cloning a git remote url\. The format of the git +url is: +. +.IP "" 4 +. +.nf +://[@][#] +. +.fi +. +.IP "" 0 +. +.IP +\fB\fR is one of \fBgit\fR, \fBgit+ssh\fR, \fBgit+http\fR, or \fBgit+https\fR\|\. If no \fB\fR is specified, then \fBmaster\fR is +used\. +. +.IP +Examples: +. +.IP "" 4 +. +.nf +git+ssh://git@github\.com:isaacs/npm\.git#v1\.0\.27 +git+https://isaacs@github\.com/isaacs/npm\.git +git://github\.com/isaacs/npm\.git#v1\.0\.27 +. +.fi +. +.IP "" 0 + +. +.IP "" 0 +. +.P +You may combine multiple arguments, and even multiple types of arguments\. +For example: +. +.IP "" 4 +. +.nf +npm install sax@">=0\.1\.0 <0\.2\.0" bench supervisor +. +.fi +. +.IP "" 0 +. +.P +The \fB\-\-tag\fR argument will apply to all of the specified install targets\. +. +.P +The \fB\-\-force\fR argument will force npm to fetch remote resources even if a +local copy exists on disk\. +. +.IP "" 4 +. +.nf +npm install sax \-\-force +. +.fi +. +.IP "" 0 +. +.P +The \fB\-\-global\fR argument will cause npm to install the package globally +rather than locally\. See \fBnpm help global\fR\|\. +. +.P +The \fB\-\-link\fR argument will cause npm to link global installs into the +local space in some cases\. +. +.P +See \fBnpm help config\fR\|\. Many of the configuration params have some +effect on installation, since that\'s most of what npm does\. +. +.SH "ALGORITHM" +To install a package, npm uses the following algorithm: +. +.IP "" 4 +. +.nf +install(where, what, family, ancestors) +fetch what, unpack to /node_modules/ +for each dep in what\.dependencies + resolve dep to precise version +for each dep@version in what\.dependencies + not in /node_modules//node_modules/* + and not in + add precise version deps to + install(/node_modules/, dep, family) +. +.fi +. +.IP "" 0 +. +.P +For this \fBpackage{dep}\fR structure: \fBA{B,C}, B{C}, C{D}\fR, +this algorithm produces: +. +.IP "" 4 +. +.nf +A ++\-\- B +`\-\- C + `\-\- D +. +.fi +. +.IP "" 0 +. +.P +That is, the dependency from B to C is satisfied by the fact that A +already caused C to be installed at a higher level\. +. +.P +See npm help folders for a more detailed description of the specific +folder structures that npm creates\. +. +.SS "Limitations of npm\'s Install Algorithm" +There are some very rare and pathological edge\-cases where a cycle can +cause npm to try to install a never\-ending tree of packages\. Here is +the simplest case: +. +.IP "" 4 +. +.nf +A \-> B \-> A\' \-> B\' \-> A \-> B \-> A\' \-> B\' \-> A \-> \.\.\. +. +.fi +. +.IP "" 0 +. +.P +where \fBA\fR is some version of a package, and \fBA\'\fR is a different version +of the same package\. Because \fBB\fR depends on a different version of \fBA\fR +than the one that is already in the tree, it must install a separate +copy\. The same is true of \fBA\'\fR, which must install \fBB\'\fR\|\. Because \fBB\'\fR +depends on the original version of \fBA\fR, which has been overridden, the +cycle falls into infinite regress\. +. +.P +To avoid this situation, npm flat\-out refuses to install any \fBname@version\fR that is already present anywhere in the tree of package +folder ancestors\. A more correct, but more complex, solution would be +to symlink the existing version into the new location\. If this ever +affects a real use\-case, it will be investigated\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help update +. +.IP "\(bu" 4 +npm help link +. +.IP "\(bu" 4 +npm help rebuild +. +.IP "\(bu" 4 +npm help scripts +. +.IP "\(bu" 4 +npm help build +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help registry +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help tag +. +.IP "\(bu" 4 +npm help rm +. +.IP "" 0 + diff --git a/deps/npm/man/man1/json.1 b/deps/npm/man/man1/json.1 new file mode 100644 index 00000000000..19902851e4d --- /dev/null +++ b/deps/npm/man/man1/json.1 @@ -0,0 +1,676 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-JSON" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-json\fR \-\- Specifics of npm\'s package\.json handling +. +.SH "DESCRIPTION" +This document is all you need to know about what\'s required in your package\.json +file\. It must be actual JSON, not just a JavaScript object literal\. +. +.P +A lot of the behavior described in this document is affected by the config +settings described in \fBnpm help config\fR\|\. +. +.SH "DEFAULT VALUES" +npm will default some values based on package contents\. +. +.IP "\(bu" 4 +\fB"scripts": {"start": "node server\.js"}\fR +. +.IP +If there is a \fBserver\.js\fR file in the root of your package, then npm +will default the \fBstart\fR command to \fBnode server\.js\fR\|\. +. +.IP "\(bu" 4 +\fB"scripts":{"preinstall": "node\-waf clean || true; node\-waf configure build"}\fR +. +.IP +If there is a \fBwscript\fR file in the root of your package, npm will +default the \fBpreinstall\fR command to compile using node\-waf\. +. +.IP "\(bu" 4 +\fB"contributors": [\.\.\.]\fR +. +.IP +If there is an \fBAUTHORS\fR file in the root of your package, npm will +treat each line as a \fBName (url)\fR format, where email and url +are optional\. Lines which start with a \fB#\fR or are blank, will be +ignored\. +. +.IP "" 0 +. +.SH "name" +The \fImost\fR important things in your package\.json are the name and version fields\. +Those are actually required, and your package won\'t install without +them\. The name and version together form an identifier that is assumed +to be completely unique\. Changes to the package should come along with +changes to the version\. +. +.P +The name is what your thing is called\. Some tips: +. +.IP "\(bu" 4 +Don\'t put "js" or "node" in the name\. It\'s assumed that it\'s js, since you\'re +writing a package\.json file, and you can specify the engine using the "engines" +field\. (See below\.) +. +.IP "\(bu" 4 +The name ends up being part of a URL, an argument on the command line, and a +folder name\. Any name with non\-url\-safe characters will be rejected\. +Also, it can\'t start with a dot or an underscore\. +. +.IP "\(bu" 4 +The name will probably be passed as an argument to require(), so it should +be something short, but also reasonably descriptive\. +. +.IP "\(bu" 4 +You may want to check the npm registry to see if there\'s something by that name +already, before you get too attached to it\. http://registry\.npmjs\.org/ +. +.IP "" 0 +. +.SH "version" +The \fImost\fR important things in your package\.json are the name and version fields\. +Those are actually required, and your package won\'t install without +them\. The name and version together form an identifier that is assumed +to be completely unique\. Changes to the package should come along with +changes to the version\. +. +.P +Version must be parseable by node\-semver \fIhttps://github\.com/isaacs/node\-semver\fR, which is bundled +with npm as a dependency\. (\fBnpm install semver\fR to use it yourself\.) +. +.P +Here\'s how npm\'s semver implementation deviates from what\'s on semver\.org: +. +.IP "\(bu" 4 +Versions can start with "v" +. +.IP "\(bu" 4 +A numeric item separated from the main three\-number version by a hyphen +will be interpreted as a "build" number, and will \fIincrease\fR the version\. +But, if the tag is not a number separated by a hyphen, then it\'s treated +as a pre\-release tag, and is \fIless than\fR the version without a tag\. +So, \fB0\.1\.2\-7 > 0\.1\.2\-7\-beta > 0\.1\.2\-6 > 0\.1\.2 > 0\.1\.2beta\fR +. +.IP "" 0 +. +.P +This is a little bit confusing to explain, but matches what you see in practice +when people create tags in git like "v1\.2\.3" and then do "git describe" to generate +a patch version\. +. +.SH "description" +Put a description in it\. It\'s a string\. This helps people discover your +package, as it\'s listed in \fBnpm search\fR\|\. +. +.SH "keywords" +Put keywords in it\. It\'s an array of strings\. This helps people +discover your package as it\'s listed in \fBnpm search\fR\|\. +. +.SH "homepage" +The url to the project homepage\. +. +.P +\fBNOTE\fR: This is \fInot\fR the same as "url"\. If you put a "url" field, +then the registry will think it\'s a redirection to your package that has +been published somewhere else, and spit at you\. +. +.P +Literally\. Spit\. I\'m so not kidding\. +. +.SH "bugs" +The url to your project\'s issue tracker and / or the email address to which +issues should be reported\. These are helpful for people who encounter issues +with your package\. +. +.P +It should look like this: +. +.IP "" 4 +. +.nf +{ "url" : "http://github\.com/owner/project/issues" +, "email" : "project@hostname\.com" +} +. +.fi +. +.IP "" 0 +. +.P +You can specify either one or both values\. If you want to provide only a url, +you can specify the value for "bugs" as a simple string instead of an object\. +. +.P +If a url is provided, it will be used by the \fBnpm bugs\fR command\. +. +.SH "people fields: author, contributors" +The "author" is one person\. "contributors" is an array of people\. A "person" +is an object with a "name" field and optionally "url" and "email", like this: +. +.IP "" 4 +. +.nf +{ "name" : "Barney Rubble" +, "email" : "b@rubble\.com" +, "url" : "http://barnyrubble\.tumblr\.com/" +} +. +.fi +. +.IP "" 0 +. +.P +Or you can shorten that all into a single string, and npm will parse it for you: +. +.IP "" 4 +. +.nf +"Barney Rubble (http://barnyrubble\.tumblr\.com/) +. +.fi +. +.IP "" 0 +. +.P +Both email and url are optional either way\. +. +.P +npm also sets a top\-level "maintainers" field with your npm user info\. +. +.SH "files" +The "files" field is an array of files to include in your project\. If +you name a folder in the array, then it will also include the files +inside that folder\. (Unless they would be ignored by another rule\.) +. +.P +You can also provide a "\.npmignore" file in the root of your package, +which will keep files from being included, even if they would be picked +up by the files array\. The "\.npmignore" file works just like a +"\.gitignore"\. +. +.SH "main" +The main field is a module ID that is the primary entry point to your program\. +That is, if your package is named \fBfoo\fR, and a user installs it, and then does \fBrequire("foo")\fR, then your main module\'s exports object will be returned\. +. +.P +This should be a module ID relative to the root of your package folder\. +. +.P +For most modules, it makes the most sense to have a main script and often not +much else\. +. +.SH "bin" +A lot of packages have one or more executable files that they\'d like to +install into the PATH\. npm makes this pretty easy (in fact, it uses this +feature to install the "npm" executable\.) +. +.P +To use this, supply a \fBbin\fR field in your package\.json which is a map of +command name to local file name\. On install, npm will symlink that file into \fBprefix/bin\fR for global installs, or \fB\|\./node_modules/\.bin/\fR for local +installs\. +. +.P +For example, npm has this: +. +.IP "" 4 +. +.nf +{ "bin" : { "npm" : "\./cli\.js" } } +. +.fi +. +.IP "" 0 +. +.P +So, when you install npm, it\'ll create a symlink from the \fBcli\.js\fR script to \fB/usr/local/bin/npm\fR\|\. +. +.P +If you have a single executable, and its name should be the name +of the package, then you can just supply it as a string\. For example: +. +.IP "" 4 +. +.nf +{ "name": "my\-program" +, "version": "1\.2\.5" +, "bin": "\./path/to/program" } +. +.fi +. +.IP "" 0 +. +.P +would be the same as this: +. +.IP "" 4 +. +.nf +{ "name": "my\-program" +, "version": "1\.2\.5" +, "bin" : { "my\-program" : "\./path/to/program" } } +. +.fi +. +.IP "" 0 +. +.SH "man" +Specify either a single file or an array of filenames to put in place for the \fBman\fR program to find\. +. +.P +If only a single file is provided, then it\'s installed such that it is the +result from \fBman \fR, regardless of its actual filename\. For example: +. +.IP "" 4 +. +.nf +{ "name" : "foo" +, "version" : "1\.2\.3" +, "description" : "A packaged foo fooer for fooing foos" +, "main" : "foo\.js" +, "man" : "\./man/doc\.1" +} +. +.fi +. +.IP "" 0 +. +.P +would link the \fB\|\./man/doc\.1\fR file in such that it is the target for \fBman foo\fR +. +.P +If the filename doesn\'t start with the package name, then it\'s prefixed\. +So, this: +. +.IP "" 4 +. +.nf +{ "name" : "foo" +, "version" : "1\.2\.3" +, "description" : "A packaged foo fooer for fooing foos" +, "main" : "foo\.js" +, "man" : [ "\./man/foo\.1", "\./man/bar\.1" ] +} +. +.fi +. +.IP "" 0 +. +.P +will create files to do \fBman foo\fR and \fBman foo\-bar\fR\|\. +. +.P +Man files must end with a number, and optionally a \fB\|\.gz\fR suffix if they are +compressed\. The number dictates which man section the file is installed into\. +. +.IP "" 4 +. +.nf +{ "name" : "foo" +, "version" : "1\.2\.3" +, "description" : "A packaged foo fooer for fooing foos" +, "main" : "foo\.js" +, "man" : [ "\./man/foo\.1", "\./man/foo\.2" ] +} +. +.fi +. +.IP "" 0 +. +.P +will create entries for \fBman foo\fR and \fBman 2 foo\fR +. +.SH "directories" +The CommonJS Packages \fIhttp://wiki\.commonjs\.org/wiki/Packages/1\.0\fR spec details a +few ways that you can indicate the structure of your package using a \fBdirectories\fR +hash\. If you look at npm\'s package\.json \fIhttp://registry\.npmjs\.org/npm/latest\fR, +you\'ll see that it has directories for doc, lib, and man\. +. +.P +In the future, this information may be used in other creative ways\. +. +.SS "directories\.lib" +Tell people where the bulk of your library is\. Nothing special is done +with the lib folder in any way, but it\'s useful meta info\. +. +.SS "directories\.bin" +If you specify a "bin" directory, then all the files in that folder will +be used as the "bin" hash\. +. +.P +If you have a "bin" hash already, then this has no effect\. +. +.SS "directories\.man" +A folder that is full of man pages\. Sugar to generate a "man" array by +walking the folder\. +. +.SS "directories\.doc" +Put markdown files in here\. Eventually, these will be displayed nicely, +maybe, someday\. +. +.SS "directories\.example" +Put example scripts in here\. Someday, it might be exposed in some clever way\. +. +.SH "repository" +Specify the place where your code lives\. This is helpful for people who +want to contribute\. If the git repo is on github, then the \fBnpm docs\fR +command will be able to find you\. +. +.P +Do it like this: +. +.IP "" 4 +. +.nf +"repository" : + { "type" : "git" + , "url" : "http://github\.com/isaacs/npm\.git" + } +"repository" : + { "type" : "svn" + , "url" : "http://v8\.googlecode\.com/svn/trunk/" + } +. +.fi +. +.IP "" 0 +. +.P +The URL should be a publicly available (perhaps read\-only) url that can be handed +directly to a VCS program without any modification\. It should not be a url to an +html project page that you put in your browser\. It\'s for computers\. +. +.SH "scripts" +The "scripts" member is an object hash of script commands that are run +at various times in the lifecycle of your package\. The key is the lifecycle +event, and the value is the command to run at that point\. +. +.P +See \fBnpm help scripts\fR to find out more about writing package scripts\. +. +.SH "config" +A "config" hash can be used to set configuration +parameters used in package scripts that persist across upgrades\. For +instance, if a package had the following: +. +.IP "" 4 +. +.nf +{ "name" : "foo" +, "config" : { "port" : "8080" } } +. +.fi +. +.IP "" 0 +. +.P +and then had a "start" command that then referenced the \fBnpm_package_config_port\fR environment variable, then the user could +override that by doing \fBnpm config set foo:port 8001\fR\|\. +. +.P +See \fBnpm help config\fR and \fBnpm help scripts\fR for more on package +configs\. +. +.SH "dependencies" +Dependencies are specified with a simple hash of package name to version +range\. The version range is EITHER a string which has one or more +space\-separated descriptors, OR a range like "fromVersion \- toVersion" +. +.P +\fBPlease do not put test harnesses in your \fBdependencies\fR hash\.\fR See \fBdevDependencies\fR, below\. +. +.P +Version range descriptors may be any of the following styles, where "version" +is a semver compatible version identifier\. +. +.IP "\(bu" 4 +\fBversion\fR Must match \fBversion\fR exactly +. +.IP "\(bu" 4 +\fB=version\fR Same as just \fBversion\fR +. +.IP "\(bu" 4 +\fB>version\fR Must be greater than \fBversion\fR +. +.IP "\(bu" 4 +\fB>=version\fR etc +. +.IP "\(bu" 4 +\fB=version1 <=version2\fR\|\. +. +.IP "\(bu" 4 +\fBrange1 || range2\fR Passes if either range1 or range2 are satisfied\. +. +.IP "" 0 +. +.P +For example, these are all valid: +. +.IP "" 4 +. +.nf +{ "dependencies" : + { "foo" : "1\.0\.0 \- 2\.9999\.9999" + , "bar" : ">=1\.0\.2 <2\.1\.2" + , "baz" : ">1\.0\.2 <=2\.3\.4" + , "boo" : "2\.0\.1" + , "qux" : "<1\.0\.0 || >=2\.3\.1 <2\.4\.5 || >=2\.5\.2 <3\.0\.0" + , "asd" : "http://asdf\.com/asdf\.tar\.gz" + , "til" : "~1\.2" + , "elf" : "~1\.2\.3" + , "two" : "2\.x" + , "thr" : "3\.3\.x" + } +} +. +.fi +. +.IP "" 0 +. +.SS "Tilde Version Ranges" +A range specifier starting with a tilde \fB~\fR character is matched against +a version in the following fashion\. +. +.IP "\(bu" 4 +The version must be at least as high as the range\. +. +.IP "\(bu" 4 +The version must be less than the next major revision above the range\. +. +.IP "" 0 +. +.P +For example, the following are equivalent: +. +.IP "\(bu" 4 +\fB"~1\.2\.3" = ">=1\.2\.3 <1\.3\.0"\fR +. +.IP "\(bu" 4 +\fB"~1\.2" = ">=1\.2\.0 <2\.0\.0"\fR +. +.IP "\(bu" 4 +\fB"~1" = ">=1\.0\.0 <2\.0\.0"\fR +. +.IP "" 0 +. +.SS "X Version Ranges" +An "x" in a version range specifies that the version number must start +with the supplied digits, but any digit may be used in place of the x\. +. +.P +The following are equivalent: +. +.IP "\(bu" 4 +\fB"1\.2\.x" = ">=1\.2\.0 <1\.3\.0"\fR +. +.IP "\(bu" 4 +\fB"1\.x\.x" = ">=1\.0\.0 <2\.0\.0"\fR +. +.IP "\(bu" 4 +\fB"1\.2" = "1\.2\.x"\fR +. +.IP "\(bu" 4 +\fB"1\.x" = "1\.x\.x"\fR +. +.IP "\(bu" 4 +\fB"1" = "1\.x\.x"\fR +. +.IP "" 0 +. +.P +You may not supply a comparator with a version containing an x\. Any +digits after the first "x" are ignored\. +. +.SS "URLs as Dependencies" +Starting with npm version 0\.2\.14, you may specify a tarball URL in place +of a version range\. +. +.P +This tarball will be downloaded and installed locally to your package at +install time\. +. +.SH "devDependencies" +If someone is planning on downloading and using your module in their +program, then they probably don\'t want or need to download and build +the external test or documentation framework that you use\. +. +.P +In this case, it\'s best to list these additional items in a \fBdevDependencies\fR hash\. +. +.P +These things will be installed whenever the \fB\-\-dev\fR configuration flag +is set\. This flag is set automatically when doing \fBnpm link\fR, and can +be managed like any other npm configuration param\. See \fBnpm help config\fR +for more on the topic\. +. +.SH "bundledDependencies" +Array of package names that will be bundled when publishing the package\. +. +.P +If this is spelled \fB"bundleDependencies"\fR, then that is also honorable\. +. +.SH "engines" +You can specify the version of +node that your stuff works on: +. +.IP "" 4 +. +.nf +{ "engines" : { "node" : ">=0\.1\.27 <0\.1\.30" } } +. +.fi +. +.IP "" 0 +. +.P +And, like with dependencies, if you don\'t specify the version (or if you +specify "*" as the version), then any version of node will do\. +. +.P +If you specify an "engines" field, then npm will require that "node" be +somewhere on that list\. If "engines" is omitted, then npm will just assume +that it works on node\. +. +.P +You can also use the "engines" field to specify which versions of npm +are capable of properly installing your program\. For example: +. +.IP "" 4 +. +.nf +{ "engines" : { "npm" : "~1\.0\.20" } } +. +.fi +. +.IP "" 0 +. +.SH "preferGlobal" +If your package is primarily a command\-line application that should be +installed globally, then set this value to \fBtrue\fR to provide a warning +if it is installed locally\. +. +.P +It doesn\'t actually prevent users from installing it locally, but it +does help prevent some confusion if it doesn\'t work as expected\. +. +.SH "private" +If you set \fB"private": true\fR in your package\.json, then npm will refuse +to publish it\. +. +.P +This is a way to prevent accidental publication of private repositories\. +If you would like to ensure that a given package is only ever published +to a speciic registry (for example, an internal registry), +then use the \fBpublishConfig\fR hash described below +to override the \fBregistry\fR config param at publish\-time\. +. +.SH "publishConfig" +This is a set of config values that will be used at publish\-time\. It\'s +especially handy if you want to set the tag or registry, so that you can +ensure that a given package is not tagged with "latest" or published to +the global public registry by default\. +. +.P +Any config values can be overridden, but of course only "tag" and +"registry" probably matter for the purposes of publishing\. +. +.P +See \fBnpm help config\fR to see the list of config options that can be +overridden\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help semver +. +.IP "\(bu" 4 +npm help init +. +.IP "\(bu" 4 +npm help version +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help help +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help rm +. +.IP "" 0 + diff --git a/deps/npm/man/man1/link.1 b/deps/npm/man/man1/link.1 new file mode 100644 index 00000000000..6c4e90e31f0 --- /dev/null +++ b/deps/npm/man/man1/link.1 @@ -0,0 +1,108 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-LINK" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-link\fR \-\- Symlink a package folder +. +.SH "SYNOPSIS" +. +.nf +npm link (in package folder) +npm link +. +.fi +. +.SH "DESCRIPTION" +Package linking is a two\-step process\. +. +.P +First, \fBnpm link\fR in a package folder will create a globally\-installed +symbolic link from \fBprefix/package\-name\fR to the current folder\. +. +.P +Next, in some other location, \fBnpm link package\-name\fR will create a +symlink from the local \fBnode_modules\fR folder to the global symlink\. +. +.P +When creating tarballs for \fBnpm publish\fR, the linked packages are +"snapshotted" to their current state by resolving the symbolic links\. +. +.P +This is +handy for installing your own stuff, so that you can work on it and test it +iteratively without having to continually rebuild\. +. +.P +For example: +. +.IP "" 4 +. +.nf +cd ~/projects/node\-redis # go into the package directory +npm link # creates global link +cd ~/projects/node\-bloggy # go into some other package directory\. +npm link redis # link\-install the package +. +.fi +. +.IP "" 0 +. +.P +Now, any changes to ~/projects/node\-redis will be reflected in +~/projects/node\-bloggy/node_modules/redis/ +. +.P +You may also shortcut the two steps in one\. For example, to do the +above use\-case in a shorter way: +. +.IP "" 4 +. +.nf +cd ~/projects/node\-bloggy # go into the dir of your main project +npm link \.\./node\-redis # link the dir of your dependency +. +.fi +. +.IP "" 0 +. +.P +The second line is the equivalent of doing: +. +.IP "" 4 +. +.nf +(cd \.\./node\-redis; npm link) +npm link redis +. +.fi +. +.IP "" 0 +. +.P +That is, it first creates a global link, and then links the global +installation target into your project\'s \fBnode_modules\fR folder\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help developers +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help json +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help config +. +.IP "" 0 + diff --git a/deps/npm/man/man1/list.1 b/deps/npm/man/man1/list.1 new file mode 100644 index 00000000000..dcfbea0f2c2 --- /dev/null +++ b/deps/npm/man/man1/list.1 @@ -0,0 +1,99 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-LS" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-ls\fR \-\- List installed packages +. +.SH "SYNOPSIS" +. +.nf +npm list +npm ls +npm la +npm ll +. +.fi +. +.SH "DESCRIPTION" +This command will print to stdout all the versions of packages that are +installed, as well as their dependencies, in a tree\-structure\. +. +.P +It does not take positional arguments, though you may set config flags +like with any other command, such as \fB\-g\fR to list global packages\. +. +.P +It will print out extraneous, missing, and invalid packages\. +. +.P +When run as \fBll\fR or \fBla\fR, it shows extended information by default\. +. +.SH "CONFIGURATION" +. +.SS "long" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Show extended information\. +. +.SS "parseable" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Show parseable output instead of tree view\. +. +.SS "global" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +List packages in the global install prefix instead of in the current +project\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help link +. +.IP "\(bu" 4 +npm help prune +. +.IP "\(bu" 4 +npm help outdated +. +.IP "\(bu" 4 +npm help update +. +.IP "" 0 + diff --git a/deps/npm/man/man1/ln.1 b/deps/npm/man/man1/ln.1 new file mode 100644 index 00000000000..74bf729b505 --- /dev/null +++ b/deps/npm/man/man1/ln.1 @@ -0,0 +1,108 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-LINK" "1" "November 2011" "" "" +. +.SH "NAME" +\fBnpm-link\fR \-\- Symlink a package folder +. +.SH "SYNOPSIS" +. +.nf +npm link (in package folder) +npm link +. +.fi +. +.SH "DESCRIPTION" +Package linking is a two\-step process\. +. +.P +First, \fBnpm link\fR in a package folder will create a globally\-installed +symbolic link from \fBprefix/package\-name\fR to the current folder\. +. +.P +Next, in some other location, \fBnpm link package\-name\fR will create a +symlink from the local \fBnode_modules\fR folder to the global symlink\. +. +.P +When creating tarballs for \fBnpm publish\fR, the linked packages are +"snapshotted" to their current state by resolving the symbolic links\. +. +.P +This is +handy for installing your own stuff, so that you can work on it and test it +iteratively without having to continually rebuild\. +. +.P +For example: +. +.IP "" 4 +. +.nf +cd ~/projects/node\-redis # go into the package directory +npm link # creates global link +cd ~/projects/node\-bloggy # go into some other package directory\. +npm link redis # link\-install the package +. +.fi +. +.IP "" 0 +. +.P +Now, any changes to ~/projects/node\-redis will be reflected in +~/projects/node\-bloggy/node_modules/redis/ +. +.P +You may also shortcut the two steps in one\. For example, to do the +above use\-case in a shorter way: +. +.IP "" 4 +. +.nf +cd ~/projects/node\-bloggy # go into the dir of your main project +npm link \.\./node\-redis # link the dir of your dependency +. +.fi +. +.IP "" 0 +. +.P +The second line is the equivalent of doing: +. +.IP "" 4 +. +.nf +(cd \.\./node\-redis; npm link) +npm link redis +. +.fi +. +.IP "" 0 +. +.P +That is, it first creates a global link, and then links the global +installation target into your project\'s \fBnode_modules\fR folder\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help developers +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help json +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help config +. +.IP "" 0 + diff --git a/deps/npm/man/man1/ls.1 b/deps/npm/man/man1/ls.1 new file mode 100644 index 00000000000..b4412567c4a --- /dev/null +++ b/deps/npm/man/man1/ls.1 @@ -0,0 +1,99 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-LS" "1" "November 2011" "" "" +. +.SH "NAME" +\fBnpm-ls\fR \-\- List installed packages +. +.SH "SYNOPSIS" +. +.nf +npm list +npm ls +npm la +npm ll +. +.fi +. +.SH "DESCRIPTION" +This command will print to stdout all the versions of packages that are +installed, as well as their dependencies, in a tree\-structure\. +. +.P +It does not take positional arguments, though you may set config flags +like with any other command, such as \fB\-g\fR to list global packages\. +. +.P +It will print out extraneous, missing, and invalid packages\. +. +.P +When run as \fBll\fR or \fBla\fR, it shows extended information by default\. +. +.SH "CONFIGURATION" +. +.SS "long" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Show extended information\. +. +.SS "parseable" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +Show parseable output instead of tree view\. +. +.SS "global" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +List packages in the global install prefix instead of in the current +project\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help link +. +.IP "\(bu" 4 +npm help prune +. +.IP "\(bu" 4 +npm help outdated +. +.IP "\(bu" 4 +npm help update +. +.IP "" 0 + diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 new file mode 100644 index 00000000000..fd31e7ab0bd --- /dev/null +++ b/deps/npm/man/man1/npm.1 @@ -0,0 +1,227 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm\fR \-\- node package manager +. +.SH "SYNOPSIS" +. +.nf +npm [args] +. +.fi +. +.SH "VERSION" +1.1.0-alpha-6 +. +.SH "DESCRIPTION" +npm is the package manager for the Node JavaScript platform\. It puts +modules in place so that node can find them, and manages dependency +conflicts intelligently\. +. +.P +It is extremely configurable to support a wide variety of use cases\. +Most commonly, it is used to publish, discover, install, and develop node +programs\. +. +.P +Run \fBnpm help\fR to get a list of available commands\. +. +.SH "INTRODUCTION" +You probably got npm because you want to install stuff\. +. +.P +Use \fBnpm install blerg\fR to install the latest version of "blerg"\. Check out \fBnpm help install\fR for more info\. It can do a lot of stuff\. +. +.P +Use the \fBnpm search\fR command to show everything that\'s available\. +Use \fBnpm ls\fR to show everything you\'ve installed\. +. +.SH "DIRECTORIES" +See \fBnpm help folders\fR to learn about where npm puts stuff\. +. +.P +In particular, npm has two modes of operation: +. +.IP "\(bu" 4 +global mode: +. +.br +npm installs packages into the install prefix at \fBprefix/lib/node_modules\fR and bins are installed in \fBprefix/bin\fR\|\. +. +.IP "\(bu" 4 +local mode: +. +.br +npm installs packages into the current project directory, which +defaults to the current working directory\. Packages are installed to \fB\|\./node_modules\fR, and bins are installed to \fB\|\./node_modules/\.bin\fR\|\. +. +.IP "" 0 +. +.P +Local mode is the default\. Use \fB\-\-global\fR or \fB\-g\fR on any command to +operate in global mode instead\. +. +.SH "DEVELOPER USAGE" +If you\'re using npm to develop and publish your code, check out the +following help topics: +. +.IP "\(bu" 4 +json: +Make a package\.json file\. See \fBnpm help json\fR\|\. +. +.IP "\(bu" 4 +link: +For linking your current working code into Node\'s path, so that you +don\'t have to reinstall every time you make a change\. Use \fBnpm link\fR to do this\. +. +.IP "\(bu" 4 +install: +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 \fBnpm install\fR +. +.IP "\(bu" 4 +adduser: +Create an account or log in\. Creditials are stored in the +user config file\. +. +.IP "\(bu" 4 +publish: +Use the \fBnpm publish\fR command to upload your code to the registry\. +. +.IP "" 0 +. +.SH "CONFIGURATION" +npm is extremely configurable\. It reads its configuration options from +5 places\. +. +.IP "\(bu" 4 +Command line switches: +. +.br +Set a config with \fB\-\-key val\fR\|\. All keys take a value, even if they +are booleans (the config parser doesn\'t know what the options are at +the time of parsing\.) If no value is provided, then the option is set +to boolean \fBtrue\fR\|\. +. +.IP "\(bu" 4 +Environment Variables: +. +.br +Set any config by prefixing the name in an environment variable with \fBnpm_config_\fR\|\. For example, \fBexport npm_config_key=val\fR\|\. +. +.IP "\(bu" 4 +User Configs: +. +.br +The file at $HOME/\.npmrc is an ini\-formatted list of configs\. If +present, it is parsed\. If the \fBuserconfig\fR option is set in the cli +or env, then that will be used instead\. +. +.IP "\(bu" 4 +Global Configs: +. +.br +The file found at \.\./etc/npmrc (from the node executable, by default +this resolves to /usr/local/etc/npmrc) will be parsed if it is found\. +If the \fBglobalconfig\fR option is set in the cli, env, or user config, +then that file is parsed instead\. +. +.IP "\(bu" 4 +Defaults: +. +.br +npm\'s default configuration options are defined in +lib/utils/config\-defs\.js\. These must not be changed\. +. +.IP "" 0 +. +.P +See \fBnpm help config\fR for much much more information\. +. +.SH "CONTRIBUTIONS" +Patches welcome! +. +.IP "\(bu" 4 +code: +Read through \fBnpm help coding\-style\fR if you plan to submit code\. +You don\'t have to agree with it, but you do have to follow it\. +. +.IP "\(bu" 4 +docs: +If you find an error in the documentation, edit the appropriate markdown +file in the "doc" folder\. (Don\'t worry about generating the man page\.) +. +.IP "" 0 +. +.P +Contributors are listed in npm\'s \fBpackage\.json\fR file\. You can view them +easily by doing \fBnpm view npm contributors\fR\|\. +. +.P +If you would like to contribute, but don\'t know what to work on, check +the issues list or ask on the mailing list\. +. +.IP "\(bu" 4 +\fIhttp://github\.com/isaacs/npm/issues\fR +. +.IP "\(bu" 4 +\fInpm\-@googlegroups\.com\fR +. +.IP "" 0 +. +.SH "BUGS" +When you find issues, please report them: +. +.IP "\(bu" 4 +web: \fIhttp://github\.com/isaacs/npm/issues\fR +. +.IP "\(bu" 4 +email: \fInpm\-@googlegroups\.com\fR +. +.IP "" 0 +. +.P +Be sure to include \fIall\fR of the output from the npm command that didn\'t work +as expected\. The \fBnpm\-debug\.log\fR file is also helpful to provide\. +. +.P +You can also look for isaacs in #node\.js on irc://irc\.freenode\.net\. He +will no doubt tell you to put the output in a gist or email\. +. +.SH "HISTORY" +See npm help changelog +. +.SH "AUTHOR" +Isaac Z\. Schlueter \fIhttp://blog\.izs\.me/\fR :: isaacs \fIhttps://github\.com/isaacs/\fR :: @izs \fIhttp://twitter\.com/izs\fR :: \fIi@izs\.me\fR +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help help +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +README +. +.IP "\(bu" 4 +npm help json +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help index +. +.IP "\(bu" 4 +npm apihelp npm +. +.IP "" 0 + diff --git a/deps/npm/man/man1/outdated.1 b/deps/npm/man/man1/outdated.1 new file mode 100644 index 00000000000..214d1bf3636 --- /dev/null +++ b/deps/npm/man/man1/outdated.1 @@ -0,0 +1,32 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-OUTDATED" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-outdated\fR \-\- Check for outdated packages +. +.SH "SYNOPSIS" +. +.nf +npm outdated [ [ \.\.\.]] +. +.fi +. +.SH "DESCRIPTION" +This command will check the registry to see if any (or, specific) installed +packages are currently outdated\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help update +. +.IP "\(bu" 4 +npm help registry +. +.IP "\(bu" 4 +npm help folders +. +.IP "" 0 + diff --git a/deps/npm/man/man1/owner.1 b/deps/npm/man/man1/owner.1 new file mode 100644 index 00000000000..67d91259532 --- /dev/null +++ b/deps/npm/man/man1/owner.1 @@ -0,0 +1,55 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-OWNER" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-owner\fR \-\- Manage package owners +. +.SH "SYNOPSIS" +. +.nf +npm owner ls +npm owner add +npm owner rm +. +.fi +. +.SH "DESCRIPTION" +Manage ownership of published packages\. +. +.IP "\(bu" 4 +ls: +List all the users who have access to modify a package and push new versions\. +Handy when you need to know who to bug for help\. +. +.IP "\(bu" 4 +add: +Add a new user as a maintainer of a package\. This user is enabled to modify +metadata, publish new versions, and add other owners\. +. +.IP "\(bu" 4 +rm: +Remove a user from the package owner list\. This immediately revokes their +privileges\. +. +.IP "" 0 +. +.P +Note that there is only one level of access\. Either you can modify a package, +or you can\'t\. Future versions may contain more fine\-grained access levels, but +that is not implemented at this time\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help registry +. +.IP "\(bu" 4 +npm help adduser +. +.IP "" 0 + diff --git a/deps/npm/man/man1/pack.1 b/deps/npm/man/man1/pack.1 new file mode 100644 index 00000000000..f2665cd93a9 --- /dev/null +++ b/deps/npm/man/man1/pack.1 @@ -0,0 +1,42 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-PACK" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-pack\fR \-\- Create a tarball from a package +. +.SH "SYNOPSIS" +. +.nf +npm pack [ [ \.\.\.]] +. +.fi +. +.SH "DESCRIPTION" +For anything that\'s installable (that is, a package folder, tarball, +tarball url, name@tag, name@version, or name), this command will fetch +it to the cache, and then copy the tarball to the current working +directory as \fB\-\.tgz\fR, and then write the filenames out to +stdout\. +. +.P +If the same package is specified multiple times, then the file will be +overwritten the second time\. +. +.P +If no arguments are supplied, then npm packs the current package folder\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help cache +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help config +. +.IP "" 0 + diff --git a/deps/npm/man/man1/prefix.1 b/deps/npm/man/man1/prefix.1 new file mode 100644 index 00000000000..3e0d158ef1e --- /dev/null +++ b/deps/npm/man/man1/prefix.1 @@ -0,0 +1,34 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-PREFIX" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-prefix\fR \-\- Display prefix +. +.SH "SYNOPSIS" +. +.nf +npm prefix +. +.fi +. +.SH "DESCRIPTION" +Print the prefix to standard out\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help root +. +.IP "\(bu" 4 +npm help bin +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help config +. +.IP "" 0 + diff --git a/deps/npm/man/man1/prune.1 b/deps/npm/man/man1/prune.1 new file mode 100644 index 00000000000..c15a33815b6 --- /dev/null +++ b/deps/npm/man/man1/prune.1 @@ -0,0 +1,37 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-PRUNE" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-prune\fR \-\- Remove extraneous packages +. +.SH "SYNOPSIS" +. +.nf +npm prune [ [ +npm publish +. +.fi +. +.SH "DESCRIPTION" +Publishes a package to the registry so that it can be installed by name\. +. +.IP "\(bu" 4 +\fB\fR: +A folder containing a package\.json file +. +.IP "\(bu" 4 +\fB\fR: +A url or file path to a gzipped tar archive containing a single folder +with a package\.json file inside\. +. +.IP "" 0 +. +.P +Fails if the package name and version combination already exists in +the registry\. Overwrites when the "\-\-force" flag is set\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help registry +. +.IP "\(bu" 4 +npm help adduser +. +.IP "\(bu" 4 +npm help owner +. +.IP "\(bu" 4 +npm help deprecate +. +.IP "\(bu" 4 +npm help tag +. +.IP "" 0 + diff --git a/deps/npm/man/man1/rebuild.1 b/deps/npm/man/man1/rebuild.1 new file mode 100644 index 00000000000..f16e9dc1eae --- /dev/null +++ b/deps/npm/man/man1/rebuild.1 @@ -0,0 +1,36 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-REBUILD" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-rebuild\fR \-\- Rebuild a package +. +.SH "SYNOPSIS" +. +.nf +npm rebuild [ [ \.\.\.]] +. +.fi +. +.IP "\(bu" 4 +\fB\fR: +The package to rebuild +. +.IP "" 0 +. +.SH "DESCRIPTION" +This command runs the \fBnpm build\fR command on the matched folders\. This is useful +when you install a new version of node, and must recompile all your C++ addons with +the new binary\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help build +. +.IP "\(bu" 4 +npm help install +. +.IP "" 0 + diff --git a/deps/npm/man/man1/registry.1 b/deps/npm/man/man1/registry.1 new file mode 100644 index 00000000000..c2f8ebda9e1 --- /dev/null +++ b/deps/npm/man/man1/registry.1 @@ -0,0 +1,107 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-REGISTRY" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-registry\fR \-\- The JavaScript Package Registry +. +.SH "DESCRIPTION" +To resolve packages by name and version, npm talks to a registry website +that implements the CommonJS Package Registry specification for reading +package info\. +. +.P +Additionally, npm\'s package registry implementation supports several +write APIs as well, to allow for publishing packages and managing user +account information\. +. +.P +The official public npm registry is at \fIhttp://registry\.npmjs\.org/\fR\|\. It +is powered by a CouchDB database at \fIhttp://isaacs\.iriscouch\.com/registry\fR\|\. The code for the couchapp is +available at \fIhttp://github\.com/isaacs/npmjs\.org\fR\|\. npm user accounts +are CouchDB users, stored in the \fIhttp://isaacs\.iriscouch\.com/_users\fR +database\. +. +.P +The registry URL is supplied by the \fBregistry\fR config parameter\. See \fBnpm help config\fR for more on managing npm\'s configuration\. +. +.SH "Can I run my own private registry?" +Yes! +. +.P +The easiest way is to replicate the couch database, and use the same (or +similar) design doc to implement the APIs\. +. +.P +If you set up continuous replication from the official CouchDB, and then +set your internal CouchDB as the registry config, then you\'ll be able +to read any published packages, in addition to your private ones, and by +default will only publish internally\. If you then want to publish a +package for the whole world to see, you can simply override the \fB\-\-registry\fR config for that command\. +. +.SH "I don\'t want my package published in the official registry\. It\'s private\." +Set \fB"private": true\fR in your package\.json to prevent it from being +published at all, or \fB"publishConfig":{"registry":"http://my\-internal\-registry\.local"}\fR +to force it to be published only to your internal registry\. +. +.P +See \fBnpm help json\fR for more info on what goes in the package\.json file\. +. +.SH "Will you replicate from my registry into the public one?" +No\. If you want things to be public, then publish them into the public +registry using npm\. What little security there is would be for nought +otherwise\. +. +.SH "Do I have to use couchdb to build a registry that npm can talk to?" +No, but it\'s way easier\. +. +.SH "I published something elsewhere, and want to tell the npm registry about it\." +That is supported, but not using the npm client\. You\'ll have to get +your hands dirty and do some HTTP\. The request looks something like +this: +. +.IP "" 4 +. +.nf +PUT /my\-foreign\-package +content\-type:application/json +accept:application/json +authorization:Basic $base_64_encoded +{ "name":"my\-foreign\-package" +, "maintainers":["owner","usernames"] +, "description":"A package that is hosted elsewhere" +, "keywords":["nih","my cheese smells the best"] +, "url":"http://my\-different\-registry\.com/blerg/my\-local\-package" +} +. +.fi +. +.IP "" 0 +. +.P +(Keywords and description are optional, but recommended\. Name, +maintainers, and url are required\.) +. +.P +Then, when a user tries to install "my\-foreign\-package", it\'ll redirect +to your registry\. If that doesn\'t resolve to a valid package entry, +then it\'ll fail, so please make sure that you understand the spec, and +ask for help on the \fInpm\-@googlegroups\.com\fR mailing list\. +. +.SH "Is there a website or something to see package docs and such?" +No, but such a thing is planned, and a tiny bit developed\. +. +.P +Stay tuned! +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help config +. +.IP "\(bu" 4 +npm help developers +. +.IP "" 0 + diff --git a/deps/npm/man/man1/removing-npm.1 b/deps/npm/man/man1/removing-npm.1 new file mode 100644 index 00000000000..9196d05154d --- /dev/null +++ b/deps/npm/man/man1/removing-npm.1 @@ -0,0 +1,107 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-REMOVAL" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-removal\fR \-\- Cleaning the Slate +. +.SH "SYNOPSIS" +So sad to see you go\. +. +.IP "" 4 +. +.nf +sudo npm uninstall npm \-g +. +.fi +. +.IP "" 0 +. +.P +Or, if that fails, get the npm source code, and do: +. +.IP "" 4 +. +.nf +sudo make uninstall +. +.fi +. +.IP "" 0 +. +.SH "More Severe Uninstalling" +Usually, the above instructions are sufficient\. That will remove +npm, but leave behind anything you\'ve installed\. +. +.P +If that doesn\'t work, or if you require more drastic measures, +continue reading\. +. +.P +Note that this is only necessary for globally\-installed packages\. Local +installs are completely contained within a project\'s \fBnode_modules\fR +folder\. Delete that folder, and everything is gone (unless a package\'s +install script is particularly ill\-behaved)\. +. +.P +This assumes that you installed node and npm in the default place\. If +you configured node with a different \fB\-\-prefix\fR, or installed npm with a +different prefix setting, then adjust the paths accordingly, replacing \fB/usr/local\fR with your install prefix\. +. +.P +To remove everything npm\-related manually: +. +.IP "" 4 +. +.nf +rm \-rf /usr/local/{lib/node{,/\.npm,_modules},bin,share/man}/npm* +. +.fi +. +.IP "" 0 +. +.P +If you installed things \fIwith\fR npm, then your best bet is to uninstall +them with npm first, and then install them again once you have a +proper install\. This can help find any symlinks that are lying +around: +. +.IP "" 4 +. +.nf +ls \-laF /usr/local/{lib/node{,/\.npm},bin,share/man} | grep npm +. +.fi +. +.IP "" 0 +. +.P +Prior to version 0\.3, npm used shim files for executables and node +modules\. To track those down, you can do the following: +. +.IP "" 4 +. +.nf +find /usr/local/{lib/node,bin} \-exec grep \-l npm \\{\\} \\; ; +. +.fi +. +.IP "" 0 +. +.P +(This is also in the README file\.) +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +README +. +.IP "\(bu" 4 +npm help rm +. +.IP "\(bu" 4 +npm help prune +. +.IP "" 0 + diff --git a/deps/npm/man/man1/restart.1 b/deps/npm/man/man1/restart.1 new file mode 100644 index 00000000000..756533408e0 --- /dev/null +++ b/deps/npm/man/man1/restart.1 @@ -0,0 +1,42 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-RESTART" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-restart\fR \-\- Start a package +. +.SH "SYNOPSIS" +. +.nf +npm restart +. +.fi +. +.SH "DESCRIPTION" +This runs a package\'s "restart" script, if one was provided\. +Otherwise it runs package\'s "stop" script, if one was provided, and then +the "start" script\. +. +.P +If no version is specified, then it restarts the "active" version\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help run\-script +. +.IP "\(bu" 4 +npm help scripts +. +.IP "\(bu" 4 +npm help test +. +.IP "\(bu" 4 +npm help start +. +.IP "\(bu" 4 +npm help stop +. +.IP "" 0 + diff --git a/deps/npm/man/man1/rm.1 b/deps/npm/man/man1/rm.1 new file mode 100644 index 00000000000..5df95889a90 --- /dev/null +++ b/deps/npm/man/man1/rm.1 @@ -0,0 +1,36 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-RM" "1" "November 2011" "" "" +. +.SH "NAME" +\fBnpm-rm\fR \-\- Remove a package +. +.SH "SYNOPSIS" +. +.nf +npm rm +npm uninstall +. +.fi +. +.SH "DESCRIPTION" +This uninstalls a package, completely removing everything npm installed +on its behalf\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help prune +. +.IP "\(bu" 4 +npm help install +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help config +. +.IP "" 0 + diff --git a/deps/npm/man/man1/root.1 b/deps/npm/man/man1/root.1 new file mode 100644 index 00000000000..81eb21a9713 --- /dev/null +++ b/deps/npm/man/man1/root.1 @@ -0,0 +1,34 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-ROOT" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-root\fR \-\- Display npm root +. +.SH "SYNOPSIS" +. +.nf +npm root +. +.fi +. +.SH "DESCRIPTION" +Print the effective \fBnode_modules\fR folder to standard out\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help prefix +. +.IP "\(bu" 4 +npm help bin +. +.IP "\(bu" 4 +npm help folders +. +.IP "\(bu" 4 +npm help config +. +.IP "" 0 + diff --git a/deps/npm/man/man1/run-script.1 b/deps/npm/man/man1/run-script.1 new file mode 100644 index 00000000000..59415b3b55b --- /dev/null +++ b/deps/npm/man/man1/run-script.1 @@ -0,0 +1,41 @@ +.\" Generated with Ronnjs/v0.1 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-RUN\-SCRIPT" "1" "December 2011" "" "" +. +.SH "NAME" +\fBnpm-run-script\fR \-\- Run arbitrary package scripts +. +.SH "SYNOPSIS" +. +.nf +npm run\-script
-

Node.js v0.6.3 Manual & Documentation

+

Node.js v0.6.4 Manual & Documentation

@@ -19,8 +18,8 @@

Node.js v0.6.3 Manual & Documentation

{{content}}
- - - + + + diff --git a/lib/child_process.js b/lib/child_process.js index ae414861a31..1eba363fdce 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -440,7 +440,7 @@ ChildProcess.prototype.spawn = function(options) { this._internal.close(); this._internal = null; - throw errnoException('spawn', errno); + throw errnoException(errno, 'spawn'); } this.pid = this._internal.pid; diff --git a/lib/http.js b/lib/http.js index 3040d33d6de..912e3da1709 100644 --- a/lib/http.js +++ b/lib/http.js @@ -597,9 +597,8 @@ OutgoingMessage.prototype.write = function(chunk, encoding) { return true; } - if (typeof chunk !== 'string' && !Buffer.isBuffer(chunk) && - !Array.isArray(chunk)) { - throw new TypeError('first argument must be a string, Array, or Buffer'); + if (typeof chunk !== 'string' && !Buffer.isBuffer(chunk)) { + throw new TypeError('first argument must be a string or Buffer'); } if (chunk.length === 0) return false; diff --git a/lib/net.js b/lib/net.js index c1d09ee86fd..b06a78d2551 100644 --- a/lib/net.js +++ b/lib/net.js @@ -273,6 +273,8 @@ Socket.prototype._connectQueueCleanUp = function(exception) { Socket.prototype.destroy = function(exception) { + if (this.destroyed) return; + var self = this; self._connectQueueCleanUp(); @@ -283,7 +285,7 @@ Socket.prototype.destroy = function(exception) { timers.unenroll(this); - if (this.server && !this.destroyed) { + if (this.server) { this.server.connections--; this.server._emitCloseIfDrained(); } @@ -655,8 +657,19 @@ var createServerHandle = exports._createServerHandle = function(address, port, addressType) { var r = 0; // assign handle in listen, and clean up if bind or listen fails - var handle = - (port == -1 && addressType == -1) ? createPipe() : createTCP(); + var handle; + + if (port == -1 && addressType == -1) { + handle = createPipe(); + if (process.platform === 'win32') { + var instances = parseInt(process.env.NODE_PENDING_PIPE_INSTANCES); + if (!isNaN(instances)) { + handle.setPendingInstances(instances); + } + } + } else { + handle = createTCP(); + } if (address || port) { debug('bind to ' + address); diff --git a/lib/punycode.js b/lib/punycode.js index b6122a9edff..315f1e4dacd 100644 --- a/lib/punycode.js +++ b/lib/punycode.js @@ -4,21 +4,20 @@ * Available under MIT license */ -;(function(window) { +;(function(root) { /** - * The `Punycode` object. - * @name Punycode + * The `punycode` object. + * @name punycode * @type Object */ - var Punycode, + var punycode, - /** Detect free variables `define`, `exports`, and `require` */ + /** Detect free variables `define`, `exports`, `module` and `require` */ freeDefine = typeof define == 'function' && typeof define.amd == 'object' && define.amd && define, - freeExports = typeof exports == 'object' && exports && - (typeof global == 'object' && global && global == global.global && - (window = global), exports), + freeExports = typeof exports == 'object' && exports, + freeModule = typeof module == 'object' && module, freeRequire = typeof require == 'function' && require, /** Highest positive signed 32-bit float value */ @@ -35,7 +34,7 @@ delimiter = '-', // '\x2D' /** Regular expressions */ - regexASCII = /[^\x20-\x7e]/, + regexNonASCII = /[^ -~]/, // matches unprintable ASCII chars + non-ASCII chars regexPunycode = /^xn--/, /** Error messages */ @@ -50,7 +49,10 @@ /** Convenience shortcuts */ baseMinusTMin = base - tMin, floor = Math.floor, - stringFromCharCode = String.fromCharCode; + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; /*--------------------------------------------------------------------------*/ @@ -97,8 +99,9 @@ /** * Creates an array containing the decimal code points of each character in * the string. - * @see `Punycode.utf16.encode` - * @memberOf Punycode.utf16 + * @see `punycode.utf16.encode` + * @see + * @memberOf punycode.utf16 * @name decode * @param {String} string The Unicode input string. * @returns {Array} The new array. @@ -125,8 +128,9 @@ /** * Creates a string based on an array of decimal code points. - * @see `Punycode.utf16.decode` - * @memberOf Punycode.utf16 + * @see `punycode.utf16.decode` + * @see + * @memberOf punycode.utf16 * @name encode * @param {Array} codePoints The array of decimal code points. * @returns {String} The new string. @@ -215,25 +219,13 @@ /** * Converts a Punycode string of ASCII code points to a string of Unicode * code points. - * @memberOf Punycode + * @memberOf punycode * @param {String} input The Punycode string of ASCII code points. - * @param {Boolean} preserveCase A boolean value indicating if character - * case should be preserved or not. * @returns {String} The resulting string of Unicode code points. */ - function decode(input, preserveCase) { + function decode(input) { // Don't use UTF-16 var output = [], - /** - * The `caseFlags` array needs room for at least `output.length` values, - * or it can be `undefined` if the case information is not needed. A - * truthy value suggests that the corresponding Unicode character be - * forced to uppercase (if possible), while falsy values suggest that it - * be forced to lowercase (if possible). ASCII code points are output - * already in the proper case, but their flags will be set appropriately - * so that applying the flags would be harmless. - */ - caseFlags = [], inputLength = input.length, out, i = 0, @@ -261,9 +253,6 @@ } for (j = 0; j < basic; ++j) { - if (preserveCase) { - caseFlags[output.length] = input.charCodeAt(j) - 65 < 26; - } // if it's not a basic code point if (input.charCodeAt(j) >= 0x80) { error('not-basic'); @@ -271,8 +260,8 @@ output.push(input.charCodeAt(j)); } - // Main decoding loop: start just after the last delimiter if any basic - // code points were copied; start at the beginning otherwise. + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { @@ -322,36 +311,21 @@ i %= out; // Insert `n` at position `i` of the output - // The case of the last character determines `uppercase` flag - if (preserveCase) { - caseFlags.splice(i, 0, input.charCodeAt(index - 1) - 65 < 26); - } - - output.splice(i, 0, n); - i++; + output.splice(i++, 0, n); } - if (preserveCase) { - for (i = 0, length = output.length; i < length; i++) { - if (caseFlags[i]) { - output[i] = (stringFromCharCode(output[i]).toUpperCase()).charCodeAt(0); - } - } - } return utf16encode(output); } /** * Converts a string of Unicode code points to a Punycode string of ASCII * code points. - * @memberOf Punycode + * @memberOf punycode * @param {String} input The string of Unicode code points. - * @param {Boolean} preserveCase A boolean value indicating if character - * case should be preserved or not. * @returns {String} The resulting Punycode string of ASCII code points. */ - function encode(input, preserveCase) { + function encode(input) { var n, delta, handledCPCount, @@ -363,18 +337,6 @@ k, t, currentValue, - /** - * The `caseFlags` array will hold `inputLength` boolean values, where - * `true` suggests that the corresponding Unicode character be forced - * to uppercase after being decoded (if possible), and `false` - * suggests that it be forced to lowercase (if possible). ASCII code - * points are encoded literally, except that ASCII letters are forced - * to uppercase or lowercase according to the corresponding uppercase - * flags. If `caseFlags` remains `undefined` then ASCII letters are - * left as they are, and other code points are treated as if their - * uppercase flags were `true`. - */ - caseFlags, output = [], /** `inputLength` will hold the number of code points in `input`. */ inputLength, @@ -383,24 +345,12 @@ baseMinusT, qMinusT; - if (preserveCase) { - // Preserve case, step 1 of 2: get a list of the unaltered string - caseFlags = utf16decode(input); - } - // Convert the input in UTF-16 to Unicode input = utf16decode(input); // Cache the length inputLength = input.length; - if (preserveCase) { - // Preserve case, step 2 of 2: modify the list to true/false - for (j = 0; j < inputLength; j++) { - caseFlags[j] = input[j] != caseFlags[j]; - } - } - // Initialize the state n = initialN; delta = 0; @@ -410,11 +360,7 @@ for (j = 0; j < inputLength; ++j) { currentValue = input[j]; if (currentValue < 0x80) { - output.push( - stringFromCharCode( - caseFlags ? encodeBasic(currentValue, caseFlags[j]) : currentValue - ) - ); + output.push(stringFromCharCode(currentValue)); } } @@ -433,7 +379,6 @@ // All non-basic code points < n have been handled already. Find the next // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { currentValue = input[j]; if (currentValue >= n && currentValue < m) { @@ -473,7 +418,7 @@ q = floor(qMinusT / baseMinusT); } - output.push(stringFromCharCode(digitToBasic(q, preserveCase && caseFlags[j] ? 1 : 0))); + output.push(stringFromCharCode(digitToBasic(q, 0))); bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); delta = 0; ++handledCPCount; @@ -492,7 +437,7 @@ * Punycoded parts of the domain name will be converted, i.e. it doesn't * matter if you call it on a string that has already been converted to * Unicode. - * @memberOf Punycode + * @memberOf punycode * @param {String} domain The Punycode domain name to convert to Unicode. * @returns {String} The Unicode representation of the given Punycode * string. @@ -509,13 +454,13 @@ * Converts a Unicode string representing a domain name to Punycode. Only the * non-ASCII parts of the domain name will be converted, i.e. it doesn't * matter if you call it with a domain that's already in ASCII. - * @memberOf Punycode + * @memberOf punycode * @param {String} domain The domain name to convert, as a Unicode string. * @returns {String} The Punycode representation of the given domain name. */ function toASCII(domain) { return mapDomain(domain, function(string) { - return regexASCII.test(string) + return regexNonASCII.test(string) ? 'xn--' + encode(string) : string; }); @@ -524,12 +469,17 @@ /*--------------------------------------------------------------------------*/ /** Define the public API */ - Punycode = { - 'version': '0.1.1', + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '0.2.1', /** * An object of methods to convert from JavaScript's internal character * representation to Unicode and back. - * @memberOf Punycode + * @memberOf punycode * @type Object */ 'utf16': { @@ -542,23 +492,23 @@ 'toUnicode': toUnicode }; - /** Expose Punycode */ + /** Expose `punycode` */ if (freeExports) { - if (typeof module == 'object' && module && module.exports == freeExports) { - // in Node.js - module.exports = Punycode; + if (freeModule && freeModule.exports == freeExports) { + // in Node.js or Ringo 0.8+ + freeModule.exports = punycode; } else { - // in Narwhal or Ringo - freeExports.Punycode = Punycode; + // in Narwhal or Ringo 0.7- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } } } else if (freeDefine) { // via curl.js or RequireJS - freeDefine(function() { - return Punycode; - }); + define('punycode', punycode); } else { // in a browser or Rhino - window.Punycode = Punycode; + root.punycode = punycode; } }(this)); diff --git a/lib/sys.js b/lib/sys.js index c37e2a7d33a..d53a3dd95ea 100644 --- a/lib/sys.js +++ b/lib/sys.js @@ -25,7 +25,10 @@ var sysWarning; if (!sysWarning) { sysWarning = 'The "sys" module is now called "util". ' + 'It should have a similar interface.'; - util.error(sysWarning); + if (process.env.NODE_DEBUG && process.env.NODE_DEBUG.indexOf('sys') != -1) + console.trace(sysWarning); + else + console.error(sysWarning); } exports.print = util.print; diff --git a/lib/tls.js b/lib/tls.js index 8f83ecf9865..34fe11f0587 100644 --- a/lib/tls.js +++ b/lib/tls.js @@ -454,8 +454,14 @@ CryptoStream.prototype._pull = function() { paused = this.pair.cleartext._paused; } if (!paused) { - debug('drain'); - process.nextTick(this.emit.bind(this, 'drain')); + debug('drain ' + (this === this.pair.cleartext ? 'clear' : 'encrypted')); + var self = this; + process.nextTick(function() { + if (typeof self.ondrain === 'function') { + self.ondrain(); + } + self.emit('drain'); + }); this._needDrain = false; if (this.__destroyOnDrain) this.end(); } diff --git a/lib/util.js b/lib/util.js index aafc0edf325..b00da2de9d0 100644 --- a/lib/util.js +++ b/lib/util.js @@ -155,7 +155,7 @@ function formatValue(ctx, value, recurseTimes) { // Check that value is an object with an inspect function on it if (value && typeof value.inspect === 'function' && // Filter out the util module, it's inspect function is special - value !== exports && + value.inspect !== exports.inspect && // Also filter out any prototype objects using the circular check. !(value.constructor && value.constructor.prototype === value)) { return value.inspect(recurseTimes); diff --git a/src/node.cc b/src/node.cc index d61fd82a955..5402069aee4 100644 --- a/src/node.cc +++ b/src/node.cc @@ -47,8 +47,6 @@ #include /* setuid, getuid */ #else #include -#define chdir _chdir -#define getcwd _getcwd #include #define getpid _getpid #include @@ -115,6 +113,7 @@ static Persistent uncaught_exception_symbol; static Persistent emit_symbol; +static bool print_eval = false; static char *eval_string = NULL; static int option_end_index = 0; static bool use_debug_agent = false; @@ -141,9 +140,11 @@ static bool use_sni = true; static bool use_sni = false; #endif +#ifdef __POSIX__ // Buffer for getpwnam_r(), getgrpam_r() and other misc callers; keep this // scoped at file-level rather than method-level to avoid excess stack usage. static char getbuf[PATH_MAX + 1]; +#endif // We need to notify V8 when we're idle so that it can run the garbage // collector. The interface to this is V8::IdleNotification(). It returns @@ -799,6 +800,82 @@ Local ErrnoException(int errorno, } +static const char* get_uv_errno_string(int errorno) { + uv_err_t err; + memset(&err, 0, sizeof err); + err.code = (uv_err_code)errorno; + return uv_err_name(err); +} + + +static const char* get_uv_errno_message(int errorno) { + uv_err_t err; + memset(&err, 0, sizeof err); + err.code = (uv_err_code)errorno; + return uv_strerror(err); +} + + +// hack alert! copy of ErrnoException, tuned for uv errors +Local UVException(int errorno, + const char *syscall, + const char *msg, + const char *path) { + static Persistent syscall_symbol; + static Persistent errpath_symbol; + static Persistent code_symbol; + + if (syscall_symbol.IsEmpty()) { + syscall_symbol = NODE_PSYMBOL("syscall"); + errno_symbol = NODE_PSYMBOL("errno"); + errpath_symbol = NODE_PSYMBOL("path"); + code_symbol = NODE_PSYMBOL("code"); + } + + if (!msg || !msg[0]) + msg = get_uv_errno_message(errorno); + + Local estring = String::NewSymbol(get_uv_errno_string(errorno)); + Local message = String::NewSymbol(msg); + Local cons1 = String::Concat(estring, String::NewSymbol(", ")); + Local cons2 = String::Concat(cons1, message); + + Local e; + + Local path_str; + + if (path) { +#ifdef _WIN32 + if (strncmp(path, "\\\\?\\UNC\\", 8) == 0) { + path_str = String::Concat(String::New("\\\\"), String::New(path + 8)); + } else if (strncmp(path, "\\\\?\\", 4) == 0) { + path_str = String::New(path + 4); + } else { + path_str = String::New(path); + } +#else + path_str = String::New(path); +#endif + + Local cons3 = String::Concat(cons2, String::NewSymbol(" '")); + Local cons4 = String::Concat(cons3, path_str); + Local cons5 = String::Concat(cons4, String::NewSymbol("'")); + e = Exception::Error(cons5); + } else { + e = Exception::Error(cons2); + } + + Local obj = e->ToObject(); + + // TODO errno should probably go + obj->Set(errno_symbol, Integer::New(errorno)); + obj->Set(code_symbol, estring); + if (path) obj->Set(errpath_symbol, path_str); + if (syscall) obj->Set(syscall_symbol, String::NewSymbol(syscall)); + return e; +} + + #ifdef _WIN32 Local WinapiErrnoException(int errorno, const char* syscall, @@ -1154,10 +1231,10 @@ static Handle Chdir(const Arguments& args) { String::Utf8Value path(args[0]->ToString()); - int r = chdir(*path); + uv_err_t r = uv_chdir(*path); - if (r != 0) { - return ThrowException(Exception::Error(String::New(strerror(errno)))); + if (r.code != UV_OK) { + return ThrowException(UVException(r.code, "uv_chdir")); } return Undefined(); @@ -1166,18 +1243,25 @@ static Handle Chdir(const Arguments& args) { static Handle Cwd(const Arguments& args) { HandleScope scope; +#ifdef _WIN32 + /* MAX_PATH is in characters, not bytes. Make sure we have enough headroom. */ + char buf[MAX_PATH * 4 + 1]; +#else + char buf[PATH_MAX + 1]; +#endif - char *r = getcwd(getbuf, ARRAY_SIZE(getbuf) - 1); - if (r == NULL) { - return ThrowException(Exception::Error(String::New(strerror(errno)))); + uv_err_t r = uv_cwd(buf, ARRAY_SIZE(buf) - 1); + if (r.code != UV_OK) { + return ThrowException(UVException(r.code, "uv_cwd")); } - getbuf[ARRAY_SIZE(getbuf) - 1] = '\0'; - Local cwd = String::New(r); + buf[ARRAY_SIZE(buf) - 1] = '\0'; + Local cwd = String::New(buf); return scope.Close(cwd); } + #ifdef _WIN32 static Handle CwdForDrive(const Arguments& args) { HandleScope scope; @@ -1484,7 +1568,7 @@ v8::Handle MemoryUsage(const v8::Arguments& args) { heap_used_symbol = NODE_PSYMBOL("heapUsed"); } - info->Set(rss_symbol, Integer::NewFromUnsigned(rss)); + info->Set(rss_symbol, Number::New(rss)); // V8 memory usage HeapStatistics v8_heap_stats; @@ -1594,9 +1678,14 @@ Handle DLOpen(const v8::Arguments& args) { err = uv_dlsym(lib, "init", reinterpret_cast(&mod->register_func)); if (err.code != UV_OK) { uv_dlclose(lib); - Local exception = Exception::Error( - String::New("Out of memory.")); - return ThrowException(exception); + + const char* message; + if (err.code == UV_ENOENT) + message = "Module entry point not found."; + else + message = "Out of memory."; + + return ThrowException(Exception::Error(String::New(message))); } /* End Compatibility hack */ } @@ -1982,6 +2071,7 @@ Handle SetupProcessObject(int argc, char *argv[]) { // -e, --eval if (eval_string) { process->Set(String::NewSymbol("_eval"), String::New(eval_string)); + process->Set(String::NewSymbol("_print_eval"), Boolean::New(print_eval)); } size_t size = 2*PATH_MAX; @@ -2122,6 +2212,7 @@ static void PrintHelp() { "Options:\n" " -v, --version print node's version\n" " -e, --eval script evaluate script\n" + " -p, --print print result of --eval\n" " --v8-options print v8 command line options\n" " --vars print various compiled-in variables\n" " --max-stack-size=val set max v8 stack size (bytes)\n" @@ -2165,13 +2256,20 @@ static void ParseArgs(int argc, char **argv) { } else if (strcmp(arg, "--help") == 0 || strcmp(arg, "-h") == 0) { PrintHelp(); exit(0); - } else if (strcmp(arg, "--eval") == 0 || strcmp(arg, "-e") == 0) { + } else if (strcmp(arg, "--eval") == 0 || strcmp(arg, "-e") == 0 || + strcmp(arg, "-pe") == 0) { if (argc <= i + 1) { fprintf(stderr, "Error: --eval requires an argument\n"); exit(1); } + if (arg[1] == 'p') { + print_eval = true; + } argv[i] = const_cast(""); eval_string = argv[++i]; + } else if (strcmp(arg, "--print") == 0 || strcmp(arg, "-p") == 0) { + print_eval = true; + argv[i] = const_cast(""); } else if (strcmp(arg, "--v8-options") == 0) { argv[i] = const_cast("--help"); } else if (argv[i][0] != '-') { diff --git a/src/node.h b/src/node.h index cb58a220bbe..38d3c621bfa 100644 --- a/src/node.h +++ b/src/node.h @@ -192,6 +192,12 @@ NODE_EXTERN v8::Local ErrnoException(int errorno, const char *syscall = NULL, const char *msg = "", const char *path = NULL); + +NODE_EXTERN v8::Local UVException(int errorno, + const char *syscall = NULL, + const char *msg = NULL, + const char *path = NULL); + #ifdef _WIN32 NODE_EXTERN v8::Local WinapiErrnoException(int errorno, const char *syscall = NULL, const char *msg = "", diff --git a/src/node.js b/src/node.js index 2d409eb534f..53e0c489c6e 100644 --- a/src/node.js +++ b/src/node.js @@ -77,8 +77,8 @@ var module = new Module('eval'); module.filename = path.join(cwd, 'eval'); module.paths = Module._nodeModulePaths(cwd); - module._compile('eval(process._eval)', 'eval'); - + var result = module._compile('return eval(process._eval)', 'eval'); + if (process._print_eval) console.log(result); } else if (process.argv[1]) { // make process.argv[1] into a full path var path = NativeModule.require('path'); diff --git a/src/node_crypto.cc b/src/node_crypto.cc index bea31607ed3..09f1a5b6824 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -1880,15 +1880,19 @@ class Cipher : public ObjectWrap { } unsigned char key[EVP_MAX_KEY_LENGTH],iv[EVP_MAX_IV_LENGTH]; - int key_len = EVP_BytesToKey(cipher, EVP_md5(), NULL, (unsigned char*) key_buf, key_buf_len, 1, key, iv); + int key_len = EVP_BytesToKey(cipher, EVP_md5(), NULL, + (unsigned char*) key_buf, key_buf_len, 1, key, iv); EVP_CIPHER_CTX_init(&ctx); - EVP_CipherInit(&ctx,cipher,(unsigned char *)key,(unsigned char *)iv, true); - if (!EVP_CIPHER_CTX_set_key_length(&ctx,key_len)) { + EVP_CipherInit_ex(&ctx, cipher, NULL, NULL, NULL, true); + if (!EVP_CIPHER_CTX_set_key_length(&ctx, key_len)) { fprintf(stderr, "node-crypto : Invalid key length %d\n", key_len); EVP_CIPHER_CTX_cleanup(&ctx); return false; } + EVP_CipherInit_ex(&ctx, NULL, NULL, + (unsigned char *)key, + (unsigned char *)iv, true); initialised_ = true; return true; } @@ -1904,17 +1908,23 @@ class Cipher : public ObjectWrap { fprintf(stderr, "node-crypto : Unknown cipher %s\n", cipherType); return false; } - if (EVP_CIPHER_iv_length(cipher)!=iv_len) { + /* OpenSSL versions up to 0.9.8l failed to return the correct + iv_length (0) for ECB ciphers */ + if (EVP_CIPHER_iv_length(cipher) != iv_len && + !(EVP_CIPHER_mode(cipher) == EVP_CIPH_ECB_MODE && iv_len == 0)) { fprintf(stderr, "node-crypto : Invalid IV length %d\n", iv_len); return false; } EVP_CIPHER_CTX_init(&ctx); - EVP_CipherInit(&ctx,cipher,(unsigned char *)key,(unsigned char *)iv, true); - if (!EVP_CIPHER_CTX_set_key_length(&ctx,key_len)) { + EVP_CipherInit_ex(&ctx, cipher, NULL, NULL, NULL, true); + if (!EVP_CIPHER_CTX_set_key_length(&ctx, key_len)) { fprintf(stderr, "node-crypto : Invalid key length %d\n", key_len); EVP_CIPHER_CTX_cleanup(&ctx); return false; } + EVP_CipherInit_ex(&ctx, NULL, NULL, + (unsigned char *)key, + (unsigned char *)iv, true); initialised_ = true; return true; } @@ -1932,7 +1942,7 @@ class Cipher : public ObjectWrap { int CipherFinal(unsigned char** out, int *out_len) { if (!initialised_) return 0; *out = new unsigned char[EVP_CIPHER_CTX_block_size(&ctx)]; - EVP_CipherFinal(&ctx,*out,out_len); + EVP_CipherFinal_ex(&ctx,*out,out_len); EVP_CIPHER_CTX_cleanup(&ctx); initialised_ = false; return 1; @@ -2254,16 +2264,15 @@ class Decipher : public ObjectWrap { iv); EVP_CIPHER_CTX_init(&ctx); - EVP_CipherInit(&ctx, - cipher_, - (unsigned char*)(key), - (unsigned char *)(iv), - false); - if (!EVP_CIPHER_CTX_set_key_length(&ctx,key_len)) { + EVP_CipherInit_ex(&ctx, cipher_, NULL, NULL, NULL, false); + if (!EVP_CIPHER_CTX_set_key_length(&ctx, key_len)) { fprintf(stderr, "node-crypto : Invalid key length %d\n", key_len); EVP_CIPHER_CTX_cleanup(&ctx); return false; } + EVP_CipherInit_ex(&ctx, NULL, NULL, + (unsigned char *)key, + (unsigned char *)iv, false); initialised_ = true; return true; } @@ -2279,21 +2288,23 @@ class Decipher : public ObjectWrap { fprintf(stderr, "node-crypto : Unknown cipher %s\n", cipherType); return false; } - if (EVP_CIPHER_iv_length(cipher_) != iv_len) { + /* OpenSSL versions up to 0.9.8l failed to return the correct + iv_length (0) for ECB ciphers */ + if (EVP_CIPHER_iv_length(cipher_) != iv_len && + !(EVP_CIPHER_mode(cipher_) == EVP_CIPH_ECB_MODE && iv_len == 0)) { fprintf(stderr, "node-crypto : Invalid IV length %d\n", iv_len); return false; } EVP_CIPHER_CTX_init(&ctx); - EVP_CipherInit(&ctx, - cipher_, - (unsigned char*)(key), - (unsigned char *)(iv), - false); - if (!EVP_CIPHER_CTX_set_key_length(&ctx,key_len)) { + EVP_CipherInit_ex(&ctx, cipher_, NULL, NULL, NULL, false); + if (!EVP_CIPHER_CTX_set_key_length(&ctx, key_len)) { fprintf(stderr, "node-crypto : Invalid key length %d\n", key_len); EVP_CIPHER_CTX_cleanup(&ctx); return false; } + EVP_CipherInit_ex(&ctx, NULL, NULL, + (unsigned char *)key, + (unsigned char *)iv, false); initialised_ = true; return true; } @@ -2314,7 +2325,7 @@ class Decipher : public ObjectWrap { if (tolerate_padding) { local_EVP_DecryptFinal_ex(&ctx,*out,out_len); } else { - EVP_CipherFinal(&ctx,*out,out_len); + EVP_CipherFinal_ex(&ctx,*out,out_len); } EVP_CIPHER_CTX_cleanup(&ctx); initialised_ = false; diff --git a/src/node_file.cc b/src/node_file.cc index dd294865623..c6af67db2a4 100644 --- a/src/node_file.cc +++ b/src/node_file.cc @@ -56,11 +56,6 @@ static Persistent errno_symbol; static Persistent buf_symbol; static Persistent oncomplete_sym; -Local FSError(int errorno, - const char *syscall = NULL, - const char *msg = NULL, - const char *path = NULL); - #ifdef _LARGEFILE_SOURCE static inline int IsInt64(double x) { @@ -91,12 +86,12 @@ static void After(uv_fs_t *req) { // If the request doesn't have a path parameter set. if (!req->path) { - argv[0] = FSError(req->errorno); + argv[0] = UVException(req->errorno); } else { - argv[0] = FSError(req->errorno, - NULL, - NULL, - static_cast(req->path)); + argv[0] = UVException(req->errorno, + NULL, + NULL, + static_cast(req->path)); } } else { // error value is empty or null for non-error. @@ -210,82 +205,6 @@ struct fs_req_wrap { }; -const char* errno_string(int errorno) { - uv_err_t err; - memset(&err, 0, sizeof err); - err.code = (uv_err_code)errorno; - return uv_err_name(err); -} - - -const char* errno_message(int errorno) { - uv_err_t err; - memset(&err, 0, sizeof err); - err.code = (uv_err_code)errorno; - return uv_strerror(err); -} - - -// hack alert! copy of ErrnoException in node.cc, tuned for uv errors -Local FSError(int errorno, - const char *syscall, - const char *msg, - const char *path) { - static Persistent syscall_symbol; - static Persistent errpath_symbol; - static Persistent code_symbol; - - if (syscall_symbol.IsEmpty()) { - syscall_symbol = NODE_PSYMBOL("syscall"); - errno_symbol = NODE_PSYMBOL("errno"); - errpath_symbol = NODE_PSYMBOL("path"); - code_symbol = NODE_PSYMBOL("code"); - } - - if (!msg || !msg[0]) - msg = errno_message(errorno); - - Local estring = String::NewSymbol(errno_string(errorno)); - Local message = String::NewSymbol(msg); - Local cons1 = String::Concat(estring, String::NewSymbol(", ")); - Local cons2 = String::Concat(cons1, message); - - Local e; - - Local path_str; - - if (path) { -#ifdef _WIN32 - if (strncmp(path, "\\\\?\\UNC\\", 8) == 0) { - path_str = String::Concat(String::New("\\\\"), String::New(path + 8)); - } else if (strncmp(path, "\\\\?\\", 4) == 0) { - path_str = String::New(path + 4); - } else { - path_str = String::New(path); - } -#else - path_str = String::New(path); -#endif - - Local cons3 = String::Concat(cons2, String::NewSymbol(" '")); - Local cons4 = String::Concat(cons3, path_str); - Local cons5 = String::Concat(cons4, String::NewSymbol("'")); - e = Exception::Error(cons5); - } else { - e = Exception::Error(cons2); - } - - Local obj = e->ToObject(); - - // TODO errno should probably go - obj->Set(errno_symbol, Integer::New(errorno)); - obj->Set(code_symbol, estring); - if (path) obj->Set(errpath_symbol, path_str); - if (syscall) obj->Set(syscall_symbol, String::NewSymbol(syscall)); - return e; -} - - #define ASYNC_CALL(func, callback, ...) \ FSReqWrap* req_wrap = new FSReqWrap(); \ int r = uv_fs_##func(uv_default_loop(), &req_wrap->req_, \ @@ -300,7 +219,7 @@ Local FSError(int errorno, int result = uv_fs_##func(uv_default_loop(), &req_wrap.req, __VA_ARGS__, NULL); \ if (result < 0) { \ int code = uv_last_error(uv_default_loop()).code; \ - return ThrowException(FSError(code, #func, "", path)); \ + return ThrowException(UVException(code, #func, "", path)); \ } #define SYNC_REQ req_wrap.req @@ -540,10 +459,10 @@ static Handle Rename(const Arguments& args) { #ifndef _LARGEFILE_SOURCE #define ASSERT_TRUNCATE_LENGTH(a) \ - if (!(a)->IsUndefined() && !(a)->IsNull() && !(a)->IsUInt32()) { \ + if (!(a)->IsUndefined() && !(a)->IsNull() && !(a)->IsUint32()) { \ return ThrowException(Exception::TypeError(String::New("Not an integer"))); \ } -#define GET_TRUNCATE_LENGTH(a) ((a)->UInt32Value()) +#define GET_TRUNCATE_LENGTH(a) ((a)->Uint32Value()) #else #define ASSERT_TRUNCATE_LENGTH(a) \ if (!(a)->IsUndefined() && !(a)->IsNull() && !IsInt64((a)->NumberValue())) { \ diff --git a/src/pipe_wrap.cc b/src/pipe_wrap.cc index 0d0a0045764..a2a4203a804 100644 --- a/src/pipe_wrap.cc +++ b/src/pipe_wrap.cc @@ -96,6 +96,10 @@ void PipeWrap::Initialize(Handle target) { NODE_SET_PROTOTYPE_METHOD(t, "connect", Connect); NODE_SET_PROTOTYPE_METHOD(t, "open", Open); +#ifdef _WIN32 + NODE_SET_PROTOTYPE_METHOD(t, "setPendingInstances", SetPendingInstances); +#endif + pipeConstructor = Persistent::New(t->GetFunction()); target->Set(String::NewSymbol("Pipe"), pipeConstructor); @@ -142,6 +146,21 @@ Handle PipeWrap::Bind(const Arguments& args) { } +#ifdef _WIN32 +Handle PipeWrap::SetPendingInstances(const Arguments& args) { + HandleScope scope; + + UNWRAP + + int instances = args[0]->Int32Value(); + + uv_pipe_pending_instances(&wrap->handle_, instances); + + return v8::Null(); +} +#endif + + Handle PipeWrap::Listen(const Arguments& args) { HandleScope scope; diff --git a/src/pipe_wrap.h b/src/pipe_wrap.h index 26a91fb9626..f4c9291ae78 100644 --- a/src/pipe_wrap.h +++ b/src/pipe_wrap.h @@ -41,6 +41,10 @@ class PipeWrap : StreamWrap { static v8::Handle Connect(const v8::Arguments& args); static v8::Handle Open(const v8::Arguments& args); +#ifdef _WIN32 + static v8::Handle SetPendingInstances(const v8::Arguments& args); +#endif + static void OnConnection(uv_stream_t* handle, int status); static void AfterConnect(uv_connect_t* req, int status); diff --git a/test/fixtures/pass-cert.pem b/test/fixtures/pass-cert.pem index b836669d3b6..1b355a8ced4 100644 --- a/test/fixtures/pass-cert.pem +++ b/test/fixtures/pass-cert.pem @@ -1,12 +1,12 @@ -----BEGIN CERTIFICATE----- -MIIB2TCCAUICCQClVOBBLf4XmjANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJK -UDEOMAwGA1UECBMFVG9reW8xEjAQBgNVBAoUCW5vZGVqc19qcDAeFw0xMTEwMjYx -NjA5MjdaFw0xMTExMjUxNjA5MjdaMDExCzAJBgNVBAYTAkpQMQ4wDAYDVQQIEwVU +MIIB2TCCAUICCQDQv9q5AAtoEzANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJK +UDEOMAwGA1UECBMFVG9reW8xEjAQBgNVBAoUCW5vZGVqc19qcDAeFw0xMTExMjYx +NzA0MDhaFw0yMTExMjMxNzA0MDhaMDExCzAJBgNVBAYTAkpQMQ4wDAYDVQQIEwVU b2t5bzESMBAGA1UEChQJbm9kZWpzX2pwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB iQKBgQChmQeFwsaomtQbw9Nm55Dn6KSR9bkY8PDroQUeTNa90BlIbhGsKYm4l7bE RaasFgOrkcQpk45fdDVYPjKxraZiGXXKjSIDYeDAIC/+CkwQKrejgCPmJs4gV4g+ npvwi1gVr2NAg7fkJOyEW2TDp4dsAD8qtG8Aml0C1hJXwFYmBwIDAQABMA0GCSqG -SIb3DQEBBQUAA4GBABVM2a2srG/MVGQsjYkY96hywSI6jNf2XNHYsB3PuTXOHijT -PoO6r0u69LgZCxr+Z/3GQ/ZELfKDsbv5IgfoyVnYikybJU9qfApH3B7hxECvw9rv -gEnYvEu6jsRtw6n5yz+lrDpFUrks0ky6YJ4+dxq0qCyXn7WcjBEcjdNgLTIm +SIb3DQEBBQUAA4GBAGJYkr3VgHUZSyGrdUWeGKiKS4EY3D4ki8Luv9Jf/IpxJLbZ +NGaKUbXSVYSW3US0yR1+lsNvWchmc0wLsbNEHbIiS4BQPkqX7F8FCthM1gwRLQPa +Sofz3dRNFKDmivG9mdbQDPD/duft7Kn6E3JS5myYUJ0dRKeYfOXLXCY2pZpG -----END CERTIFICATE----- diff --git a/test/simple/test-chdir.js b/test/simple/test-chdir.js index 4d0c52136ac..7454bee2d33 100644 --- a/test/simple/test-chdir.js +++ b/test/simple/test-chdir.js @@ -21,9 +21,20 @@ var common = require('../common'); var assert = require('assert'); +var fs = require('fs'); +var path = require('path'); assert.equal(true, process.cwd() !== __dirname); process.chdir(__dirname); - assert.equal(true, process.cwd() === __dirname); + +var dir = path.resolve(common.fixturesDir, + 'weird \uc3a4\uc3ab\uc3af characters \u00e1\u00e2\u00e3'); +fs.mkdirSync(dir); +process.chdir(dir); +assert(process.cwd() == dir); + +process.chdir('..'); +assert(process.cwd() == path.resolve(common.fixturesDir)); +fs.rmdirSync(dir); diff --git a/test/simple/test-cli-eval.js b/test/simple/test-cli-eval.js index 98e8dc90c2d..4c6b518b234 100644 --- a/test/simple/test-cli-eval.js +++ b/test/simple/test-cli-eval.js @@ -46,6 +46,21 @@ child.exec(nodejs + ' --eval "console.error(42)"', assert.equal(stderr, '42\n'); }); +// assert that nothing is written to stdout +['--print --eval', '-p -e', '-pe'].forEach(function(s) { + var cmd = nodejs + ' ' + s + ' '; + + child.exec(cmd + '42', + function(err, stdout, stderr) { + assert.equal(stdout, '42\n'); + }); + + child.exec(cmd + "'[]'", + function(err, stdout, stderr) { + assert.equal(stdout, '[]\n'); + }); +}); + // assert that module loading works child.exec(nodejs + ' --eval "require(\'' + filename + '\')"', function(status, stdout, stderr) { diff --git a/test/simple/test-crypto-ecb.js b/test/simple/test-crypto-ecb.js new file mode 100644 index 00000000000..23a5e682f12 --- /dev/null +++ b/test/simple/test-crypto-ecb.js @@ -0,0 +1,52 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + + +var common = require('../common'); +var assert = require('assert'); + +try { + var crypto = require('crypto'); +} catch (e) { + console.log('Not compiled with OPENSSL support.'); + process.exit(); +} + +// Testing whether EVP_CipherInit_ex is functioning correctly. +// Reference: bug#1997 + +(function() +{ + var encrypt = crypto.createCipheriv('BF-ECB', 'SomeRandomBlahz0c5GZVnR', ''); + var hex = encrypt.update('Hello World!', 'ascii', 'hex'); + hex += encrypt.final('hex'); + assert.equal(hex.toUpperCase(), '6D385F424AAB0CFBF0BB86E07FFB7D71'); +}()); + +(function() +{ + var decrypt = crypto.createDecipheriv('BF-ECB', 'SomeRandomBlahz0c5GZVnR', ''); + var msg = decrypt.update('6D385F424AAB0CFBF0BB86E07FFB7D71', 'hex', 'ascii'); + msg += decrypt.final('ascii'); + assert.equal(msg, 'Hello World!'); +}()); diff --git a/test/simple/test-http-res-write-end-dont-take-array.js b/test/simple/test-http-res-write-end-dont-take-array.js new file mode 100644 index 00000000000..2a7c025a067 --- /dev/null +++ b/test/simple/test-http-res-write-end-dont-take-array.js @@ -0,0 +1,64 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var common = require('../common'); +var assert = require('assert'); +var http = require('http'); + +var test = 1; + +var server = http.createServer(function (req, res) { + res.writeHead(200, {'Content-Type': 'text/plain'}); + if (test === 1) { + // write should accept string + res.write('string'); + // write should accept buffer + res.write(new Buffer('asdf')); + + // write should not accept an Array + assert.throws(function() { + res.write(['array']); + }, TypeError, 'first argument must be a string or Buffer'); + + // end should not accept an Array + assert.throws(function() { + res.end(['moo']); + }, TypeError, 'first argument must be a string or Buffer'); + + // end should accept string + res.end('string'); + } else if (test === 2) { + // end should accept Buffer + res.end(new Buffer('asdf')); + } +}); + +server.listen(common.PORT, function() { + // just make a request, other tests handle responses + http.get({port:common.PORT}, function() { + // lazy serial test, becuase we can only call end once per request + test += 1; + // do it again to test .end(Buffer); + http.get({port:common.PORT}, function() { + server.close(); + }); + }); +}); diff --git a/test/simple/test-https-drain.js b/test/simple/test-https-drain.js new file mode 100644 index 00000000000..314944b768f --- /dev/null +++ b/test/simple/test-https-drain.js @@ -0,0 +1,93 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +if (!process.versions.openssl) { + console.error('Skipping because node compiled without OpenSSL.'); + process.exit(0); +} + +var common = require('../common'); +var assert = require('assert'); +var https = require('https'); +var fs = require('fs'); +var path = require('path'); + +var options = { + key: fs.readFileSync(path.join(common.fixturesDir, 'test_key.pem')), + cert: fs.readFileSync(path.join(common.fixturesDir, 'test_cert.pem')) +}; + +var bufSize = 1024 * 1024; +var sent = 0; +var received = 0; + +var server = https.createServer(options, function(req, res) { + res.writeHead(200); + req.pipe(res); +}); + +server.listen(common.PORT, function() { + var resumed = false; + var req = https.request({ + port: common.PORT, + method: 'POST' + }, function(res) { + var timer; + res.pause(); + common.debug('paused'); + send(); + function send() { + if (req.write(new Buffer(bufSize))) { + sent += bufSize; + assert.ok(sent < 100 * 1024 * 1024); // max 100MB + return process.nextTick(send); + } + sent += bufSize; + common.debug('sent: ' + sent); + resumed = true; + res.resume(); + common.debug('resumed'); + timer = setTimeout(function() { + process.exit(1); + }, 1000); + } + + res.on('data', function(data) { + assert.ok(resumed); + if (timer) { + clearTimeout(timer); + timer = null; + } + received += data.length; + if (received >= sent) { + common.debug('received: ' + received); + req.end(); + server.close(); + } + }); + }); + req.write('a'); + ++sent; +}); + +process.on('exit', function() { + assert.equal(sent, received); +}); diff --git a/test/simple/test-net-socket-destroy-twice.js b/test/simple/test-net-socket-destroy-twice.js new file mode 100644 index 00000000000..882e3a14ce9 --- /dev/null +++ b/test/simple/test-net-socket-destroy-twice.js @@ -0,0 +1,43 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var common = require('../common'); +var assert = require('assert'); +var net = require('net'); + +var nerrors = 0; +var ncloses = 0; + +process.on('exit', function() { + assert.equal(nerrors, 1); + assert.equal(ncloses, 1); +}); + +var conn = net.createConnection(common.PORT); + +conn.on('error', function() { + nerrors++; + conn.destroy(); +}); + +conn.on('close', function() { + ncloses++; +}); diff --git a/test/simple/test-util-inspect.js b/test/simple/test-util-inspect.js index 68fea328cc9..c7a64f63906 100644 --- a/test/simple/test-util-inspect.js +++ b/test/simple/test-util-inspect.js @@ -75,3 +75,7 @@ assert.doesNotThrow(function () { r.toString = null; util.inspect(r); }); + +// GH-2225 +var x = { inspect: util.inspect }; +assert.ok(util.inspect(x).indexOf('inspect') != -1); diff --git a/tools/doctool/doctool.js b/tools/doctool/doctool.js index da31445fe13..634d82c9218 100644 --- a/tools/doctool/doctool.js +++ b/tools/doctool/doctool.js @@ -110,6 +110,7 @@ if (argc > 3) { // go markdown. html = convertData(data); filename = path.basename(filename, '.markdown'); + output = output.replace(/{{filename}}/g, filename); if (filename != "_toc" && filename != "index") { if (data) { diff --git a/tools/msvs/msi/product.wxs b/tools/msvs/msi/product.wxs index 4071b79da67..d924a4dfef5 100644 --- a/tools/msvs/msi/product.wxs +++ b/tools/msvs/msi/product.wxs @@ -1,7 +1,8 @@ - + + - + + + + + + + - + + + + + + + + + + + + + + diff --git a/tools/msvs/npm/npmrc b/tools/msvs/npm/npmrc new file mode 100644 index 00000000000..cbea6748dc1 --- /dev/null +++ b/tools/msvs/npm/npmrc @@ -0,0 +1 @@ +prefix=${APPDATA}\npm diff --git a/wscript b/wscript index eef883f6d8d..52c5edceeb2 100644 --- a/wscript +++ b/wscript @@ -90,6 +90,13 @@ def set_options(opt): , dest='efence' ) + opt.add_option( '--without-npm' + , action='store_true' + , default=False + , help='Don\'t install the bundled npm package manager [Release: False]' + , dest='without_npm' + ) + opt.add_option( '--without-snapshot' , action='store_true' , default=False @@ -275,6 +282,7 @@ def configure(conf): conf.env["USE_SHARED_ZLIB"] = o.shared_zlib or o.shared_zlib_includes or o.shared_zlib_libpath conf.env["USE_GDBJIT"] = o.use_gdbjit + conf.env['USE_NPM'] = not o.without_npm if not conf.env["USE_SHARED_ZLIB"] and not sys.platform.startswith("win32"): conf.env.append_value("LINKFLAGS", "-lz") @@ -461,11 +469,6 @@ def configure(conf): conf.env.append_value('CPPFLAGS', '-D_LARGEFILE_SOURCE') conf.env.append_value('CPPFLAGS', '-D_FILE_OFFSET_BITS=64') - # Apparently _LARGEFILE_SOURCE and _FILE_OFFSET_BITS isn't always enough - # on OS X, see https://github.com/joyent/node/issues/2061 for details. - if sys.platform.startswith('darwin') and conf.env['DEST_CPU'] == 'x64': - conf.env.append_value('CPPFLAGS', '-D__DARWIN_64_BIT_INO_T=1') - # Makes select on windows support more than 64 FDs if sys.platform.startswith("win32"): conf.env.append_value('CPPFLAGS', '-DFD_SETSIZE=1024'); @@ -969,7 +972,9 @@ def build(bld): bld.install_files('${PREFIX}/bin/', 'tools/node-waf', chmod=0755) bld.install_files('${LIBDIR}/node/wafadmin', 'tools/wafadmin/*.py') bld.install_files('${LIBDIR}/node/wafadmin/Tools', 'tools/wafadmin/Tools/*.py') - install_npm(bld) + + if bld.env['USE_NPM']: + install_npm(bld) def install_npm(bld): start_dir = bld.path.find_dir('deps/npm')