背景
现在公司前端项目发布,当前分支需要录入 git add . && git commit -m “” && git push
不知道啥时候,公司领导开了个uat分支,测试人员只在uat分支进行测试,开发又不好只在uat开发,有些小功能每次都要dev开发,自测后合并到uat,然后build,push,再切回dev.虽然功能简单,但是,谁让咱懒呢!!这就是做自己的命令行了!!!!
方法一:bat批处理文件
最开始的偷懒方式一,组合命令,使用bat的批量处理命令进行处理。
第一步:随便找个文件夹,用来存放自己的这些命令比如: D:\path
第二步:在这个文件夹里面新建一个bat文件,将下面的天天打包发版的命令组合丢进去,比如将上面要修改发版的push命令进行组合。保存。
npm run build && git add . && git commit -m "fix bugs" && git push && msg administrator "Build Over"
第三步:打开环境变量将对应的文件夹地址放进去系统环境变量的 Path文件夹
然后就可以在对应项目下使用你的这个组合命令了。注意命令是你文件名字,不要和别人的命令冲突了。
方法二:bash别名
在使用了方法一的组合命令之后,爽了一段时间之后,发现我在vscode中的终端里面配置了git bash环境,在这个环境里面好像是不识别环境变量里面自己添加的命令行的。不过,我发现了一个更简单的东东,这个东西就是bash里面的别名:alias,使用起来也很简单,
alias tnbuild = 'npm run build && git add . && git commit -m "fix bugs" && git push && msg administrator "Build Over"'
在bash环境中,tnbuild这个自定义命令就可以使用了。
缺点,好像不是永久的。
想要永久的需要在/etc/profile.d/aliases.sh里面对应的
alias这一部分,添加一行,然后保存就可以在bash环境里面永久使用了。
需要管理员权限才能使用。
方法三:使用node打包自己的cli
自己组合一堆懒人命令行,然后发布到npm上,自己什么时候想用,换个地方全局安装以下岂不是快哉。
随便在一个空文件里面开始我们的自定义命令之旅。我们先自定义一个命令名字,然后npm install 名字 一下,出现404,说明这个命令自己可以用了。
首先npm init 初始化一个package.json文件,里面的内容自己看着办。
然后将添加以下内容到package.json文件里面。注意使用自己的命令名称。
"bin": {
"命令": "./index.js" //命令换成自己的
}
然后新建一个index.js,里面放你自己的命令执行内容。注意第一行用”#! node”,很重要,表示使用node来执行这个文件。先来个简单的内容。
#! node console.log('hello my cli')
然后就是使用npm install -g命令,全局安装一下。安装完成之后,就可以执行下当前的命令了。
成功执行.
然后开始改造index.js
#! node var exec = require('child_process').exec; var cmd='git add . && git commit -m "提交。。。" && msg administrator "push over"'; exec(cmd, function(error, stdout, stderr) { if(error){ console.log(error); } else{ console.log("成功"); } });
我们的命令就成功融合成组合命令了。
组合参数
平时我们在执行命令的时候,都会带参数,可以使用commander包来简化解析参数的过程。
#! node var exec = require('child_process').exec; var program = require('commander'); program .version('0.1.0', '-v, --version') .option('-p, --push', '单纯push') .option('-b, --build', '带build,push') .option('-m, --merge', '带merge,带build,带push') .parse(process.argv); if (program.push) exec_fun('push','git add . && git commit -m "提交。。。" && msg administrator "push over"'); if (program.build) exec_fun('build','npm run build && git add . && git commit -m "提交。。。" && msg administrator "push over"'); if (program.merge) exec_fun('merge','npm add . && git commit -m "fix bugs" && git checkout uat && git merge dev && npm run build && git add . && git commit -m "fix bugs" && git push && git checkout dev'); function exec_fun(_name,_cmd){ console.log('开始执行任务:'+ _name); exec(_cmd, function(error, stdout, stderr) { if(error){ console.log(error); } else{ console.log("成功"); } }); }
发布到npm 仓库
自做做出来就是要发布到仓库给大家用,也很简单,创建也很简单。以后就可以用自己的git了。
npm adduser npm publish npm install -g combgit