自动执行 git add、 git commit 脚本

一、场景

每次写完东西都需要重复这两个命名,有点麻烦、尝试使用一个命令自动化执行两个或多个命令。

二、用到的工具

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 })

你可能感兴趣的:(大前端,javaScript,git,javascript,前端)