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 时会被打包,所有在打包文件中就看不到了,所有这个问题还有待于解决?或者你有好的办法欢迎指导!!!
做最好的自己,不努力永远看不到自己的光环。别在该努力的年纪享乐,就不会在该享乐的年纪吃苦!

浙公网安备 33010602011771号