如果npmscripts写的命令太多,很容易乱。各种第三方轮子只能解决一部分问题。太老了,很多不支持promises,代码也不多,就自己造轮子了,效果还可以。项目地址:https://github.com/zaaack/foy特点:基于Promise的任务和内置的工具函数(fs/shell),无缝支持async/await和一个类似于shelljs的跨平台shelldsl,大家可以写一个shell简单易学易用,不需要花时间去寻找和学习第三方包只写几个构建命令。安装成本小foy:gulp:grunt:与支持promises的第三方工具包无缝集成,无需封装可作为插件使用:安装yarnadd-Dfoy#或npmi-Dfoy#或全局安装withyarnadd-gfoy#ornpmi-gfoy添加一个Foyfile.js(或者Foyfile.ts,需要安装ts-node)import{task,desc,option,strict,fs}from'foy'task('build',asyncctx=>{awaitctx.exec('tsc')})desc('Buildtsfileswithtsc')option('-w,--watch','watchfilechanges')strict()//如果您传递了一些未通过`option()`task('build2',asyncctx=>{awaitctx.exec(`tsc${ctx.options.watch?'-w':''}`)})task('task',asyncctx=>{awaitfs.rmrf('/some/dir/or/file')//删除目录或文件awaitfs.copy('/src','/dist')//复制文件夹或文件letjson=awaitfs.readJson('./xx.json')awaitctx.env('NODE_ENV','production')awaitctx.cd('./src')awaitctx.exec('somecommand')//执行命令let{stdout}=awaitctx.exec('ls',{stdio:'pipe'})//获取标准输出,默认为空,因为它通过`stdio:'inherit'`重定向到当前进程。})然后你可以运行任务#在本地node_modules目录中安装npxfoybuildnpxfoybuild1npxfoytask#Install在全局foybuildfoybuild1
