Vue项目部署后提示刷新版本的实现代码

 更新时间:2022年06月28日 09:56:08   作者:Gaby  
这篇文章主要给大家介绍了关于Vue项目部署后提示刷新版本的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友可以参考下

vue项目部署新版本后,用户如果不刷新页面,可能会出现一些异常,需要刷新后才能正常使用,所以希望每次部署新版本后,提示用户刷新浏览器。

之前看vue文档,发现类似的功能。

查了好些资料,网上说的大部分也都是通过接口调用获取版本号与本地版本号进行对比,然而我只想用纯前端的方式,那该怎么做呢,实在不行就只能查资料自己开发个 webpack 插件进行处理了。

versionWebpackPlugin 主要代码:

/***
 * title: versionWebpackPlugin.js
 * Author: Gaby
 * Email: 
 * Time: 2022-06-27 14:24
 * LastEditTime: 2022-06-27 14:24
 * LastEditors: Gaby
 * Description:
 */

const fs = require('fs');
const path = require('path');
const config = require('../package.json');
const readFile = filePath => fs.readFileSync(filePath, 'utf8');
const resolve = (...dir) => path.resolve(__dirname, '..', ...dir);
const resolveApp = (...dir) => resolve('src', ...dir);
const pluginName = 'versionWebpackPlugin';
const versionFileName = 'version.json';

class versionWebpackPlugin {
  apply(compiler) {
    // 1.自动注入到 webpack.entry
    compiler.options.entry.app.import = [
      ...compiler.options.entry.app.import,
      ...['./src/libs/version.js']
    ];

    // 2.将版本号写入到 main 文件中
    compiler.hooks.beforeRun.tap(pluginName, () => {
      let content = readFile(resolve('build/', 'version.js'));
      let string = content.toString();
      string = string.replace(
        '{{currentVersion}}',
        config.version + '_' + Date.now()
      );
      string = string.replace(
        '{{VERSION_FILE_PATH}}',
        'static/' + versionFileName
      );
      fs.writeFile(resolve('src/libs/', 'version.js'), string, () => {
        // console.log('更新完成');
      });

      fs.writeFile(
        resolve('static/', versionFileName),
        '{\n' +
          '  "version": "' +
          config.version +
          '_' +
          Date.now() +
          '"\n' +
          '}',
        () => {
          // console.log('更新完成');
        }
      );
    });
}
module.exports = versionWebpackPlugin;

项目中使用的是 vue-cli5 进行创建的,配置文件要自行创建,要配置在 vue.config.js中,以下两种引入方式均可。

const path = require('path');
// const versionPlugin = require('./build/version-webpack-plugin');

module.exports = {
  // 公共路径(必须有的) 默认/
  publicPath: './',
  // 输出文件目录 默认dist
  outputDir: 'dist',
  // 静态资源存放的文件夹(相对于outputDir) 默认根目录
  assetsDir: 'static',
  // 生产环境SourceMap关
  productionSourceMap: false,
  // webpack 全局变量配置
  configureWebpack: {
    // plugins: [new versionPlugin()]
  },
  chainWebpack: config => {
    config
      .plugin('version-webpack-plugin')
      .use(require('./build/version-webpack-plugin'), [{}]);
  }
};

这里先抛个大概思路,看看小伙伴们是否能自行完成,新部署项目后,右下角弹出提示有新版本更新,点击更新。

总结

到此这篇关于Vue项目部署后提示刷新版本的文章就介绍到这了,更多相关Vue提示刷新版本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue截取视频第一帧的图片问题

    vue截取视频第一帧的图片问题

    这篇文章主要介绍了vue截取视频第一帧的图片问题,基本就是用cavas进行绘制,解决一下跨域问题,截视频第一帧,然后根据视频原本的宽高进行绘制,最后转一下图片格式即可,需要的朋友可以参考下
    2022-11-11
  • Vue代理报错404问题及解决(vue配置proxy)

    Vue代理报错404问题及解决(vue配置proxy)

    这篇文章主要介绍了Vue代理报错404问题及解决(vue配置proxy),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • vue2.0与vue3.0及vue与react的区别及说明

    vue2.0与vue3.0及vue与react的区别及说明

    这篇文章主要介绍了vue2.0与vue3.0及vue与react的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue three.js创建地面并设置阴影实现示例

    vue three.js创建地面并设置阴影实现示例

    这篇文章主要为大家介绍了vue three.js创建地面并设置阴影实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 简单谈谈Vue3中的ref和reactive

    简单谈谈Vue3中的ref和reactive

    vue3中实现响应式数据的方法是就是使用ref和reactive,所谓响应式就是界面和数据同步,能实现实时更新,下面这篇文章主要给大家介绍了关于Vue3中ref和reactive的相关资料,需要的朋友可以参考下
    2023-04-04
  • 详解Vue中$refs和$nextTick的使用方法

    详解Vue中$refs和$nextTick的使用方法

    这篇文章主要为大家介绍了Vue中$refs和$nextTick的使用方法,文中的示例代码讲解详细,对我们学习Vue有一定帮助,需要的可以参考一下
    2022-03-03
  • 推荐VSCode 上特别好用的 Vue 插件之vetur

    推荐VSCode 上特别好用的 Vue 插件之vetur

    这篇文章主要介绍了推荐VSCode 上特别好用的 Vue 插件之vetur,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • vue插槽slot的理解和使用方法

    vue插槽slot的理解和使用方法

    这篇文章主要给大家介绍了关于vue中插槽slot的理解和使用方法,文中通过示例代码介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • Vue封装通过API调用的组件的方法详解

    Vue封装通过API调用的组件的方法详解

    在日常业务开发中我们会经常封装一些业务组件,下面这篇文章主要给大家介绍了关于Vue封装通过API调用的组件的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Vue3+TypeScript实现递归菜单组件的完整实例

    Vue3+TypeScript实现递归菜单组件的完整实例

    Vue.js中的递归组件是一个可以调用自己的组件,递归组件一般用于博客上显示评论,形菜单或者嵌套菜单,文章主要给大家介绍了关于Vue3+TypeScript实现递归菜单组件的相关资料,需要的朋友可以参考下
    2021-08-08

最新评论