4
4
var cac = require ( 'cac' ) ;
5
5
var kolorist = require ( 'kolorist' ) ;
6
6
var prompts = require ( 'prompts' ) ;
7
- var path = require ( 'path' ) ;
8
7
var fs = require ( 'fs' ) ;
8
+ var path = require ( 'path' ) ;
9
9
require ( 'child_process' ) ;
10
10
require ( 'process' ) ;
11
11
var execa = require ( 'execa' ) ;
12
+ var fetch = require ( 'node-fetch' ) ;
12
13
13
14
function _interopDefaultLegacy ( e ) { return e && typeof e === 'object' && 'default' in e ? e : { 'default' : e } ; }
14
15
15
16
var cac__default = /*#__PURE__*/ _interopDefaultLegacy ( cac ) ;
16
17
var prompts__default = /*#__PURE__*/ _interopDefaultLegacy ( prompts ) ;
17
18
var execa__default = /*#__PURE__*/ _interopDefaultLegacy ( execa ) ;
19
+ var fetch__default = /*#__PURE__*/ _interopDefaultLegacy ( fetch ) ;
18
20
19
21
var name$1 = "gacm" ;
20
22
var version$1 = "1.2.8" ;
@@ -37,7 +39,8 @@ var dependencies$1 = {
37
39
cac : "^6.7.14" ,
38
40
execa : "5.1.1" ,
39
41
kolorist : "^1.5.1" ,
40
- prompts : "^2.4.2"
42
+ prompts : "^2.4.2" ,
43
+ "node-fetch" : "2.6.6"
41
44
} ;
42
45
var pkg$1 = {
43
46
name : name$1 ,
@@ -62,6 +65,46 @@ path.resolve(rootPath, "package");
62
65
const HOME = process . env [ process . platform === "win32" ? "USERPROFILE" : "HOME" ] || "" ;
63
66
const registriesPath = path . join ( HOME , ".gacmrc" ) ;
64
67
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
+
65
108
const success = ( msg ) => console . log ( `
66
109
${ kolorist . green ( msg ) }
67
110
` ) ;
@@ -123,46 +166,18 @@ async function writeFileUser(dir, data) {
123
166
process . exit ( 0 ) ;
124
167
} ) ;
125
168
}
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
+ } ;
166
181
167
182
const execCommand = async ( cmd , args ) => {
168
183
const res = await execa__default [ "default" ] ( cmd , args ) ;
@@ -189,6 +204,7 @@ var dependencies = {
189
204
execa : "5.1.1" ,
190
205
kolorist : "^1.5.1" ,
191
206
minimist : "^1.2.6" ,
207
+ "node-fetch" : "2.6.6" ,
192
208
prompts : "^2.4.2"
193
209
} ;
194
210
var devDependencies = {
@@ -201,6 +217,7 @@ var devDependencies = {
201
217
"@types/fs-extra" : "^9.0.13" ,
202
218
"@types/gulp" : "^4.0.9" ,
203
219
"@types/node" : "^17.0.21" ,
220
+ "@types/node-fetch" : "^2.6.2" ,
204
221
"@types/prompts" : "^2.0.14" ,
205
222
cac : "^6.7.14" ,
206
223
changeloger : "0.1.0" ,
@@ -289,15 +306,7 @@ const getRegistrys = async (pkgs = defaultPackageManager) => {
289
306
return registrys ;
290
307
} ;
291
308
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 ( ) ;
301
310
const pkgs = [ ] ;
302
311
if ( cmd . packageManager )
303
312
pkgs . push ( cmd . packageManager ) ;
@@ -336,7 +345,7 @@ const useLs = async (cmd) => {
336
345
npm : kolorist . green ,
337
346
cnpm : kolorist . red ,
338
347
yarn : kolorist . blue ,
339
- pnpm : kolorist . lightYellow
348
+ pnpm : kolorist . yellow
340
349
} ;
341
350
const currentTip = `current: ${ Object . keys ( currectRegistry ) . map ( ( key ) => {
342
351
if ( currectRegistry [ key ] )
@@ -465,10 +474,77 @@ const useDelete = async (name) => {
465
474
await writeFileUser ( registriesPath , userConfig ) ;
466
475
} ;
467
476
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
+
468
543
const program = cac__default [ "default" ] ( "gnrm" ) ;
469
544
program . version ( useVersion ( ) ) ;
470
545
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 ) ;
471
546
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 ) ;
472
548
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 ) ;
473
549
program . command ( "alias <origin> <target>" , "\u955C\u50CF\u6DFB\u52A0\u522B\u540D" ) . action ( useAlias ) ;
474
550
program . command ( "delete <name>" , "\u5220\u9664\u955C\u50CF" ) . action ( useDelete ) ;
0 commit comments