Node.js写脚本常用代码

实现了个输入命令创建文件、执行git的node脚本,大杂烩,将用过的点子收集了一下:

/ dabao.js
const {
    
    execSync} = require('child_process');    //执行脚本代码
const chalk = require('chalk'); //颜色插件
const inquirer = require('inquirer');   //用户交互插件(需要install)
const os = require('os');   //操作系统
const ora = require('ora'); //状态样式插件
const fs = require('fs');   //文件系统 

process.stdout.write('abcded \n\n11')//与console基本相同,一点细节不一样,如最后没自动加换行符
process.argv.map((item)=>{
    
      //获取指令参数 如 node dabao.js ok -haha   1.node执行程序地址 2.被执行文件地址 3~.指令参数 
    if(item.indexOf('ok') > -1){
    
    
        console.log('ok 命中')
    }
})
const spinner = ora('Loading unicorns').start();
 
setTimeout(() => {
    
    
    spinner.color = 'yellow';
    spinner.text = 'Loading rainbows';
}, 1000);
setTimeout(() => {
    
    
    spinner.stop()
},2500)


  inquirer.prompt([//用户界面交互
    {
    
    
      type: 'confirm',
      name: 'confirm',
      message: 'sure to package?',
    }
  ]).then(answers1 => {
    
    
    console.log(answers1)
    if(answers1.confirm){
    
    
      inquirer.prompt([//用户界面交互
        {
    
    
          type: 'Input',
          name: 'dirname',
          message: 'write dirname:',
        },
        {
    
    
          type: 'Input',
          name: 'filename',
          message: 'write filename:',
        },
        {
    
    
          type: 'Input',
          name: 'message',
          message: 'write message:',
        }
      ]).then(answers2 => {
    
    
        if((answers2.dirname).indexOf('--c') != -1){
    
    
          var _dirname = (answers2.dirname).slice(0 ,(answers2.dirname).indexOf(' '))
          fs.exists(_dirname, function(exists) {
    
     //判断文件是否存在
           if(exists){
    
    
              delDir(_dirname)
              delDir('.git')
              console.log(chalk.green('clean up...\n'));
            }else{
    
    
              console.log(chalk.red('dir is not exist.\n'));
            }
          })
        }else{
    
    
          if(answers2.dirname && answers2.filename && answers2.message){
    
    
            fs.exists(answers2.dirname, function(exists) {
    
     //判断文件是否存在
              if(!exists){
    
    
                doSomething(answers2.dirname,answers2.filename,answers2.message)
                console.log(chalk.green('bundle done...\n'));
              }else{
    
    
                console.log(chalk.red('dir is already exist,or use "\'dirname\'  --c" to delete the floder\n'));
              }
            })
          }else{
    
    
            console.log(chalk.red('cant left empty items.\n'));
          }
        }
      })
    }else{
    
    
      console.log(chalk.red('you quit...\n'));
    }
  });


/函数存放点
function delDir(path){
    
    
  let files = [];
  if(fs.existsSync(path)){
    
    
    files = fs.readdirSync(path);
    files.forEach((file, index) => {
    
    
        let curPath = path + "/" + file;
        if(fs.statSync(curPath).isDirectory()){
    
    
            delDir(curPath); //递归删除文件夹
        } else {
    
    
            fs.unlinkSync(curPath); //删除文件
        }
    });
    fs.rmdirSync(path);
  }
}

async function doSomething(dirName='./新建文件夹',fileName='writed.js',fileContent='console.warn("Created by dabao.js")'){
    
    
  await fs.mkdir(dirName)
  fs.writeFileSync(dirName+'/'+fileName, fileContent, 'utf8');
  console.log(os.type())//获得操作系统
  execSync(`git init`)//做你想做的
}
/

运行 node dabao.js ,执行效果如下在这里插入图片描述

node.js api详询 http://nodejs.cn/api/

Guess you like

Origin blog.csdn.net/qq_34995862/article/details/100560655