What is get-pkg-repo?
The get-pkg-repo npm package is designed to extract repository information from a package.json file. This can be useful for various tasks such as automating repository-related workflows, generating documentation, or integrating with other tools that require repository details.
What are get-pkg-repo's main functionalities?
Extract Repository URL
This feature allows you to extract the repository URL from a package.json file. The code sample demonstrates how to require the get-pkg-repo package, read the package.json file, and then extract and log the repository URL.
const getPkgRepo = require('get-pkg-repo');
const pkg = require('./package.json');
const repo = getPkgRepo(pkg);
console.log(repo.url);
Extract Repository Type
This feature allows you to extract the type of repository (e.g., git) from a package.json file. The code sample shows how to extract and log the repository type.
const getPkgRepo = require('get-pkg-repo');
const pkg = require('./package.json');
const repo = getPkgRepo(pkg);
console.log(repo.type);
Extract Repository Directory
This feature allows you to extract the directory within the repository if specified in the package.json file. The code sample demonstrates how to extract and log the repository directory.
const getPkgRepo = require('get-pkg-repo');
const pkg = require('./package.json');
const repo = getPkgRepo(pkg);
console.log(repo.directory);
Other packages similar to get-pkg-repo
normalize-package-data
The normalize-package-data package is used to normalize package metadata, including repository information. It provides a more comprehensive solution for handling package.json data but may be overkill if you only need repository details.
parse-package-name
The parse-package-name package is designed to parse package names and extract information such as scope and name. While it doesn't specifically focus on repository information, it can be used in conjunction with other tools to achieve similar results.
read-pkg
The read-pkg package is used to read and parse package.json files. It provides a simple way to access package metadata, including repository information, but requires additional logic to extract specific details like repository URL or type.
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, and uses normalize-package-data, hosted-git-info and parse-github-repo-url to parse data. Please check them out for more details.
This module can fix some common typos.
If you find your normalized repository is not correct, It's most likely normalize-package-data or hosted-git-info's problem. Please try to triage the problem before you open an issue here.
Install
$ npm install --save get-pkg-repo
Usage
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)
})
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.
CLI
$ 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
$ 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.
$ get-pkg-repo package.json
{ type: 'github',
protocols: [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],
...
$ cat package.json | get-pkg-repo --fix-typo
{ type: 'github',
protocols: [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],
...
License
MIT © Steve Mao