
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
get-pkg-repo
Advanced tools
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.
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);
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.
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.
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
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.
$ npm install --save get-pkg-repo
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' }
*/
})
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.
Type: object
or json
Package.json data
Type: boolean
If you want to fix your typical typos automatically, pass true. See the list of predefined typos.
$ 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' ],
...
# or
$ cat package.json | get-pkg-repo --fix-typo
{ type: 'github',
protocols: [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ],
...
MIT © Steve Mao
FAQs
Get repository user and project information from package.json file contents.
The npm package get-pkg-repo receives a total of 1,371,294 weekly downloads. As such, get-pkg-repo popularity was classified as popular.
We found that get-pkg-repo demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.