UNPKG

631 BPlain TextView Raw
1// this interface represents the fields
2// from a package.json file that we need to use.
3export interface PackageJson {
4 homepage?: string;
5 repository?: {
6 url?: string;
7 };
8 version?: string;
9}
10
11export default function repository(pkg: PackageJson) {
12 const repoUrl = (pkg.repository && pkg.repository.url) || pkg.homepage;
13 if (!repoUrl) {
14 throw new Error(
15 'Cannot detect repository name. Either `package.repository.url` or `package.homepage` should be set',
16 );
17 }
18
19 const parsed = repoUrl.match(/[/:]([a-z0-9-_]+)\/([a-z0-9-_]+)(\.git)?/i);
20 return {
21 repo: parsed![2],
22 user: parsed![1],
23 };
24}