blob: c5ef4e62e6538e28aacf17743bbb6426a473033a [file] [log] [blame]
{
"_from": "npm-package-arg@>=4.1.0 <4.2.0",
"_id": "npm-package-arg@4.1.0",
"_location": "/npm/npm-package-arg",
"_nodeVersion": "4.2.1",
"_npmUser": {
"email": "me@re-becca.org",
"name": "iarna"
},
"_npmVersion": "3.4.0",
"_phantomChildren": {},
"_requiredBy": [
"/npm",
"/npm/init-package-json",
"/npm/npm-registry-client",
"/npm/realize-package-specifier"
],
"_resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-4.1.0.tgz",
"_shasum": "2e015f8ac00737cb97f997c9cbf059f42a74527d",
"_shrinkwrap": null,
"author": {
"email": "i@izs.me",
"name": "Isaac Z. Schlueter",
"url": "http://blog.izs.me/"
},
"bugs": {
"url": "https://github.com/npm/npm-package-arg/issues"
},
"dependencies": {
"hosted-git-info": "^2.1.4",
"semver": "4 || 5"
},
"description": "Parse the things that can be arguments to `npm install`",
"devDependencies": {
"tap": "^1.2.0"
},
"directories": {
"test": "test"
},
"dist": {
"shasum": "2e015f8ac00737cb97f997c9cbf059f42a74527d",
"tarball": "http://registry.npmjs.org/npm-package-arg/-/npm-package-arg-4.1.0.tgz"
},
"gitHead": "383b4783a076b825815be51eb1ab2e4bb8a1e1fc",
"homepage": "https://github.com/npm/npm-package-arg",
"license": "ISC",
"main": "npa.js",
"maintainers": [
{
"email": "i@izs.me",
"name": "isaacs"
},
{
"email": "ogd@aoaioxxysz.net",
"name": "othiym23"
},
{
"email": "me@re-becca.org",
"name": "iarna"
}
],
"name": "npm-package-arg",
"optionalDependencies": {},
"readme": "# npm-package-arg\n\nParse package name and specifier passed to commands like `npm install` or\n`npm cache add`. This just parses the text given-- it's worth noting that\n`npm` has further logic it applies by looking at your disk to figure out\nwhat ambiguous specifiers are. If you want that logic, please see\n[realize-package-specifier].\n\n[realize-package-specifier]: https://www.npmjs.org/package/realize-package-specifier\n\nArguments look like: `foo@1.2`, `@bar/foo@1.2`, `foo@user/foo`, `http://x.com/foo.tgz`,\n`git+https://github.com/user/foo`, `bitbucket:user/foo`, `foo.tar.gz` or `bar`\n\n## EXAMPLES\n\n```javascript\nvar assert = require(\"assert\")\nvar npa = require(\"npm-package-arg\")\n\n// Pass in the descriptor, and it'll return an object\nvar parsed = npa(\"@bar/foo@1.2\")\n\n// Returns an object like:\n{\n raw: '@bar/foo@1.2', // what was passed in\n name: \"@bar/foo\", // the name of the package\n scope: \"@bar\", // the private scope of the package, or null\n type: \"range\", // the type of specifier this is\n spec: \">=1.2.0 <1.3.0\" // the expanded specifier\n rawSpec: \"1.2\" // the specifier as passed in\n }\n\n// Parsing urls pointing at hosted git services produces a variation:\nvar parsed = npa(\"git+https://github.com/user/foo\")\n\n// Returns an object like:\n{\n raw: 'git+https://github.com/user/foo',\n scope: null,\n name: null,\n rawSpec: 'git+https://github.com/user/foo',\n spec: 'user/foo',\n type: 'hosted',\n hosted: {\n type: 'github',\n ssh: 'git@github.com:user/foo.git',\n sshurl: 'git+ssh://git@github.com/user/foo.git',\n https: 'https://github.com/user/foo.git',\n directUrl: 'https://raw.githubusercontent.com/user/foo/master/package.json'\n }\n}\n\n// Completely unreasonable invalid garbage throws an error\n// Make sure you wrap this in a try/catch if you have not\n// already sanitized the inputs!\nassert.throws(function() {\n npa(\"this is not \\0 a valid package name or url\")\n})\n```\n\n## USING\n\n`var npa = require('npm-package-arg')`\n\n* var result = npa(*arg*)\n\nParses *arg* and returns a result object detailing what *arg* is.\n\n*arg* -- a package descriptor, like: `foo@1.2`, or `foo@user/foo`, or\n`http://x.com/foo.tgz`, or `git+https://github.com/user/foo`\n\n## RESULT OBJECT\n\nThe objects that are returned by npm-package-arg contain the following\nkeys:\n\n* `name` - If known, the `name` field expected in the resulting pkg.\n* `type` - One of the following strings:\n * `git` - A git repo\n * `hosted` - A hosted project, from github, bitbucket or gitlab. Originally\n either a full url pointing at one of these services or a shorthand like\n `user/project` or `github:user/project` for github or `bitbucket:user/project`\n for bitbucket.\n * `tag` - A tagged version, like `\"foo@latest\"`\n * `version` - A specific version number, like `\"foo@1.2.3\"`\n * `range` - A version range, like `\"foo@2.x\"`\n * `local` - A local file or folder path\n * `remote` - An http url (presumably to a tgz)\n* `spec` - The \"thing\". URL, the range, git repo, etc.\n* `hosted` - If type=hosted this will be an object with the following keys:\n * `type` - github, bitbucket or gitlab\n * `ssh` - The ssh path for this git repo\n * `sshUrl` - The ssh URL for this git repo\n * `httpsUrl` - The HTTPS URL for this git repo\n * `directUrl` - The URL for the package.json in this git repo\n* `raw` - The original un-modified string that was provided.\n* `rawSpec` - The part after the `name@...`, as it was originally\n provided.\n* `scope` - If a name is something like `@org/module` then the `scope`\n field will be set to `org`. If it doesn't have a scoped name, then\n scope is `null`.\n\nIf you only include a name and no specifier part, eg, `foo` or `foo@` then\na default of `latest` will be used (as of 4.1.0). This is contrast with\nprevious behavior where `*` was used.\n",
"readmeFilename": "README.md",
"repository": {
"type": "git",
"url": "git+https://github.com/npm/npm-package-arg.git"
},
"scripts": {
"test": "tap test/*.js"
},
"version": "4.1.0"
}