项目的规模增大了之后,每一次上线的时候可能会有缓存,现在为了标记每次更新的版本也方便测试人员对比版本的更新信息,设置一个时间用于记录发布的版本。

功能

在每次的 build 之前,运行一个脚本,功能是记录本次 build 的时间,并写在 .env 文件中。

  1. const fs = require("fs");
  2. const path = require("path");
  3. console.log();
  4. let env = fs.readFileSync(path.join(process.cwd(), ".env.test"), "utf-8");
  5. const envPairs = env.split("\n\n");
  6. // 最后一条是需要的更新的数据
  7. if (envPairs[envPairs.length - 1].split(" = ")[0] === "VUE_APP_DEPLOY_TIME") {
  8. envPairs.pop();
  9. env = envPairs.join("\n\n");
  10. }
  11. const lastOne = `VUE_APP_DEPLOY_TIME = ${new Date()}`;
  12. env = env.concat("\n\n").concat(lastOne);
  13. fs.writeFileSync(path.join(process.cwd(), ".env.test"), env, "utf-8");

这样可以在每次 build 的时候更新时间。

  1. "scripts": {
  2. "serve": "vue-cli-service serve",
  3. "build": "vue-cli-service build",
  4. "lint": "vue-cli-service lint",
  5. "test": "jest --coverage",
  6. "bootstrap":"node ./scripts/bootstrap.js",
  7. "build:test":"npm run bootstrap && npm run build --mode test"
  8. },

更新了的是 .env.test 文件,所以是用在 test 环境下的。
在代码中是这样的:

  1. if (
  2. process.env.VUE_APP_ENV === "test" &&
  3. process.env.NODE_ENV === "production"
  4. ) {
  5. console.log(
  6. `%c ${process.env.VUE_APP_ENV}%c version deployed at %c ${process.env.VUE_APP_DEPLOY_TIME}`,
  7. "color:#905cda",
  8. "",
  9. "color:#447bdb"
  10. );
  11. }

效果:

image.png