背景:webpack构建的时候文件名一样如果浏览器不强刷,则会保留上一次的构建代码内容,所以在webpack构建文件名称的时候加上当前的时间,这样文件名不会因为一样而加载上一次的内容
let time = new Date().getTime();
config.output.filename = `[name].${time}.js`
config.output.chunkFilename = `[name].${time}.js`
但是移动端小程序内嵌的H5网页在线上环境是没有控制台输出的,就没法确认是不是更新了
思路:构建的时候暴露出来一个变量,在项目的空白处加一个点击事情(比如点击5次),点击之后就会弹出这个变量(埋点)。
首先暴露这个变量,在vue.config.js配置,运用webpack的DefinePlugin插件
// 获取分支名称
// const childProcess = require('child_process')
// const branch = childProcess.execSync('git rev-parse --short HEAD').toString().replace(/\s+/, '')
chainWebpack: (config) => {
// 版本号
config.plugin('define').tap(args => {
//`${branch}本来想获取分支名称的 但是本地测试是好的,一发布到测试环境就打印HEAD没解决所以没用
// args[0]["VERSION"] = JSON.stringify(`${branch} ${new Date().toLocaleString()}`)
args[0]["VERSION"] = JSON.stringify(`${new Date().toLocaleString()}`)
return args
});
}
直接在文件里打印VERSION变量,在编译的时候就会拿到了,这样发布完后点击五次事件就可以打印当前编译的时间了,就能判断是不是最新的了
PS:代码里面遗留的问题,测试环境获取不到分支名,如果有解决的可以帮我解决一下哈