diff options
author | Rebecca Turner <me@re-becca.org> | 2016-01-28 18:11:35 -0800 |
---|---|---|
committer | Jeremiah Senkpiel <fishrock123@rocketmail.com> | 2016-02-01 10:43:34 -0500 |
commit | 76cb81b354de8447898427619c66c86c59b22b3d (patch) | |
tree | 0c0826bed77086fb38cda8dc680d4fb10d2cff25 /deps/npm/doc | |
parent | d5d301f3032a0723f5a29cfbe0d95ac4ad205d42 (diff) | |
download | node-new-76cb81b354de8447898427619c66c86c59b22b3d.tar.gz |
deps: upgrade npm to 3.6.0
PR-URL: https://github.com/nodejs/node/pull/4958
Reviewed-By: Myles Borins <mborins@us.ibm.com>
Reviewed-By: Kat Marchán <kzm@sykosomatic.org>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'deps/npm/doc')
26 files changed, 226 insertions, 458 deletions
diff --git a/deps/npm/doc/cli/npm-adduser.md b/deps/npm/doc/cli/npm-adduser.md index 80d0f9855b..24d3611e61 100644 --- a/deps/npm/doc/cli/npm-adduser.md +++ b/deps/npm/doc/cli/npm-adduser.md @@ -28,7 +28,7 @@ your existing record. ### registry -Default: http://registry.npmjs.org/ +Default: https://registry.npmjs.org/ The base URL of the npm package registry. If `scope` is also specified, this registry will only be used for packages with that scope. See `npm-scope(7)`. diff --git a/deps/npm/doc/cli/npm-dedupe.md b/deps/npm/doc/cli/npm-dedupe.md index c963dfa8e9..ed8dca81f5 100644 --- a/deps/npm/doc/cli/npm-dedupe.md +++ b/deps/npm/doc/cli/npm-dedupe.md @@ -3,8 +3,8 @@ npm-dedupe(1) -- Reduce duplication ## SYNOPSIS - npm dedupe [package names...] - npm ddp [package names...] + npm dedupe + npm ddp ## DESCRIPTION diff --git a/deps/npm/doc/cli/npm-dist-tag.md b/deps/npm/doc/cli/npm-dist-tag.md index ce4f7ed4d5..06721bbae6 100644 --- a/deps/npm/doc/cli/npm-dist-tag.md +++ b/deps/npm/doc/cli/npm-dist-tag.md @@ -33,17 +33,30 @@ When installing dependencies, a preferred tagged version may be specified: This also applies to `npm dedupe`. -Publishing a package sets the "latest" tag to the published version unless the +Publishing a package sets the `latest` tag to the published version unless the `--tag` option is used. For example, `npm publish --tag=beta`. +By default, `npm install <pkg>` (without any `@<version>` or `@<tag>` +specifier) installs the `latest` tag. + ## PURPOSE -Tags can be used to provide an alias instead of version numbers. For -example, `npm` currently uses the tag "next" to identify the upcoming -version, and the tag "latest" to identify the current version. +Tags can be used to provide an alias instead of version numbers. + +For example, a project might choose to have multiple streams of development +and use a different tag for each stream, +e.g., `stable`, `beta`, `dev`, `canary`. + +By default, the `latest` tag is used by npm to identify the current version of +a package, and `npm install <pkg>` (without any `@<version>` or `@<tag>` +specifier) installs the `latest` tag. Typically, projects only use the `latest` +tag for stable release versions, and use other tags for unstable versions such +as prereleases. + +The `next` tag is used by some projects to identify the upcoming version. -A project might choose to have multiple streams of development, e.g., -"stable", "canary". +By default, other than `latest`, no tag has any special significance to npm +itself. ## CAVEATS @@ -69,5 +82,4 @@ begin with a number or the letter `v`. * npm-registry(7) * npm-config(1) * npm-config(7) -* npm-tag(3) * npmrc(5) diff --git a/deps/npm/doc/cli/npm-install-test.md b/deps/npm/doc/cli/npm-install-test.md new file mode 100644 index 0000000000..471b36f16b --- /dev/null +++ b/deps/npm/doc/cli/npm-install-test.md @@ -0,0 +1,25 @@ +# npm install-test(1) -- Install package(s) and run tests + +## SYNOPSIS + + npm install-test (with no args, in package dir) + npm install-test [<@scope>/]<name> + npm install-test [<@scope>/]<name>@<tag> + npm install-test [<@scope>/]<name>@<version> + npm install-test [<@scope>/]<name>@<version range> + npm install-test <tarball file> + npm install-test <tarball url> + npm install-test <folder> + + alias: npm it + common options: [--save|--save-dev|--save-optional] [--save-exact] [--dry-run] + +## DESCRIPTION + +This command runs an `npm install` followed immediately by an `npm test`. It +takes exactly the same arguments as `npm install`. + +## SEE ALSO + +- npm-install(1) +- npm-test(1) diff --git a/deps/npm/doc/cli/npm-install.md b/deps/npm/doc/cli/npm-install.md index 75e9e13fd9..36566af0df 100644 --- a/deps/npm/doc/cli/npm-install.md +++ b/deps/npm/doc/cli/npm-install.md @@ -23,11 +23,11 @@ by that. See npm-shrinkwrap(1). A `package` is: -* a) a folder containing a program described by a package.json file +* a) a folder containing a program described by a `package.json(5)` file * b) a gzipped tarball containing (a) * c) a url that resolves to (b) * d) a `<name>@<version>` that is published on the registry (see `npm-registry(7)`) with (c) -* e) a `<name>@<tag>` that points to (d) +* e) a `<name>@<tag>` (see `npm-dist-tag(1)`) that points to (d) * f) a `<name>` that has a "latest" tag satisfying (e) * g) a `<git remote url>` that resolves to (a) @@ -45,7 +45,9 @@ after packing it up into a tarball (b). it installs the current package context (ie, the current working directory) as a global package. - By default, `npm install` will install all modules listed as dependencies. + By default, `npm install` will install all modules listed as dependencies + in `package.json(5)`. + With the `--production` flag (or when the `NODE_ENV` environment variable is set to `production`), npm will not install modules listed in `devDependencies`. @@ -76,7 +78,7 @@ after packing it up into a tarball (b). * `npm install [<@scope>/]<name> [-S|--save|-D|--save-dev|-O|--save-optional]`: Do a `<name>@<tag>` install, where `<tag>` is the "tag" config. (See - `npm-config(7)`.) + `npm-config(7)`. The config's default value is `latest`.) In most cases, this will install the latest version of the module published on npm. @@ -257,6 +259,16 @@ local copy exists on disk. The `-g` or `--global` argument will cause npm to install the package globally rather than locally. See `npm-folders(5)`. +The `--global-style` argument will cause npm to install the package into +your local `node_modules` folder with the same layout it uses with the +global `node_modules` folder. Only your direct dependencies will show in +`node_modules` and everything they depend on will be flattened in their +`node_modules` folders. This obviously will elminate some deduping. + +The `--legacy-bundling` argument will cause npm to install the package such +that versions of npm prior to 1.4, such as the one included with node 0.8, +can install the package. This eliminates all automatic deduping. + The `--link` argument will cause npm to link global installs into the local space in some cases. @@ -353,5 +365,6 @@ affects a real use-case, it will be investigated. * npmrc(5) * npm-registry(7) * npm-tag(1) -* npm-rm(1) +* npm-uninstall(1) * npm-shrinkwrap(1) +* package.json(5) diff --git a/deps/npm/doc/cli/npm-logout.md b/deps/npm/doc/cli/npm-logout.md index 411ea67e6c..59f49cc25a 100644 --- a/deps/npm/doc/cli/npm-logout.md +++ b/deps/npm/doc/cli/npm-logout.md @@ -22,7 +22,7 @@ connected to that scope, if set. ### registry -Default: http://registry.npmjs.org/ +Default: https://registry.npmjs.org/ The base URL of the npm package registry. If `scope` is also specified, it takes precedence. diff --git a/deps/npm/doc/cli/npm-outdated.md b/deps/npm/doc/cli/npm-outdated.md index bdc9b9b8ed..0792be24a7 100644 --- a/deps/npm/doc/cli/npm-outdated.md +++ b/deps/npm/doc/cli/npm-outdated.md @@ -10,9 +10,61 @@ npm-outdated(1) -- Check for outdated packages This command will check the registry to see if any (or, specific) installed packages are currently outdated. -The resulting field 'wanted' shows the latest version according to the -version specified in the package.json, the field 'latest' the very latest -version of the package. +In the output: + +* `wanted` is the maximum version of the package that satisfies the semver + range specified in `package.json`. If there's no available semver range (i.e. + you're running `npm outdated --global`, or the package isn't included in + `package.json`), then `wanted` shows the currently-installed version. +* `latest` is the version of the package tagged as latest in the registry. + Running `npm publish` with no special configuration will publish the package + with a dist-tag of `latest`. This may or may not be the maximum version of + the package, or the most-recently published version of the package, depending + on how the package's developer manages the latest dist-tag(1). +* `location` is where in the dependency tree the package is located. Note that + `npm outdated` defaults to a depth of 0, so unless you override that, you'll + always be seeing only top-level dependencies that are outdated. +* `package type` (when using `--long` / `-l`) tells you whether this package is + a `dependency` or a `devDependency`. Packages not included in `package.json` + are always marked `dependencies`. + +### An example + +``` +$ npm outdated +Package Current Wanted Latest Location +glob 5.0.15 5.0.15 6.0.1 test-outdated-output +nothingness 0.0.3 git git test-outdated-output +npm 3.5.1 3.5.2 3.5.1 test-outdated-output +local-dev 0.0.3 linked linked test-outdated-output +once 1.3.2 1.3.3 1.3.3 test-outdated-output +``` + +With these `dependencies`: +```json +{ + "glob": "^5.0.15", + "nothingness": "github:othiym23/nothingness#master", + "npm": "^3.5.1", + "once": "^1.3.1" +} +``` + +A few things to note: + +* `glob` requires `^5`, which prevents npm from installing `glob@6`, which is + outside the semver range. +* Git dependencies will always be reinstalled, because of how they're specified. + The installed committish might satisfy the dependency specifier (if it's + something immutable, like a commit SHA), or it might not, so `npm outdated` and + `npm update` have to fetch Git repos to check. This is why currently doing a + reinstall of a Git dependency always forces a new clone and install. +* `npm@3.5.2` is marked as "wanted", but "latest" is `npm@3.5.1` because npm + uses dist-tags to manage its `latest` and `next` release channels. `npm update` + will install the _newest_ version, but `npm install npm` (with no semver range) + will install whatever's tagged as `latest`. +* `once` is just plain out of date. Reinstalling `node_modules` from scratch or + running `npm update` will bring it up to spec. ## CONFIGURATION @@ -47,6 +99,7 @@ project. ### depth +* Default: 0 * Type: Int Max depth for checking dependency tree. @@ -54,5 +107,6 @@ Max depth for checking dependency tree. ## SEE ALSO * npm-update(1) +* npm-dist-tag(1) * npm-registry(7) * npm-folders(5) diff --git a/deps/npm/doc/cli/npm-prune.md b/deps/npm/doc/cli/npm-prune.md index 9089122117..c7f340ca7b 100644 --- a/deps/npm/doc/cli/npm-prune.md +++ b/deps/npm/doc/cli/npm-prune.md @@ -21,6 +21,6 @@ negate `NODE_ENV` being set to `production`. ## SEE ALSO -* npm-rm(1) +* npm-uninstall(1) * npm-folders(5) * npm-ls(1) diff --git a/deps/npm/doc/cli/npm-publish.md b/deps/npm/doc/cli/npm-publish.md index 8e4da32cd5..4ffefb8823 100644 --- a/deps/npm/doc/cli/npm-publish.md +++ b/deps/npm/doc/cli/npm-publish.md @@ -11,9 +11,12 @@ npm-publish(1) -- Publish a package ## DESCRIPTION -Publishes a package to the registry so that it can be installed by name. See -`npm-developers(7)` for details on what's included in the published package, as -well as details on how the package is built. +Publishes a package to the registry so that it can be installed by name. All +files in the package directory are included if no local `.gitignore` or +`.npmignore` file exists. If both files exist and a file is ignored by +`.gitignore` but not by `.npmignore` then it will be included. See +`npm-developers(7)` for full details on what's included in the published +package, as well as details on how the package is built. By default npm will publish to the public registry. This can be overridden by specifying a different default registry or using a `npm-scope(7)` in the name @@ -29,7 +32,8 @@ specifying a different default registry or using a `npm-scope(7)` in the name * `[--tag <tag>]` Registers the published package with the given tag, such that `npm install <name>@<tag>` will install this version. By default, `npm publish` updates - and `npm install` installs the `latest` tag. + and `npm install` installs the `latest` tag. See `npm-dist-tag(1)` for + details about tags. * `[--access <public|restricted>]` Tells the registry whether this package should be published as public or diff --git a/deps/npm/doc/cli/npm-run-script.md b/deps/npm/doc/cli/npm-run-script.md index 1e956adcc0..b8da1f09f3 100644 --- a/deps/npm/doc/cli/npm-run-script.md +++ b/deps/npm/doc/cli/npm-run-script.md @@ -40,6 +40,9 @@ you should write: instead of `"scripts": {"test": "node_modules/.bin/tap test/\*.js"}` to run your tests. +If you try to run a script without having a `node_modules` directory and it fails, +you will be given a warning to run `npm install`, just in case you've forgotten. + ## SEE ALSO * npm-scripts(7) diff --git a/deps/npm/doc/cli/npm-start.md b/deps/npm/doc/cli/npm-start.md index 759de221f3..94c468c296 100644 --- a/deps/npm/doc/cli/npm-start.md +++ b/deps/npm/doc/cli/npm-start.md @@ -7,7 +7,13 @@ npm-start(1) -- Start a package ## DESCRIPTION -This runs a package's "start" script, if one was provided. +This runs an arbitrary command specified in the package's `"start"` property of +its `"scripts"` object. If no `"start"` property is specified on the +`"scripts"` object, it will run `node server.js`. + +As of [`npm@2.0.0`](http://blog.npmjs.org/post/98131109725/npm-2-0-0), you can +use custom arguments when executing scripts. Refer to npm-run-script(1) for +more details. ## SEE ALSO diff --git a/deps/npm/doc/cli/npm-team.md b/deps/npm/doc/cli/npm-team.md index 08856ed3ec..5a8b4b63e3 100644 --- a/deps/npm/doc/cli/npm-team.md +++ b/deps/npm/doc/cli/npm-team.md @@ -21,7 +21,7 @@ handle permissions for packages. Teams must always be fully qualified with the organization/scope they belong to when operating on them, separated by a colon (`:`). That is, if you have a `developers` team on a `foo` organization, you must always refer to that team as -`developers:foo` in these commands. +`foo:developers` in these commands. * create / destroy: Create a new team, or destroy an existing one. diff --git a/deps/npm/doc/cli/npm-uninstall.md b/deps/npm/doc/cli/npm-uninstall.md index 97d72d2c5c..e870b23d5c 100644 --- a/deps/npm/doc/cli/npm-uninstall.md +++ b/deps/npm/doc/cli/npm-uninstall.md @@ -1,4 +1,4 @@ -npm-rm(1) -- Remove a package +npm-uninstall(1) -- Remove a package ============================= ## SYNOPSIS diff --git a/deps/npm/doc/cli/npm-update.md b/deps/npm/doc/cli/npm-update.md index 72719670dd..f79752fae9 100644 --- a/deps/npm/doc/cli/npm-update.md +++ b/deps/npm/doc/cli/npm-update.md @@ -22,7 +22,7 @@ or local) will be updated. As of `npm@2.6.1`, the `npm update` will only inspect top-level packages. Prior versions of `npm` would also recursively inspect all dependencies. -To get the old behavior, use `npm --depth 9999 update`, but be warned that +To get the old behavior, use `npm --depth Infinity update`, but be warned that simultaneous asynchronous update of all packages, including `npm` itself and packages that `npm` depends on, often causes problems up to and including the uninstallation of `npm` itself. diff --git a/deps/npm/doc/cli/npm-version.md b/deps/npm/doc/cli/npm-version.md index 6bd550659d..2932516bb6 100644 --- a/deps/npm/doc/cli/npm-version.md +++ b/deps/npm/doc/cli/npm-version.md @@ -3,7 +3,7 @@ npm-version(1) -- Bump a package version ## SYNOPSIS - npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease] + npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git] 'npm [-v | --version]' to print npm version 'npm view <pkg> version' to view a package's published version @@ -14,10 +14,11 @@ npm-version(1) -- Bump a package version Run this in a package directory to bump the version and write the new data back to `package.json` and, if present, `npm-shrinkwrap.json`. -The `newversion` argument should be a valid semver string, *or* a -valid second argument to semver.inc (one of `patch`, `minor`, `major`, -`prepatch`, `preminor`, `premajor`, `prerelease`). In the second case, +The `newversion` argument should be a valid semver string, a +valid second argument to [semver.inc](https://github.com/npm/node-semver#functions) (one of `patch`, `minor`, `major`, +`prepatch`, `preminor`, `premajor`, `prerelease`), or `from-git`. In the second case, the existing version will be incremented by 1 in the specified field. +`from-git` will try to read the latest git tag, and use that as the new npm version. If run in a git repo, it will also create a version commit and tag. This behavior is controlled by `git-tag-version` (see below), and can diff --git a/deps/npm/doc/cli/npm.md b/deps/npm/doc/cli/npm.md index 8a05d0605a..9746a15fc0 100644 --- a/deps/npm/doc/cli/npm.md +++ b/deps/npm/doc/cli/npm.md @@ -130,7 +130,7 @@ 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. -* <http://github.com/npm/npm/issues> +* <https://github.com/npm/npm/issues> * <npm-@googlegroups.com> ## BUGS @@ -138,7 +138,7 @@ the issues list or ask on the mailing list. When you find issues, please report them: * web: - <http://github.com/npm/npm/issues> + <https://github.com/npm/npm/issues> * email: <npm-@googlegroups.com> @@ -166,4 +166,3 @@ will no doubt tell you to put the output in a gist or email. * npm-config(7) * npmrc(5) * npm-index(7) -* npm(3) diff --git a/deps/npm/doc/files/npm-folders.md b/deps/npm/doc/files/npm-folders.md index 1fb21b1a31..6846b1fce8 100644 --- a/deps/npm/doc/files/npm-folders.md +++ b/deps/npm/doc/files/npm-folders.md @@ -20,12 +20,10 @@ This document will tell you what it puts where. ### 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`. +On most systems, this is `/usr/local`. 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 @@ -45,7 +43,7 @@ Global installs on Windows go to `{prefix}/node_modules` (that is, no Scoped packages are installed the same way, except they are grouped together in a sub-folder of the relevant `node_modules` folder with the name of that scope prefix by the @ symbol, e.g. `npm install @myorg/package` would place -the package in `{prefix}/node_modules/@myorg/package`. See `scopes(7)` for +the package in `{prefix}/node_modules/@myorg/package`. See `scope(7)` for more details. If you wish to `require()` a package, then install it locally. diff --git a/deps/npm/doc/files/package.json.md b/deps/npm/doc/files/package.json.md index d907945194..4b278e1324 100644 --- a/deps/npm/doc/files/package.json.md +++ b/deps/npm/doc/files/package.json.md @@ -21,7 +21,7 @@ The name is what your thing is called. Some rules: -* The name must be shorter than 214 characters. This includes the scope for +* The name must be less than or equal to 214 characters. This includes the scope for scoped packages. * The name can't start with a dot or an underscore. * New packages must not have uppercase letters in the name. @@ -105,10 +105,10 @@ current SPDX license identifier for the license you're using, like this: You can check [the full list of SPDX license IDs](https://spdx.org/licenses/). Ideally you should pick one that is -[OSI](http://opensource.org/licenses/alphabetical) approved. +[OSI](https://opensource.org/licenses/alphabetical) approved. If your package is licensed under multiple common licenses, use an [SPDX license -expression syntax version 2.0 string](http://npmjs.com/package/spdx), like this: +expression syntax version 2.0 string](https://npmjs.com/package/spdx), like this: { "license" : "(ISC OR GPL-3.0)" } @@ -410,7 +410,7 @@ See semver(7) for more details about specifying version ranges. * `git...` See 'Git URLs as Dependencies' below * `user/repo` See 'GitHub URLs' below * `tag` A specific version tagged and published as `tag` See `npm-tag(1)` -* `path/path/path` See Local Paths below +* `path/path/path` See [Local Paths](#local-paths) below For example, these are all valid: @@ -726,4 +726,4 @@ npm will default some values based on package contents. * npm-faq(7) * npm-install(1) * npm-publish(1) -* npm-rm(1) +* npm-uninstall(1) diff --git a/deps/npm/doc/misc/npm-config.md b/deps/npm/doc/misc/npm-config.md index f88bf9f8a0..a3c7b5a506 100644 --- a/deps/npm/doc/misc/npm-config.md +++ b/deps/npm/doc/misc/npm-config.md @@ -240,7 +240,7 @@ A client certificate to pass when accessing the registry. ### color -* Default: true on Posix, false on Windows +* Default: true * Type: Boolean or `"always"` If false, never shows colors. If `"always"` then always shows colors. @@ -385,6 +385,18 @@ Operates in "global" mode, so that packages are installed into the The config file to read for global config options. +### global-style + +* Default: false +* Type: Boolean + +Causes npm to install the package into your local `node_modules` folder with +the same layout it uses with the global `node_modules` folder. Only your +direct dependencies will show in `node_modules` and everything they depend +on will be flattened in their `node_modules` folders. This obviously will +elminate some deduping. If used with `legacy-bundling`, `legacy-bundling` will be +preferred. + ### group * Default: GID of the current process @@ -491,6 +503,16 @@ change. Only the output from `npm ls --json` is currently valid. A client key to pass when accessing the registry. +### legacy-bundling + +* Default: false +* Type: Boolean + +Causes npm to install the package such that versions of npm prior to 1.4, +such as the one included with node 0.8, can install the package. This +eliminates all automatic deduping. If used with `global-style` this option +will be preferred. + ### link * Default: false @@ -863,7 +885,7 @@ on success, but left behind on failure for forensic purposes. ### unicode -* Default: true on windows and mac/unix systems with a unicode locale +* Default: false on windows, true on mac/unix systems with a unicode locale * Type: Boolean When set to true, npm uses unicode characters in the tree output. When diff --git a/deps/npm/doc/misc/npm-developers.md b/deps/npm/doc/misc/npm-developers.md index 2ef900b349..25957f11ec 100644 --- a/deps/npm/doc/misc/npm-developers.md +++ b/deps/npm/doc/misc/npm-developers.md @@ -104,7 +104,7 @@ create an empty `.npmignore` file to override it. Like `git`, `npm` looks for `.npmignore` and `.gitignore` files in all subdirectories of your package, not only the root directory. -`.npmignore` files follow the [same pattern rules](http://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files) +`.npmignore` files follow the [same pattern rules](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files) as `.gitignore` files: * Blank lines or lines starting with `#` are ignored. @@ -191,7 +191,7 @@ This is documented better in npm-adduser(1). ## Publish your package -This part's easy. IN the root of your folder, do this: +This part's easy. In the root of your folder, do this: npm publish diff --git a/deps/npm/doc/misc/npm-faq.md b/deps/npm/doc/misc/npm-faq.md deleted file mode 100644 index cc1c19e61a..0000000000 --- a/deps/npm/doc/misc/npm-faq.md +++ /dev/null @@ -1,393 +0,0 @@ -npm-faq(7) -- Frequently Asked Questions -======================================== - -## Where can I find these docs in HTML? - -<https://docs.npmjs.com/>, or run: - - npm config set viewer browser - -This command will set the npm docs to open in your default web browser rather than `man`. - -## It didn't work. - -Please provide a little more detail, search for the error via [Google](https://google.com) or [StackOverflow npm](http://stackoverflow.com/search?q=npm) to see if another developer has encountered a similar problem. - -## Why didn't it work? - -I don't know yet. - -Try reading the error output first, ensure this is a true npm issue and not a package issue. If you are having an issue with a package dependency, please submit your error to that particular package maintainer. - -For any npm issues, try following the instructions, or even retracing your steps. If the issue continues to persist, submit a bug with the steps to reproduce, please include the operating system you are working on, along with the error you recieve. - -## Where does npm put stuff? - -See `npm-folders(5)` - -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 on my computer in a central location? - -Install it globally by tacking `-g` or `--global` to the command. (This -is especially important for command line utilities that need to add -their bins to the global system `PATH`.) - -## I installed something globally, but I can't `require()` it - -Install it locally. - -The global install location is a place for command-line utilities -to put their bins in the system `PATH`. It's not for use with `require()`. - -If you `require()` a module in your code, then that means it's a -dependency, and a part of your program. You need to install it locally -in your program. - -## Why can't npm just put everything in one place, like other package managers? - -Not every change is an improvement, but every improvement is a change. -This would be like asking git to do network IO for every commit. It's -not going to happen, because it's a terrible idea that causes more -problems than it solves. - -It is much harder to avoid dependency conflicts without nesting -dependencies. This is fundamental to the way that npm works, and has -proven to be an extremely successful approach. See `npm-folders(5)` for -more details. - -If you want a package to be installed in one place, and have all your -programs reference the same copy of it, then use the `npm link` command. -That's what it's for. Install it globally, then link it into each -program that uses it. - -## Whatever, I really want the old style 'everything global' style. - -Write your own package manager. You could probably even wrap up `npm` -in a shell script if you really wanted to. - -npm will not help you do something that is known to be a bad idea. - -## Should I check my `node_modules` folder into git? - -Usually, no. Allow npm to resolve dependencies for your packages. - -For packages you **deploy**, such as websites and apps, -you should use npm shrinkwrap to lock down your full dependency tree: - -<https://docs.npmjs.com/cli/shrinkwrap> - -If you are paranoid about depending on the npm ecosystem, -you should run a private npm mirror or a private cache. - -If you want 100% confidence in being able to reproduce the specific bytes -included in a deployment, you should use an additional mechanism that can -verify contents rather than versions. For example, -Amazon machine images, DigitalOcean snapshots, Heroku slugs, or simple tarballs. - -## Is it 'npm' or 'NPM' or 'Npm'? - -npm should never be capitalized unless it is being displayed in a -location that is customarily all-caps (such as the title of man pages.) - -## 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 install 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 https://www.npmjs.com/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`. - -## What is a `module`? - -A module is anything that can be loaded with `require()` in a Node.js -program. The following things are all examples of things that can be -loaded as modules: - -* A folder with a `package.json` file containing a `main` field. -* A folder with an `index.js` file in it. -* A JavaScript file. - -Most npm packages are modules, because they are libraries that you -load with `require`. However, there's no requirement that an npm -package be a module! Some only contain an executable command-line -interface, and don't provide a `main` field for use in Node programs. - -Almost all npm packages (at least, those that are Node programs) -*contain* many modules within them (because every file they load with -`require()` is a module). - -In the context of a Node program, the `module` is also the thing that -was loaded *from* a file. For example, in the following program: - - var req = require('request') - -we might say that "The variable `req` refers to the `request` module". - -## So, why is it the "`node_modules`" folder, but "`package.json`" file? Why not `node_packages` or `module.json`? - -The `package.json` file defines the package. (See "What is a -package?" above.) - -The `node_modules` folder is the place Node.js looks for modules. -(See "What is a module?" above.) - -For example, if you create a file at `node_modules/foo.js` and then -had a program that did `var f = require('foo.js')` then it would load -the module. However, `foo.js` is not a "package" in this case, -because it does not have a package.json. - -Alternatively, if you create a package which does not have an -`index.js` or a `"main"` field in the `package.json` file, then it is -not a module. Even if it's installed in `node_modules`, it can't be -an argument to `require()`. - -## `"node_modules"` is the name of my deity's arch-rival, and a Forbidden Word in my religion. Can I configure npm to use a different folder? - -No. This will never happen. This question comes up sometimes, -because it seems silly from the outside that npm couldn't just be -configured to put stuff somewhere else, and then npm could load them -from there. It's an arbitrary spelling choice, right? What's the big -deal? - -At the time of this writing, the string `'node_modules'` appears 151 -times in 53 separate files in npm and node core (excluding tests and -documentation). - -Some of these references are in node's built-in module loader. Since -npm is not involved **at all** at run-time, node itself would have to -be configured to know where you've decided to stick stuff. Complexity -hurdle #1. Since the Node module system is locked, this cannot be -changed, and is enough to kill this request. But I'll continue, in -deference to your deity's delicate feelings regarding spelling. - -Many of the others are in dependencies that npm uses, which are not -necessarily tightly coupled to npm (in the sense that they do not read -npm's configuration files, etc.) Each of these would have to be -configured to take the name of the `node_modules` folder as a -parameter. Complexity hurdle #2. - -Furthermore, npm has the ability to "bundle" dependencies by adding -the dep names to the `"bundledDependencies"` list in package.json, -which causes the folder to be included in the package tarball. What -if the author of a module bundles its dependencies, and they use a -different spelling for `node_modules`? npm would have to rename the -folder at publish time, and then be smart enough to unpack it using -your locally configured name. Complexity hurdle #3. - -Furthermore, what happens when you *change* this name? Fine, it's -easy enough the first time, just rename the `node_modules` folders to -`./blergyblerp/` or whatever name you choose. But what about when you -change it again? npm doesn't currently track any state about past -configuration settings, so this would be rather difficult to do -properly. It would have to track every previous value for this -config, and always accept any of them, or else yesterday's install may -be broken tomorrow. Complexity hurdle #4. - -Never going to happen. The folder is named `node_modules`. It is -written indelibly in the Node Way, handed down from the ancient times -of Node 0.3. - -## How do I install node with npm? - -You don't. Try one of these node version managers: - -Unix: - -* <http://github.com/isaacs/nave> -* <http://github.com/visionmedia/n> -* <http://github.com/creationix/nvm> - -Windows: - -* <http://github.com/marcelklehr/nodist> -* <https://github.com/coreybutler/nvm-windows> -* <https://github.com/hakobera/nvmw> -* <https://github.com/nanjingboy/nvmw> - -## How can I use npm for development? - -See `npm-developers(7)` and `package.json(5)`. - -You'll most likely want to `npm link` your development folder. That's -awesomely handy. - -To set up your own private registry, check out `npm-registry(7)`. - -## 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.) - -## How do I symlink to a dev folder so I don't have to keep re-installing? - -See `npm-link(1)` - -## The package registry website. What is that exactly? - -See `npm-registry(7)`. - -## I forgot my password, and can't publish. How do I reset it? - -Go to <https://npmjs.com/forgot>. - -## I get ECONNREFUSED a lot. What's up? - -Either the registry is down, or node's DNS isn't able to reach out. - -To check if the registry is down, open up -<https://registry.npmjs.org/> 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 us know by emailing <support@npmjs.com> -or posting an issue at <https://github.com/npm/npm/issues>. If it's -down for the world (and not just on your local network) then we're -probably already being pinged about it. - -You can also often get a faster response by visiting the #npm channel -on Freenode IRC. - -## Why no namespaces? - -npm has only one global namespace. If you want to namespace your own packages, -you may: simply use the `-` character to separate the names or use scoped -packages. npm is a mostly anarchic system. There is not sufficient need to -impose namespace rules on everyone. - -As of 2.0, npm supports scoped packages, which allow you to publish a group of -related modules without worrying about name collisions. - -Every npm user owns the scope associated with their username. For example, the -user named `npm` owns the scope `@npm`. Scoped packages are published inside a -scope by naming them as if they were files under the scope directory, e.g., by -setting `name` in `package.json` to `@npm/npm`. - -Scoped packages are supported by the public npm registry. The npm client is -backwards-compatible with un-scoped registries, so it can be used to work with -scoped and un-scoped registries at the same time. - -Unscoped packages can only depend on other unscoped packages. Scoped packages -can depend on packages from their own scope, a different scope, or the public -registry (unscoped). - -For the current documentation of scoped packages, see -<https://docs.npmjs.com/misc/scope> - -References: - -1. For the reasoning behind the "one global namespace", please see this - discussion: <https://github.com/npm/npm/issues/798> (TL;DR: It doesn't - actually make things better, and can make them worse.) - -2. For the pre-implementation discussion of the scoped package feature, see - this discussion: <https://github.com/npm/npm/issues/5239> - -## Who does npm? - -npm was originally written by Isaac Z. Schlueter, and many others have -contributed to it, some of them quite substantially. - -The npm open source project, The npm Registry, and [the community -website](https://www.npmjs.com) are maintained and operated by the -good folks at [npm, Inc.](http://www.npmjs.com) - -## I have a question or request not addressed here. Where should I put it? - -Post an issue on the github project: - -* <https://github.com/npm/npm/issues> - -## Why does npm hate me? - -npm is not capable of hatred. It loves everyone, especially you. - -## SEE ALSO - -* npm(1) -* npm-developers(7) -* package.json(5) -* npm-config(1) -* npm-config(7) -* npmrc(5) -* npm-config(7) -* npm-folders(5) diff --git a/deps/npm/doc/misc/npm-index.md b/deps/npm/doc/misc/npm-index.md index 1bf102f4e4..7df6cc2c36 100644 --- a/deps/npm/doc/misc/npm-index.md +++ b/deps/npm/doc/misc/npm-index.md @@ -85,6 +85,10 @@ Get help on npm Interactively create a package.json file +### npm-install-test(1) + +Install package(s) and run tests + ### npm-install(1) Install a package @@ -249,10 +253,6 @@ Developer Guide Handling Module Name Disputes -### npm-faq(7) - -Frequently Asked Questions - ### npm-index(7) Index of all npm documentation diff --git a/deps/npm/doc/misc/npm-registry.md b/deps/npm/doc/misc/npm-registry.md index bfc978faab..cc1a1b299c 100644 --- a/deps/npm/doc/misc/npm-registry.md +++ b/deps/npm/doc/misc/npm-registry.md @@ -11,10 +11,10 @@ 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 +The official public npm registry is at <https://registry.npmjs.org/>. It is powered by a CouchDB database, of which there is a public mirror at -<http://skimdb.npmjs.com/registry>. The code for the couchapp is -available at <http://github.com/npm/npm-registry-couchapp>. +<https://skimdb.npmjs.com/registry>. The code for the couchapp is +available at <https://github.com/npm/npm-registry-couchapp>. The registry URL used is determined by the scope of the package (see `npm-scope(7)`). If no scope is specified, the default registry is used, which is diff --git a/deps/npm/doc/misc/npm-scripts.md b/deps/npm/doc/misc/npm-scripts.md index c7f8b20ce6..e7f0f0c4e3 100644 --- a/deps/npm/doc/misc/npm-scripts.md +++ b/deps/npm/doc/misc/npm-scripts.md @@ -157,10 +157,10 @@ For example, if your package.json contains this: } } -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 +then `scripts/install.js` will be called for the install +and post-install stages of the lifecycle, and `scripts/uninstall.js` +will be called when the package is uninstalled. Since +`scripts/install.js` is running for two different phases, it would be wise in this case to look at the `npm_lifecycle_event` environment variable. @@ -210,7 +210,7 @@ above. 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 + the `npm_config_binroot` environment variable 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 diff --git a/deps/npm/doc/misc/removing-npm.md b/deps/npm/doc/misc/removing-npm.md index bedd28a2fa..84274522c2 100644 --- a/deps/npm/doc/misc/removing-npm.md +++ b/deps/npm/doc/misc/removing-npm.md @@ -50,5 +50,5 @@ modules. To track those down, you can do the following: ## SEE ALSO * README -* npm-rm(1) +* npm-uninstall(1) * npm-prune(1) diff --git a/deps/npm/doc/misc/semver.md b/deps/npm/doc/misc/semver.md index 2bd5acc29b..97a50cdf0c 100644 --- a/deps/npm/doc/misc/semver.md +++ b/deps/npm/doc/misc/semver.md @@ -107,7 +107,7 @@ The method `.inc` takes an additional `identifier` string argument that will append the value of the string as a prerelease identifier: ```javascript -> semver.inc('1.2.3', 'pre', 'beta') +> semver.inc('1.2.3', 'prerelease', 'beta') '1.2.4-beta.0' ``` @@ -228,6 +228,30 @@ zero. * `^1.x` := `>=1.0.0 <2.0.0` * `^0.x` := `>=0.0.0 <1.0.0` +### Range Grammar + +Putting all this together, here is a Backus-Naur grammar for ranges, +for the benefit of parser authors: + +```bnf +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' | ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | ['1'-'9']['0'-'9']+ +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ +``` + ## Functions All methods and classes take a final `loose` boolean argument that, if |