随着自己做的这个产品愈发的成熟,商业化也在推进,企业级用户越来越多,所以这期twin这边需要单独出个版本的更新公告。
主要点在与在同一设备中同一版本的公告只显示一次,其实可以抽象为同一浏览器。
实现的思路主要是通过package中的版本号加localstorage去实现,因为这边在每次发版时,都会去跟进package中的version的。
这边用的vite去搭建的项目,即在项目构建时,去拿到package中的version,在viteconfig的define选项中暴露出去
但是 这样也会有一个问题 ,就是,在有时会修复某一些线上的问题,那么这时,其实也会更改版本号,一般是后面小数点后一位加一,不过看公司的规范了,这时即使没有重新发版,但也会版本更新公告的显示也会有问题,那么在设置version时处理一下即可,
export default defineConfig(({ mode }) => {
const getMajorVersion = () => {
if (process.env.npm_package_version === undefined) {
return '0.0';
}
const p = process.env.npm_package_version.split('.');
const v = `${p[0]}.${p[1]}`;
return v;
};
return {
define: {
__BUILD_DATE__: JSON.stringify(dayjs().format('YYYY-MM-DD HH:mm:ss')),
__APP_VERSION__: JSON.stringify(process.env.npm_package_version),
__APP_MAJOR_VERSION__: JSON.stringify(getMajorVersion()),
},
});
在modal处加一层判断即可
useEffect(() => {
if (isExpired) {
return;
}
const ok = localStorage.getItem('easytwin_version');
if (ok !== __APP_MAJOR_VERSION__) {
setIsNeedShown(true);
localStorage.setItem('easytwin_version', __APP_MAJOR_VERSION__);
} else {
setIsNeedShown(false);
}
}, [isExpired]);
- THE END -
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:http://www.cx330.cloud/index.php/2023/12/18/%e4%ba%a7%e5%93%81%e6%9b%b4%e6%96%b0%e5%85%ac%e5%91%8a/
共有 0 条评论