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/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值