@@ -9,6 +9,7 @@ import axios from 'axios';
99import urlJoin from 'url-join' ;
1010
1111import type { AxiosResponse } from 'axios' ;
12+ import { Readable } from 'stream' ;
1213
1314/**
1415 * 获取指定 npm 包版本的 tarball
@@ -17,11 +18,11 @@ function getNpmTarball(npm: string, version?: string, registry?: string): Promis
1718 return getNpmInfo ( npm , registry ) . then ( ( json : any ) => {
1819 if ( ! semver . valid ( version ) ) {
1920 // support beta or other tag
20- version = json [ 'dist-tags' ] [ version ] || json [ 'dist-tags' ] . latest ;
21+ version = json [ 'dist-tags' ] [ version ! ] || json [ 'dist-tags' ] . latest ;
2122 }
2223
23- if ( semver . valid ( version ) && json . versions && json . versions [ version ] && json . versions [ version ] . dist ) {
24- return json . versions [ version ] . dist . tarball ;
24+ if ( semver . valid ( version ) && json . versions && json . versions [ version ! ] && json . versions [ version ! ] . dist ) {
25+ return json . versions [ version ! ] . dist . tarball ;
2526 }
2627
2728 return Promise . reject ( new Error ( `没有在 ${ registry } 源上找到 ${ npm } @${ version } 包` ) ) ;
@@ -35,7 +36,7 @@ function getAndExtractTarball(
3536 destDir : string ,
3637 tarball : string ,
3738
38- progressFunc = ( state ) => { } ,
39+ progressFunc = ( _ : any ) => { } ,
3940 formatFilename = ( filename : string ) : string => {
4041 // 为了兼容
4142 if ( filename === '_package.json' ) {
@@ -46,9 +47,9 @@ function getAndExtractTarball(
4647 } ,
4748) : Promise < string [ ] > {
4849 return new Promise ( ( resolve , reject ) => {
49- const allFiles = [ ] ;
50- const allWriteStream = [ ] ;
51- const dirCollector = [ ] ;
50+ const allFiles : string [ ] = [ ] ;
51+ const allWriteStream : Array < Promise < boolean > > = [ ] ;
52+ const dirCollector : string [ ] = [ ] ;
5253
5354 axios ( {
5455 url : tarball ,
@@ -60,8 +61,7 @@ function getAndExtractTarball(
6061 } ) . then ( ( response ) => {
6162 const totalLength = Number ( response . headers [ 'content-length' ] ) ;
6263 let downloadLength = 0 ;
63- response . data
64- // @ts -ignore
64+ ( response . data as Readable )
6565 . on ( 'data' , ( chunk ) => {
6666 downloadLength += chunk . length ;
6767 progressFunc ( {
@@ -70,8 +70,8 @@ function getAndExtractTarball(
7070 } )
7171 // @ts -ignore
7272 . pipe ( zlib . Unzip ( ) )
73- // @ts -ignore
7473 . pipe ( new tar . Parse ( ) )
74+ // @ts -ignore
7575 . on ( 'entry' , ( entry ) => {
7676 if ( entry . type === 'Directory' ) {
7777 entry . resume ( ) ;
@@ -149,7 +149,7 @@ function getSatisfiesVersions(npm: string, range: string, registry?: string) {
149149 return versions
150150 . filter ( ( version ) => semver . satisfies ( version , range ) )
151151 . sort ( ( a , b ) => {
152- return semver . gt ( b , a ) ;
152+ return + semver . gt ( b , a ) ;
153153 } ) ;
154154 } ) ;
155155}
@@ -186,7 +186,7 @@ function getNpmLatestSemverVersion(npm: string, baseVersion: string, registry?:
186186 *
187187 * @param {String } npm
188188 */
189- function getLatestVersion ( npm , registry ?: string ) : Promise < string > {
189+ function getLatestVersion ( npm : string , registry ?: string ) : Promise < string > {
190190 return getNpmInfo ( npm , registry ) . then ( ( data ) => {
191191 if ( ! data [ 'dist-tags' ] || ! data [ 'dist-tags' ] . latest ) {
192192 console . error ( '没有 latest 版本号' , data ) ;
@@ -199,7 +199,7 @@ function getLatestVersion(npm, registry?: string): Promise<string> {
199199}
200200
201201function isAliNpm ( npmName ?: string ) : boolean {
202- return / ^ ( @ a l i f e | @ a l i | @ a l i p a y | @ k a o l a ) \/ / . test ( npmName ) ;
202+ return npmName ? / ^ ( @ a l i f e | @ a l i | @ a l i p a y | @ k a o l a ) \/ / . test ( npmName ) : false ;
203203}
204204
205205function getNpmRegistry ( npmName = '' ) : string {
0 commit comments