Skip to content

Commit 4e4c132

Browse files
author
kinfuy
committed
feat: gnrm test registry
1 parent b5f6f79 commit 4e4c132

File tree

12 files changed

+324
-67
lines changed

12 files changed

+324
-67
lines changed

dist/gacm.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ var dependencies$1 = {
130130
execa: "5.1.1",
131131
kolorist: "^1.5.1",
132132
minimist: "^1.2.6",
133+
"node-fetch": "2.6.6",
133134
prompts: "^2.4.2"
134135
};
135136
var devDependencies = {
@@ -142,6 +143,7 @@ var devDependencies = {
142143
"@types/fs-extra": "^9.0.13",
143144
"@types/gulp": "^4.0.9",
144145
"@types/node": "^17.0.21",
146+
"@types/node-fetch": "^2.6.2",
145147
"@types/prompts": "^2.0.14",
146148
cac: "^6.7.14",
147149
changeloger: "0.1.0",
@@ -223,7 +225,8 @@ var dependencies = {
223225
cac: "^6.7.14",
224226
execa: "5.1.1",
225227
kolorist: "^1.5.1",
226-
prompts: "^2.4.2"
228+
prompts: "^2.4.2",
229+
"node-fetch": "2.6.6"
227230
};
228231
var pkg = {
229232
name: name,

dist/gnrm.js

Lines changed: 128 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,19 @@
44
var cac = require('cac');
55
var kolorist = require('kolorist');
66
var prompts = require('prompts');
7-
var path = require('path');
87
var fs = require('fs');
8+
var path = require('path');
99
require('child_process');
1010
require('process');
1111
var execa = require('execa');
12+
var fetch = require('node-fetch');
1213

1314
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
1415

1516
var cac__default = /*#__PURE__*/_interopDefaultLegacy(cac);
1617
var prompts__default = /*#__PURE__*/_interopDefaultLegacy(prompts);
1718
var execa__default = /*#__PURE__*/_interopDefaultLegacy(execa);
19+
var fetch__default = /*#__PURE__*/_interopDefaultLegacy(fetch);
1820

1921
var name$1 = "gacm";
2022
var version$1 = "1.2.8";
@@ -37,7 +39,8 @@ var dependencies$1 = {
3739
cac: "^6.7.14",
3840
execa: "5.1.1",
3941
kolorist: "^1.5.1",
40-
prompts: "^2.4.2"
42+
prompts: "^2.4.2",
43+
"node-fetch": "2.6.6"
4144
};
4245
var pkg$1 = {
4346
name: name$1,
@@ -62,6 +65,46 @@ path.resolve(rootPath, "package");
6265
const HOME = process.env[process.platform === "win32" ? "USERPROFILE" : "HOME"] || "";
6366
const registriesPath = path.join(HOME, ".gacmrc");
6467

68+
const defaultPackageManager = ["npm", "yarn", "cnpm", "pnpm"];
69+
const defaultNpmMirror = [
70+
{
71+
name: "npm",
72+
alias: "npm",
73+
home: "https://www.npmjs.org",
74+
registry: "https://registry.npmjs.org/"
75+
},
76+
{
77+
name: "yarn",
78+
alias: "yarn",
79+
home: "https://yarnpkg.com",
80+
registry: "https://registry.yarnpkg.com/"
81+
},
82+
{
83+
name: "tencent",
84+
alias: "tencent",
85+
home: "https://mirrors.cloud.tencent.com/npm/",
86+
registry: "https://mirrors.cloud.tencent.com/npm/"
87+
},
88+
{
89+
name: "cnpm",
90+
alias: "cnpm",
91+
home: "https://cnpmjs.org",
92+
registry: "https://r.cnpmjs.org/"
93+
},
94+
{
95+
name: "taobao",
96+
alias: "taobao",
97+
home: "https://npmmirror.com",
98+
registry: "https://registry.npmmirror.com/"
99+
},
100+
{
101+
name: "npmMirror",
102+
alias: "npmMirror",
103+
home: "https://skimdb.npmjs.com/",
104+
registry: "https://skimdb.npmjs.com/registry/"
105+
}
106+
];
107+
65108
const success = (msg) => console.log(`
66109
${kolorist.green(msg)}
67110
`);
@@ -123,46 +166,18 @@ async function writeFileUser(dir, data) {
123166
process.exit(0);
124167
});
125168
}
126-
127-
const defaultPackageManager = ["npm", "yarn", "cnpm", "pnpm"];
128-
const defaultNpmMirror = [
129-
{
130-
name: "npm",
131-
alias: "npm",
132-
home: "https://www.npmjs.org",
133-
registry: "https://registry.npmjs.org/"
134-
},
135-
{
136-
name: "yarn",
137-
alias: "yarn",
138-
home: "https://yarnpkg.com",
139-
registry: "https://registry.yarnpkg.com/"
140-
},
141-
{
142-
name: "tencent",
143-
alias: "tencent",
144-
home: "https://mirrors.cloud.tencent.com/npm/",
145-
registry: "https://mirrors.cloud.tencent.com/npm/"
146-
},
147-
{
148-
name: "cnpm",
149-
alias: "cnpm",
150-
home: "https://cnpmjs.org",
151-
registry: "https://r.cnpmjs.org/"
152-
},
153-
{
154-
name: "taobao",
155-
alias: "taobao",
156-
home: "https://npmmirror.com",
157-
registry: "https://registry.npmmirror.com/"
158-
},
159-
{
160-
name: "npmMirror",
161-
alias: "npmMirror",
162-
home: "https://skimdb.npmjs.com/",
163-
registry: "https://skimdb.npmjs.com/registry/"
164-
}
165-
];
169+
const checkRegistry = async () => {
170+
const userConfig = await getFileUser(registriesPath);
171+
let registryList = defaultNpmMirror;
172+
if (userConfig)
173+
if (!userConfig.registry || userConfig.registry.length === 0) {
174+
userConfig.registry = registryList;
175+
writeFileUser(registriesPath, userConfig);
176+
} else {
177+
registryList = userConfig.registry;
178+
}
179+
return registryList;
180+
};
166181

167182
const execCommand = async (cmd, args) => {
168183
const res = await execa__default["default"](cmd, args);
@@ -189,6 +204,7 @@ var dependencies = {
189204
execa: "5.1.1",
190205
kolorist: "^1.5.1",
191206
minimist: "^1.2.6",
207+
"node-fetch": "2.6.6",
192208
prompts: "^2.4.2"
193209
};
194210
var devDependencies = {
@@ -201,6 +217,7 @@ var devDependencies = {
201217
"@types/fs-extra": "^9.0.13",
202218
"@types/gulp": "^4.0.9",
203219
"@types/node": "^17.0.21",
220+
"@types/node-fetch": "^2.6.2",
204221
"@types/prompts": "^2.0.14",
205222
cac: "^6.7.14",
206223
changeloger: "0.1.0",
@@ -289,15 +306,7 @@ const getRegistrys = async (pkgs = defaultPackageManager) => {
289306
return registrys;
290307
};
291308
const useLs = async (cmd) => {
292-
const userConfig = await getFileUser(registriesPath);
293-
let registryList = defaultNpmMirror;
294-
if (userConfig)
295-
if (!userConfig.registry || userConfig.registry.length === 0) {
296-
userConfig.registry = registryList;
297-
writeFileUser(registriesPath, userConfig);
298-
} else {
299-
registryList = userConfig.registry;
300-
}
309+
const registryList = await checkRegistry();
301310
const pkgs = [];
302311
if (cmd.packageManager)
303312
pkgs.push(cmd.packageManager);
@@ -336,7 +345,7 @@ const useLs = async (cmd) => {
336345
npm: kolorist.green,
337346
cnpm: kolorist.red,
338347
yarn: kolorist.blue,
339-
pnpm: kolorist.lightYellow
348+
pnpm: kolorist.yellow
340349
};
341350
const currentTip = `current: ${Object.keys(currectRegistry).map((key) => {
342351
if (currectRegistry[key])
@@ -465,10 +474,77 @@ const useDelete = async (name) => {
465474
await writeFileUser(registriesPath, userConfig);
466475
};
467476

477+
const testRegistry = async (registry) => {
478+
const start = Date.now();
479+
const options = {
480+
timeout: 5e3
481+
};
482+
let status = false;
483+
let isTimeout = false;
484+
try {
485+
const response = await fetch__default["default"](registry, {
486+
...options
487+
});
488+
status = response.ok;
489+
} catch (error) {
490+
console.log(error);
491+
isTimeout = error.type === "request-timeout";
492+
}
493+
return {
494+
status,
495+
isTimeout,
496+
start
497+
};
498+
};
499+
const useTest = async (cmd) => {
500+
const registryList = await checkRegistry();
501+
const test = async (registry2) => {
502+
const { status, start, isTimeout } = await testRegistry(new URL("", registry2.registry).href);
503+
if (isTimeout)
504+
log.error("timeout");
505+
if (status) {
506+
const end = Date.now();
507+
console.log(`
508+
${kolorist.green(`\u3010${end - start}ms\u3011`)} ping ${registry2.alias}${registry2.alias === registry2.name ? "" : `${kolorist.gray(`(${registry2.name})`)}`}\uFF1A${registry2.registry}`);
509+
}
510+
};
511+
if (cmd.all) {
512+
const list = registryList.map(async (r) => {
513+
return {
514+
handle: await test(r)
515+
};
516+
});
517+
for (const iterator of list)
518+
await iterator;
519+
return;
520+
}
521+
if (cmd.packageManager) {
522+
const registry2 = registryList.find((x) => x.alias === cmd.packageManager);
523+
if (registry2)
524+
await test(registry2);
525+
return;
526+
}
527+
const { registry } = await prompts__default["default"]([
528+
{
529+
type: "select",
530+
name: "registry",
531+
message: "Pick a registry",
532+
choices: registryList.map((x) => {
533+
return {
534+
title: `${x.alias}${x.alias === x.name ? "" : `(${x.name})`} ${x.registry}`,
535+
value: x
536+
};
537+
})
538+
}
539+
]);
540+
await test(registry.registry);
541+
};
542+
468543
const program = cac__default["default"]("gnrm");
469544
program.version(useVersion());
470545
program.command("ls", "\u5F53\u524D\u7528\u6237\u5217\u8868").option("-p, --packageManager <packageManager>", "\u67E5\u770B\u5BF9\u5E94\u5305\u7BA1\u7406\u5668\uFF1A\u9ED8\u8BA4npm").action(useLs);
471546
program.command("use [name]", "\u5207\u6362\u955C\u50CF\u6E90").option("-p, --packageManager <packageManager>", "\u8BBE\u7F6E\u5BF9\u5E94\u5305\u7BA1\u7406\u5668\uFF1A\u9ED8\u8BA4npm").action(useUse);
547+
program.command("test", "\u5207\u6362\u955C\u50CF\u6E90").option("-p, --packageManager <packageManager>", "\u6D4B\u8BD5\u5BF9\u5E94\u5305\u7BA1\u7406\u5668\uFF1A\u9ED8\u8BA4npm").option("-a, --all", "\u6D4B\u8BD5\u5B58\u5728\u7684\u955C\u50CF\u6E90").action(useTest);
472548
program.command("add", "\u6DFB\u52A0\u955C\u50CF").option("-n, --name <name>", "\u955C\u50CF\u540D\u79F0").option("-r, --registry <registry>", "\u955C\u50CF\u5730\u5740").option("-a, --alias <alias>", "\u955C\u50CF\u522B\u540D").action(useAdd);
473549
program.command("alias <origin> <target>", "\u955C\u50CF\u6DFB\u52A0\u522B\u540D").action(useAlias);
474550
program.command("delete <name>", "\u5220\u9664\u955C\u50CF").action(useDelete);

dist/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"cac": "^6.7.14",
2222
"execa": "5.1.1",
2323
"kolorist": "^1.5.1",
24-
"prompts": "^2.4.2"
24+
"prompts": "^2.4.2",
25+
"node-fetch": "2.6.6"
2526
}
26-
}
27+
}

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"execa": "5.1.1",
2020
"kolorist": "^1.5.1",
2121
"minimist": "^1.2.6",
22+
"node-fetch": "2.6.6",
2223
"prompts": "^2.4.2"
2324
},
2425
"devDependencies": {
@@ -31,6 +32,7 @@
3132
"@types/fs-extra": "^9.0.13",
3233
"@types/gulp": "^4.0.9",
3334
"@types/node": "^17.0.21",
35+
"@types/node-fetch": "^2.6.2",
3436
"@types/prompts": "^2.0.14",
3537
"cac": "^6.7.14",
3638
"changeloger": "0.1.0",

package/commands/gnrm/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ export * from './useUse';
33
export * from './useAdd';
44
export * from './useAlias';
55
export * from './useDelete';
6+
export * from './useTest';

package/commands/gnrm/useLs.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { blue, gray, green, red, yellow } from 'kolorist';
22
import prompts from 'prompts';
3-
import { registriesPath } from '../../config/path';
4-
import { getFileUser, writeFileUser } from '../../utils/getUserList';
5-
import { defaultNpmMirror, defaultPackageManager } from '../../config/registry';
3+
import { checkRegistry } from '../../utils/getUserList';
4+
import { defaultPackageManager } from '../../config/registry';
65
import { execCommand } from '../../utils/shell';
76
import { geneDashLine, padding, printMessages } from '../../utils/tools';
87
import { log } from '../../utils/log';
@@ -41,14 +40,7 @@ export const getRegistrys = async (pkgs: PackageManagertype[] = defaultPackageMa
4140
};
4241

4342
export const useLs = async (cmd: NrmCmd) => {
44-
const userConfig = await getFileUser(registriesPath);
45-
let registryList = defaultNpmMirror;
46-
if (userConfig)
47-
if (!userConfig.registry || userConfig.registry.length === 0) {
48-
userConfig.registry = registryList;
49-
writeFileUser(registriesPath, userConfig);
50-
}
51-
else { registryList = userConfig.registry; }
43+
const registryList = await checkRegistry();
5244

5345
const pkgs: PackageManagertype[] = [];
5446

0 commit comments

Comments
 (0)