Node获取当前git的提交信息并保存到json文件

Node获取当前git的提交信息并保存到json文件

核心

本次需求的核心是引入shellJs,通过shell.exec运行命令获取git信息,其他都是常规的json获取和文件保存,所以核心是以下代码

const shell = require('shelljs')
// 获取git分支名称
const branchs = shell.exec("git branch").trim().split('\n')
branchs.forEach(function (item) {
    if (item.indexOf('*') > -1) {
        versionObj.branch = item.replace('*', '').trim() // 获取当前激活的分支
    }
})

完整代码

/**
 * 版本更新信息对象
 * status: 状态
 * branch: 部署git分支
 * lastCommitId:最后一次git提交记录ID
 * lastCommitMessage: 最后一次git提交记录消息
 * buildDate:打包时间
 */
var versionObj = {
    status: "up",
    branch: "",
    lastCommitId: "",
    lastCommitMessage: "",
    buildDate: "",
};

const fs = require("fs");
const moment = require('moment')
const shell = require('shelljs')

// 获取git分支名称
const branchs = shell.exec("git branch").trim().split('\n')
branchs.forEach(function (item) {
    if (item.indexOf('*') > -1) {
        versionObj.branch = item.replace('*', '').trim() // 获取当前激活的分支
    }
})

versionObj.buildDate = moment().format('yyyy-MM-DD HH:mm:ss')
versionObj.lastCommitId = shell.exec("git log -1 --pretty=format:'%H'").toString() // git上次提交的id
versionObj.lastCommitMessage = shell.exec("git log -1 --pretty=format:'%s'").toString() // git提交信息

function wirteFileByPath(path) {
    fs.exists( path,function(exists){
        if(exists){
            writeJsonToFile(path)
        }
        else{
            fs.mkdir(path, function (err) {
                if (err) {
                    console.log('创建文件失败', err)
                } else {
                    writeJsonToFile(path)
                }
            })
        }
    });
}

function writeJsonToFile(path) {
    const objStr = JSON.stringify(versionObj, null, 2);
    fs.writeFile(path + '/gitBranchData.json', objStr, function (err) {
        if (err) {
            console.log('写入失败', err)
        }else {
            console.log('写入成功')
        }
    })
}

module.exports = wirteFileByPath

总结

通过shell.exec运行命令,这里面存在着很大的想象空间,有很多shell相关的命令都可以通过代码来完成了,一个实际的应用是,在vue项目的package.json文件中,在npm run build命令后面的配置中加上命令运行node文件,以达到打包时顺带生成打包信息的文件的目的。

在大型网站中,有时候会出现这样一种情况,当新版本的网站发布后,因为浏览器的缓存还没更新,使用的还是旧版本的网页逻辑( js/html/css ),需要客户手动去强制刷新更新浏览器的缓存,而有了这个打包信息后,前端可以通过间隔时间获取打包信息,判断当前浏览器的代码是否是最新的代码,如果不是最新代码,则自动刷新,免去客户的手动刷新

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Git提交代码时,我们应该遵循规范的提交信息格式,以便让其他人更好地理解这次代码提交的目的和内容。通常,我们可以使用一些工具来约束开发者编写符合规范的提交说明。一个常用的工具是Commitizen,它可以帮助我们生成符合规范的提交信息。 为了使用Commitizen,我们首先需要在项目中安装cz-conventional-changelog包,并将其配置为Git提交时的默认工具。具体操作是在项目的package.json文件中添加以下内容: ``` "scripts": { "cm": "git-cz" }, "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } } ``` 然后,在我们提交代码时,可以使用以下命令替代"git commit": ``` npm run cm ``` 这样,Commitizen就会弹出一个交互式的界面,要求我们填写符合规范的提交信息。通过这种方式,我们可以更好地规范我们的提交信息,提高代码审查、信息查找和版本回退的效率和可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Git 提交规范](https://blog.csdn.net/fd2025/article/details/124543690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值