1+ import path from "path" ;
12import program , { Command } from "commander" ;
23import { Spinner } from "cli-spinner" ;
34const { version, description } = require ( "../package.json" ) ;
4- import { listFiles , humanFileSize , IResult , rmFile } from "./index" ;
5- import inquirer from "inquirer " ;
5+ import { listFiles , humanFileSize , IResult , unlinkAsync , statAsync } from "./index" ;
6+ import readline from "readline " ;
67
78const promptDelete = [ { type : "confirm" , name : "confirmDelete" , message : "是否确定执行删除操作: " , default : false } ] ;
89
10+ function prompt ( q : string ) : Promise < string > {
11+ const rl = readline . createInterface ( {
12+ input : process . stdin ,
13+ output : process . stdout
14+ } ) ;
15+ return new Promise ( resolve => {
16+ rl . question ( q , answer => {
17+ rl . close ( ) ;
18+ resolve ( answer ) ;
19+ } ) ;
20+ } ) ;
21+ }
22+
923function sleep ( ms : number ) {
1024 ms = ms > 0 ? ms : 0 ;
1125 return new Promise ( resolve => {
@@ -37,18 +51,25 @@ const env = program
3751 . parse ( process . argv ) ;
3852
3953async function main ( env : Command ) {
40- const listFile = listFiles ( "/Users/Yourtion/Codes/OpenSource/npmshit/npmshit/node_modules" ) ;
54+ const dir = path . resolve ( process . cwd ( ) , "node_modules" ) ;
55+ try {
56+ await statAsync ( dir ) ;
57+ } catch ( error ) {
58+ throw new Error ( "当前目录没有 node_modules" ) ;
59+ }
60+ const listFile = listFiles ( dir ) ;
4161 const ret = await spinner ( "努力扫描中..." , listFile ) ;
4262 logRes ( ret ) ;
43- if ( env . list ) return ;
44- const { confirmDelete } = ( await inquirer . prompt ( promptDelete ) ) as { confirmDelete : boolean } ;
63+ if ( env . list ) return ;
64+ const del = await prompt ( "是否确定执行删除操作: (y/N)" ) ;
65+ const confirmDelete = del . toLowerCase ( ) === "y" ;
4566 if ( ! confirmDelete ) return ;
4667 const rms = ret . fileList . map ( it => {
4768 console . log ( "删除文件:%s" , it ) ;
48- return rmFile ( it ) ;
69+ return unlinkAsync ( it ) ;
4970 } ) ;
5071 await Promise . all ( rms ) ;
5172 console . log ( "删除完成!释放空间:" , humanFileSize ( ret . size ) ) ;
5273}
5374
54- main ( env ) . catch ( console . error )
75+ main ( env ) . catch ( err => console . error ( err . message || err ) ) ;
0 commit comments