pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99 篇
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
发帖:99 篇
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 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/')
由于业务需求有一些换皮肤和更换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/')

