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();