conventional-changelog-action/node_modules/get-pkg-repo/README.md

146 lines
5.0 KiB
Markdown

# [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] [![Coverage Status][coveralls-image]][coveralls-url]
> Get normalized repository from package json data
## Synopsis
People write different formats of repository url in package.json and sometimes there is even a typo.
This module extracts the code from [npm/repo](https://github.com/npm/npm/blob/master/lib/repo.js), and uses [normalize-package-data](https://github.com/npm/normalize-package-data), [hosted-git-info](https://github.com/npm/hosted-git-info) and [parse-github-repo-url](https://github.com/repo-utils/parse-github-repo-url) to parse data. Please check them out for more details.
**This module can fix some common [typos](typos.json).**
**If you find your normalized repository is not correct, It's most likely the underlying deps' problem. Please try to triage the problem before you open an issue here.**
## Install
```sh
$ npm install --save get-pkg-repo
```
## Usage
```js
var fs = require('fs');
var getPkgRepo = require('get-pkg-repo');
fs.readFile('package.json', function(err, pkgData) {
if (err) {
...
}
var repo = getPkgRepo(pkgData);
console.log(repo)
/*=>
{ type: 'github',
protocols: [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],
domain: 'github.com',
treepath: 'tree',
filetemplate: 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',
bugstemplate: 'https://{domain}/{user}/{project}/issues',
gittemplate: 'git://{auth@}{domain}/{user}/{project}.git{#committish}',
sshtemplate: 'git@{domain}:{user}/{project}.git{#committish}',
sshurltemplate: 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',
browsetemplate: 'https://{domain}/{user}/{project}{/tree/committish}',
docstemplate: 'https://{domain}/{user}/{project}{/tree/committish}#readme',
httpstemplate: 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',
shortcuttemplate: '{type}:{user}/{project}{#committish}',
pathtemplate: '{user}/{project}{#committish}',
pathmatch: /^[\/]([^\/]+)[\/]([^\/]+?)(?:[.]git)?$/,
protocols_re: /^(git|http|git\+ssh|git\+https|ssh|https):$/,
user: 'stevemao',
auth: null,
project: 'get-pkg-repo',
committish: null,
default: 'https' }
*/
})
```
## API
getPkgRepo(pkgData, [fixTypo])
Returns a hosted-git-info returned object if it matches a git host. If not returns a `url.parse` object with a `browse` function which returns the url that can be browsed.
### pkgData
Type: `object` or `json`
Package.json data
### fixTypo
Type: `boolean`
If you want to fix your typical typos automatically, pass true. See [the list of predefined typos](typos.json).
## CLI
```sh
$ npm install --global get-pkg-repo
```
You can use cli to see what your url will look like after being parsed.
You can enter interactive mode by typing
```sh
$ get-pkg-repo
https://github.com/stevemao/get-pkg-repo
{ type: 'github',
protocols: [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],
domain: 'github.com',
treepath: 'tree',
filetemplate: 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}',
bugstemplate: 'https://{domain}/{user}/{project}/issues',
gittemplate: 'git://{auth@}{domain}/{user}/{project}.git{#committish}',
sshtemplate: 'git@{domain}:{user}/{project}.git{#committish}',
sshurltemplate: 'git+ssh://git@{domain}/{user}/{project}.git{#committish}',
browsetemplate: 'https://{domain}/{user}/{project}{/tree/committish}',
docstemplate: 'https://{domain}/{user}/{project}{/tree/committish}#readme',
httpstemplate: 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}',
shortcuttemplate: '{type}:{user}/{project}{#committish}',
pathtemplate: '{user}/{project}{#committish}',
pathmatch: /^[\/]([^\/]+)[\/]([^\/]+?)(?:[.]git)?$/,
protocols_re: /^(git|http|git\+ssh|git\+https|ssh|https):$/,
user: 'stevemao',
auth: null,
project: 'get-pkg-repo',
committish: null,
default: 'https' }
```
You can also validate the repository url in your package.json by using the command followed by a package.json path. You can specify more than one path at a time.
```sh
$ get-pkg-repo package.json
{ type: 'github',
protocols: [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],
...
# or
$ cat package.json | get-pkg-repo --fix-typo
{ type: 'github',
protocols: [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],
...
```
## License
MIT © [Steve Mao](https://github.com/stevemao)
[npm-image]: https://badge.fury.io/js/get-pkg-repo.svg
[npm-url]: https://npmjs.org/package/get-pkg-repo
[travis-image]: https://travis-ci.org/stevemao/get-pkg-repo.svg?branch=master
[travis-url]: https://travis-ci.org/stevemao/get-pkg-repo
[daviddm-image]: https://david-dm.org/stevemao/get-pkg-repo.svg?theme=shields.io
[daviddm-url]: https://david-dm.org/stevemao/get-pkg-repo
[coveralls-image]: https://coveralls.io/repos/stevemao/get-pkg-repo/badge.svg
[coveralls-url]: https://coveralls.io/r/stevemao/get-pkg-repo