打包需要将一些信息进行插入

vue打包的时候将git提交信息打包进去

  1. 在项目根目录下新建一个名为 preBuild.js 的脚本文件,内容如下:
const child_process = require("child_process");
const fs = require("fs");

let commitId = child_process
  .execSync(`git log -n1 --format=format:"%H"`)
  .toString();
let branch = child_process
  .execSync(`git branch --show-current`)
  .toString()
  .trim();
let commitTime = child_process
  .execSync(`git log -n1 --pretty=format:"%ad" --date=iso`)
  .toString()
  .substring(0, 19);

let j = { commitId, branch, commitTime };
fs.writeFileSync("./public/git_info.json", JSON.stringify(j));

console.log("========== Save git info done. ==========");

注意:./public/git_info.json 是生成版本信息文件的目录与文件名称

  1. 修改 package.json 文件的打包命令为:"node preBuild.js && vue-cli-service build"

  1. 在终端输入打包命令:npm run build,在项目根目录下的 public 目录下会生成一个 git_info.json 文件,同时在打包的 dist 目录下也会生成一个 git_info.json 文件,文件内容如下:
{
  "commitId": "0744c99ca7651d969871e94780b920d9f1909b4d",
  "branch": "master",
  "commitTime": "2022-02-25 16:07:42"
}

vue项目打包自动更新版本号

创建一个js

let fs = require("fs");
const dayjs = require("dayjs");

const getPackageJson = () => {
  let data = fs.readFileSync("./package.json"); //fs读取文件
  return JSON.parse(data); //转换为json对象
};
let packageData = getPackageJson();
const updateVersion = () => {
  let version = packageData.version.split(".");
  version[version.length - 1]++;
  packageData.version = version.join(".");
  packageData.lastBuildTime = dayjs().format("YYYY-MM-DD HH:mm:ss"); //最后打包时间
};
updateVersion();
fs.writeFile(
  "./package.json",
  JSON.stringify(packageData, null, "\t"),
  (err) => {
    if (err) {
      console.log("写入失败", err);
    } else {
      console.log("写入成功 " + packageData.version);
    }
  }
);

改一下 packjson 里面,build 定义的内容

"scripts": {
	"serve": "vue-cli-service serve",
	"build": "node ./buildVersion.js && vue-cli-service build"
}

执行 npm run build 后自动更新 version 和 lastBuildTime
在这里插入图片描述

posted @ 2023-11-17 17:18  柯基与佩奇  阅读(38)  评论(0)    收藏  举报