使用ShellJS提升你的开发效率(二)

646 阅读1分钟

使用ShellJS提升你的开发效率(一)详细介绍了ShellJS的常用语法,也是作为个人手册查阅使用。有一就有二,本文结合实际开发,总结我在开发中对于ShellJS的使用。

由于业务需求有一些换皮肤和更换img&闪屏的的操作,重复的工作第一想法就可以使用 shelljs进行脚本自动化去完成。当然没有什么方法是绝对的,鲁迅有云:手上有把锤子看啥都是钉子。作为开发者还是要让自己手上多一些锤子,对不同的钉子使用不同的锤子。我是用shelljs实现,当然还可以使用其他方法,方法不是唯一的。

  • 实现换皮肤
    //  将a的x对象遍历代替b文件
    const styleFile = 'b'   //相对路径
    
    const dir = shell.find(styleFile)
    if (dir.code === 1) {
      // 先判断b文件存不存在,不存在则创建 创建文件touch
      shell.touch(styleFile)
    }
    
    var str = ''    //进行对象遍历
    for(var i in a.x) {
      str += `${i} = ${a[i]}\n`
    }
    shell.ShellString(str).to(styleFile)  //文件写入
    shell.echo(str).to(styleFile)  // 当然也可以使用echo,但是echo会打印
    shell.sed('-i', /(.*)/, str, styleFile )  // 也可以使用sed进行替换
  • 实现文件替换
    // 把 new文件夹下的所有文件夹的内容复制到 old文件夹下
    第一种方式实现替换
    shell.ls(old).forEach(item => {
      shell.sed(
       '-i',
       `${item}`,
      `${item}`,
       path.resolve(new, 'item')
     )
    });
    第二种就是使用cp进行强制删除复制
    shell.cp('-Rf', `./b/*`, './a/')