运行node服务,使用child_process控制子文件夹js文件执行文件架构:index.js主程序入口fileHelper.js文件夹遍历readjson->main.js子文件夹执行文件入口package.json{"name":"nodelearn","version":"1.0.0","description":"","main":"src/index.js","scripts":{"test":"echo\"Error:notestspecified\"&&exit1"},"keywords":[],"author":"","license":"ISC"}index.jsconst{spawn}=require("child_process");constreadline=require("readline");constrl=readline.createInterface({input:process.stdin,output:process.stdout});const{loopFileSync}=require("./fileHelper");constentryFileName="main.js";conststratys=[];//要执行的方法letaheadMessages=[];//通用执行//获取所有可执行文件constfiles=loopFileSync(__dirname);files.forEach(item=>{const{fileName,fileDir,fileStat}=项目;if(fileName===entryFileName){让fileDirSplit=fileDir.split("\\");如果(fileDirSplit.length<2)返回;stratys.push([fileDirSplit[fileDirSplit.length-2],fileDir,fileStat]);}})//进入用户选择函数执行(cb){console.clear();让showMessage="";提前消息=[];showMessage+="请选择你的选择。\n";aheadMessages.push("0、退出\n");aheadMessages.push("1、运行最新修改\n");aheadMessages.push("2、运行最新创建\n");aheadMessages.push("3、全部运行\n");showMessage+=aheadMessages.join("");stratys.forEach((item,index)=>{showMessage+=`${index+aheadMessages.length}、${item[0]}\n`;})rl.question(showMessage,function(answer){cb(answer,()=>{rl.question("按回车键继续!",function(){execu化(cb);})});})}functioncreateNodeExecPromiseFactory(processName,jsFile){returnnewPromise((resolve)=>{letdata='';letspawnObj=spawn("node",[jsFile],{'shell':true});spawnObj.stdout.on("data",(chunk)=>{data+=chunk.toString();})spawnObj.on("exit",()=>{console.log(`${newDate().toLocaleString()}-----开始执行任务:${processName}`);console.log(data);console.log(`${newDate().toLocaleString()}-----执行任务${processName}已完成`);resolve();})})}functionhandleExecution(choose,next){letchooseNum=Number(choose);if(isNaN(chooseNum)||chooseNum<0||chooseNum>(stratys.length+aheadMessages.length-1)){console.warn("选择错误,请重新选择!");下一个();返回;}如果(chooseNum==0){控制台。日志(“退出!”);rl.close();进程.退出(0);}console.clear();让newStratys=[],promises=[];switch(chooseNum){case1://按修改时间排序,执行最新的修改newStratys=stratys.slice().sort((a,b)=>{returnb[2].mtimeMs-a[2].mtimeMs;})promises.push(createNodeExecPromiseFactory(newStratys[0][0],newStratys[0][1]));休息;case2://按创建时间排序,执行最新的创建newStratys=stratys.slice().sort((a,b)=>{returnb[2].ctimeMs-a[2].ctimeMs;})promises.push(createNodeExecPromiseFactory(newStratys[0][0],newStratys[0][1]));休息;case3://executealltasksnewStratys=stratys;for(leti=0;i
