技术

懒得敲命令:node编写自己cli命令

微信扫一扫,分享到朋友圈

懒得敲命令:node编写自己cli命令
0 0

背景

现在公司前端项目发布,当前分支需要录入 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

 

 

半拉子前端的自留地,发际线逐渐后移的抠脚大叔!

Windows下使用GIT管理推送FTP代码

上一篇

前端性能优化之Performance API

下一篇

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

体验小程序

标签地图

分类

EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00
      懒得敲命令:node编写自己cli命令

      长按储存图像,分享给朋友

      微信扫一扫

      微信扫一扫