项目的规模增大了之后,每一次上线的时候可能会有缓存,现在为了标记每次更新的版本也方便测试人员对比版本的更新信息,设置一个时间用于记录发布的版本。
功能
在每次的 build 之前,运行一个脚本,功能是记录本次 build 的时间,并写在 .env 文件中。
const fs = require("fs");
const path = require("path");
console.log();
let env = fs.readFileSync(path.join(process.cwd(), ".env.test"), "utf-8");
const envPairs = env.split("\n\n");
// 最后一条是需要的更新的数据
if (envPairs[envPairs.length - 1].split(" = ")[0] === "VUE_APP_DEPLOY_TIME") {
envPairs.pop();
env = envPairs.join("\n\n");
}
const lastOne = `VUE_APP_DEPLOY_TIME = ${new Date()}`;
env = env.concat("\n\n").concat(lastOne);
fs.writeFileSync(path.join(process.cwd(), ".env.test"), env, "utf-8");
这样可以在每次 build 的时候更新时间。
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"test": "jest --coverage",
"bootstrap":"node ./scripts/bootstrap.js",
"build:test":"npm run bootstrap && npm run build --mode test"
},
更新了的是 .env.test 文件,所以是用在 test 环境下的。
在代码中是这样的:
if (
process.env.VUE_APP_ENV === "test" &&
process.env.NODE_ENV === "production"
) {
console.log(
`%c ${process.env.VUE_APP_ENV}%c version deployed at %c ${process.env.VUE_APP_DEPLOY_TIME}`,
"color:#905cda",
"",
"color:#447bdb"
);
}