一、场景
每次写完东西都需要重复这两个命名,有点麻烦、尝试使用一个命令自动化执行两个或多个命令。
二、用到的工具
1、NodeJs 方法 exec
用于向控制台写入命令。注意第二个参数要使用
{ stdio:'inherit' }
。
文档地址:http://nodejs.cn/api-v12/child_process/child_process_exec_command_options_callback.html
2、NodeJs process.argv + 插件 minimist 获取执行命令后携带的参数
minimist 获取执行命令后携带的参数,可选。
3、默认commit -m “当前时间” (new Date().toLocaleString()
)
4、脚本文件
package.json
{
"scripts": {
"gitac": "node script/gitac.js",
},
}
script/gitac.js
/**
* @npm 安装 minimist
*
* @description: 执行方式一 node gitac.js --m="需要提交的内容"
* @scripts "gitac": "node script/gitac.js" ==> 执行方式二 yarn gitac --m="需要提交的内容"
*
* @exec node 命令行方法:http://nodejs.cn/api-v12/child_process/child_process_exec_command_options_callback.html
* @minimist 提取node执行文件后的参数,官网 https://www.npmjs.com/package/minimist
*/
const util = require('util');
const exec = util.promisify(require('child_process').exec);
const { m } = require('minimist')(process.argv.slice(2));
const inheritTerm = async ({ m }) =>{
try{
const add = 'git add .';
const addres = await exec(add, { stdio:'inherit' });
if(addres.stderr) return console.error(add, addres.stderr);
const commit = `git commit -m "${m? m: new Date().toLocaleString()}"`;
console.log('提交内容', commit)
const comres = await exec(commit, { stdio:'inherit' });
if(comres.stderr) return console.error(commit, comres.stderr);
console.log('提交成功!')
} catch(error) {
console.log('在分支主机上未提交任何内容,已撤销提交。')
}
}
inheritTerm({ m })