【xinsir】分享一个查找文件的脚手架
1 program.command('find <name>').action(name => { 2 if (name) { 3 inquirer 4 .prompt([ 5 { 6 type: 'input', 7 name: 'isAll', 8 message: '输入的文件名是否是文件全称 yes/no', 9 validate(input) { 10 let arr = ['yes', 'no']; 11 if (!arr.includes(input)) { 12 return '请输入yes/no'; 13 } 14 return true; 15 } 16 } 17 ]) 18 .then(answers => { 19 const spinner = ora(`正在寻找${name}...`); 20 spinner.start(); 21 try { 22 let isAll = answers.isAll === 'yes'; // 是否为全称 23 let files = []; // 找到文件名的路径存储 24 // 递归遍历目录下的文件 25 function readDirSync(path) { 26 var pa = fs.readdirSync(path); 27 pa.forEach(function(ele, index) { 28 var info = fs.statSync(path + '/' + ele); 29 if (info.isDirectory()) { 30 readDirSync(path + '/' + ele); 31 } else { 32 if((!isAll && ele.includes(name)) || (isAll && ele === name)) { 33 files.push(path + '/' + ele); 34 } 35 } 36 }); 37 } 38 readDirSync('.'); 39 if (files.length > 0) { 40 spinner.succeed(); 41 files = files.join('\n'); 42 console.log(symbols.success, chalk.green('文件已找到,文件路径如下:\n' + files)); 43 } else { 44 spinner.fail(); 45 console.log(symbols.error, chalk.red(`该目录下未含有名为'${name}'的文件`)); 46 } 47 } catch (error) { 48 console.log(symbols.error, chalk.red(error)); 49 spinner.fail(); 50 console.log(symbols.error, chalk.red('在寻找文件过程出错')); 51 } 52 }); 53 } else { 55 console.log( 56 symbols.error, 57 chalk.red('请输入完整命令:xinsir find xx(寻找的文件名)') 58 ); 59 } 60 }); 61 program.parse(process.argv);
效果如下: