1 | import axios, { AxiosResponse } from 'axios';
|
2 | import semver from 'semver';
|
3 |
|
4 | export default function packageJson(
|
5 | name: string,
|
6 | registry: string
|
7 | ): Promise<string> {
|
8 | const names = (name || '').split('@');
|
9 | const version = !names[0] ? names[2] : names[1];
|
10 | const isValidVersion = semver.valid(version) || version === 'latest';
|
11 | const url = `${registry}/${
|
12 | isValidVersion ? `@${names[1]}/${names[2]}` : name
|
13 | }`;
|
14 | console.log('pkg url: ', url);
|
15 | return axios
|
16 | .get(url, {
|
17 | proxy: false
|
18 | })
|
19 | .then((response: AxiosResponse) => {
|
20 | const { data } = response || { 'dist-tags': {} };
|
21 | if (!isValidVersion) {
|
22 | const version = data['dist-tags'].latest;
|
23 | return version || '';
|
24 | } else {
|
25 | // 指定包的版本情况
|
26 | return data.version || '';
|
27 | }
|
28 | })
|
29 | .catch((err: object) => {
|
30 | return err;
|
31 | });
|
32 | }
|
33 |
|
\ | No newline at end of file |