Parse the things that can be arguments to `npm install`
npm install @pnpm/npm-package-argParses package name and specifier passed to commands like npm install ornpm cache add, or as found in package.json dependency sections.
``javascript
var assert = require("assert")
var npa = require("@pnpm/npm-package-arg")
// Pass in the descriptor, and it'll return an object
try {
var parsed = npa("@bar/foo@1.2")
} catch (ex) {
…
}
`
var npa = require('@pnpm/npm-package-arg')
arg* - a string that you might pass to npm install, like:foo@1.2, @bar/foo@1.2, foo@user/foo, http://x.com/foo.tgz,git+https://github.com/user/foo, bitbucket:user/foo, foo.tar.gz,../foo/bar/ or bar. If the arg you provide doesn't have a specifierfoo
part, eg then the specifier will default to latest.process.cwd()
where* - Optionally the path to resolve file paths relative to. Defaults to
Throws if the package name is invalid, a dist-tag is invalid or a URL's protocol is not supported.
name* - The name of the module you want to install. For example: foo or @bar/foo.1.2
spec* - The specifier indicating where and how you can get this module. Something like:, ^1.7.17, http://x.com/foo.tgz, git+https://github.com/user/foo,bitbucket:user/foo, file:foo.tar.gz or file:../foo/bar/. If notlatest
included then the default is .process.cwd()
where* - Optionally the path to resolve file paths relative to. Defaults to
Throws if the package name is invalid, a dist-tag is invalid or a URL's protocol is not supported.
The objects that are returned by @pnpm/npm-package-arg contain the following
keys:
* type - One of the following strings:git
* - A git repotag
* - A tagged version, like "foo@latest"version
* - A specific version number, like "foo@1.2.3"range
* - A version range, like "foo@2.x"file
* - A local .tar.gz, .tar or .tgz file.directory
* - A local directory.remote
* - An http url (presumably to a tgz)registry
* - If true this specifier refers to a resource hosted on atag
registry. This is true for , version and range types.name
* - If known, the name field expected in the resulting pkg.scope
* - If a name is something like @org/module then the scope@org
field will be set to . If it doesn't have a scoped name, thennull
scope is .escapedName
* - A version of name escaped to match the npm scoped packagesname
specification. Mostly used when making requests against a registry. When
is null, escapedName will also be null.rawSpec
* - The specifier part that was parsed out in calls to npa(arg),spec
or the value of in calls to npa.resolve(name, spec).
* saveSpec - The normalized specifier, for saving to package.json files.
null for registry dependencies.
* fetchSpec - The version of the specifier to be used to fetch this
resource. null for shortcuts to hosted git dependencies as there isn't
just one URL to try with them.
* gitRange - If set, this is a semver specifier to match against git tags with
* gitCommittish - If set, this is the specific committish to use with a git dependency.
* hosted - If from === 'hosted' then this will be a hosted-git-info
object. This property is not included when serializing the object as
JSON.
* raw - The original un-modified string that was provided. If called as
npa.resolve(name, spec) then this will be name + '@' + spec.