vue通过webPack在打包时自动更新版本号,获取git commitId 等信息
1. 首先需要在命令行中安装我们需要的依赖包
npm install --save-dev git-revision-webpack-plugin
2.一般在安装好之后就可以正常使用了,但是有时候需要我们在安装一下,所以我们最好在执行以下:
npm install
3.安装好依赖包之后,我们就可以正常使用了,我们在vue.config.js文件中写入以下代码:
const path = require('path') const Timestamp = new Date().getTime() //使用刚才安装的依赖包 const {GitRevisionPlugin} = require('git-revision-webpack-plugin') //使用git信息 const gitRevisionPlugin = new GitRevisionPlugin(); //获取commitId const commitId = gitRevisionPlugin.commithash() //获取branch信息 const branch = gitRevisionPlugin.branch() var fs = require('fs') const chalk = require('chalk') // const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV) //每次打包构建代码,自动更新版本号,同一天加1,隔天自动回归变成 1 。例如{ 今天:1.20200917.3,第二天:1.20200918.1 } try { function AddZero(time){ if(time<10){ return "0"+time }else{ return time } } //指出我们要将信息写入到哪里 let packageTxt=fs.readFileSync('./package.json','utf8'); let versionData = packageTxt.split('\n'); let packageJson = JSON.parse(packageTxt); let VersionArr = packageJson.version.split('.'); let date = new Date(); let today = date.getFullYear()+""+AddZero((date.getMonth()+1))+""+AddZero(date.getDate()) if(today == VersionArr[1]){ VersionArr[2] = parseInt(VersionArr[2])+1 }else{ VersionArr[1] = date.getFullYear()+""+AddZero((date.getMonth()+1))+""+AddZero(date.getDate()) VersionArr[2] = 1; } let versionLine = VersionArr.join('.'); for(let i= 0; i<versionData.length;i++){ if(versionData[i].indexOf('"version":')!=-1){ versionData.splice(i,1,' "version": "'+versionLine+'",'); break; } } for(let i= 0; i<versionData.length;i++){ if(versionData[i].indexOf('"buildTime":')!=-1){ versionData.splice(i,1,' "buildTime": "'+date+'",'); break; } } for(let i= 0; i<versionData.length;i++){ if(versionData[i].indexOf('"commitId":')!=-1){ versionData.splice(i,1,' "commitId": "'+commitId+'",'); break; } } for(let i= 0; i<versionData.length;i++){ if(versionData[i].indexOf('"branch":')!=-1){ versionData.splice(i,1,' "branch": "'+branch+'",'); break; } } // versionData.splice(i,1,' "buildTime": "'+versionLine+'",'); fs.writeFileSync('./package.json',versionData.join('\n'),'utf8'); console.log(chalk.green.bold('更新版本号成功!当前最新版本号为:'+versionLine)); } catch(e) { console.log(chalk.red.bold('读取文件修改版本号出错:',e.toString())); }
4.上边我们将一些信息需要写入到package.json中,所以我们就需要在pageage.json中提前初始化字段:
{ "name": "k12PlatformWeb", "version": "0.20210104.8", "private": true, "buildTime": "Mon Jan 04 2021 11:02:00 GMT+0800 (中国标准时间)", "packageName": "k12PlatformWeb", "commitId": "2431f010a3b7ed6037b6345efd3f9201a7e8433c", "branch": "master", }
5.这样我们在使用 npm run build 时就会自动更新这些字段的信息
6.如果我们要网页的其他地方使用pageage.json中的信息,那我们就要在相应的界面这样编写:
const pageageInfo = require('././pageage.json') var v = pageageInfo.verdion //这样就获取到了pageage.json中version中的信息
7.上边的问题其实有一个不妥之处,那就是这个pageage.json文件在使用npm run build 时会被打包,所有在打包文件中就看不到了,所有这个问题还有待于解决?或者你有好的办法欢迎指导!!!
做最好的自己,不努力永远看不到自己的光环。别在该努力的年纪享乐,就不会在该享乐的年纪吃苦!