vue项目npm run build的时候自动更新package.json中的version

在vue项目最外侧新增一个addVersion.js 脚本,脚本中编写逻辑来解析当前的版本号

// addVersion.js  
const fs = require('fs');  
const path = require('path');  
  
const packageJsonPath = path.join(__dirname, 'package.json');  
  
try {  
  // 读取 package.json 文件内容  
  const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf8');  
  const packageJson = JSON.parse(packageJsonContent);  
  
  // 解析版本号  
  const versionParts = packageJson.version.split('.');  
  const major = parseInt(versionParts[0], 10);  
  const minor = parseInt(versionParts[1], 10);  
  const patch = parseInt(versionParts[2], 10);  
  
  // 根据需要自增版本号  
  // 例如,这里我们仅对补丁版本号进行自增  
  patch += 1;  
  
  // 构建新的版本号  
  const newVersion = `${major}.${minor}.${patch}`;  
  
  // 更新 package.json 中的版本号  
  packageJson.version = newVersion;  
  
  // 将更新后的内容写回 package.json 文件  
  fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));  
  
  console.log(`New version set to: ${newVersion}`);  
} catch (error) {  
  console.error('Error updating version:', error);  
}
 

然后,你可以像之前一样在 package.json 的 scripts 部分修改build命令来运行这个脚本:

	"scripts": {
		"start": "npm run serve",
		"build": "node ./src/addVersion.js && vue-cli-service build",
	}

当你运行 npm run build 时,它将会先执行 add-version 脚本以增加版本号。

另外,有的系统可能希望获取当前的年月日作为第3位,那么修改addVersion.js中的逻辑,新增方法getCurrentDateString。

function getCurrentDateString() {
  const now = new Date();
  const year = now.getFullYear();
  const month = (now.getMonth() + 1).toString().padStart(2, '0');
  const day = now.getDate().toString().padStart(2, '0');
  const currentDateAsString = `${year}${month}${day}`;
  return currentDateAsString;
}

然后在patch赋值那边,获取getCurrentDateString的值即可。

const patch = this.getCurrentDateString();

  

posted on 2024-02-26 13:51  技术高超  阅读(456)  评论(0编辑  收藏  举报