1 |
|
2 |
|
3 | export interface PackageJson {
|
4 | homepage?: string;
|
5 | repository?: {
|
6 | url?: string;
|
7 | };
|
8 | version?: string;
|
9 | }
|
10 |
|
11 | export 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 | }
|