vue2 自定义webpack plugin 添加版本文件到public目录下/vue-config全局环境变量

在项目根目录创建version-plugin.js文件

javascript 复制代码
// 引进node fs 模块
const fs = require('fs')

// 引进node path 模块
const path = require('path')

// webpack plugin
class VersionPlugin {

	// 实例化传的参数
  constructor (options = {}) {
    this.options = options
    this.isFinish = false
  }

	// plugin 勾子
  apply (compiler) {
  	// plugin 执行完成
    compiler.hooks.done.tap('VersionPlugin', () => {
    // 判断已经加载过结束
      if (this.isFinish) return false
		
		// 写入文件到public目录下
      fs.writeFileSync(path.join(__dirname, 'public', 'version.json'), JSON.stringify(this.options))
      this.isFinish = true
    })
  }
}

module.exports = VersionPlugin

vue-config.js文件

javascript 复制代码
const webpack = require('webpack')
const VersionPlugin = require('./version-plugin')
const now = Date.now()
module.exports = {
configureWebpack: {
		plugins: [
			// 实例自定义plugin 并传入时间缀
	      	new VersionPlugin({ version: now }),
			
			// 定义全局环境变量
	      	new webpack.DefinePlugin({
	        'process.env.VUE_APP_VERSION': now
      })]
	}
}

在router跳转前可以做其它操作

javascript 复制代码
import axios from 'axios'
// 在生产环境上
if (process.env.NODE_ENV === 'development') return false
// 通过axios 获取版本信息
const res = await axios.get(location.origin + '/version.json' + '?timeStamp=' + Date.now())

// 判断信息不同,操作其它逻辑
if (res.data.version !== process.env.VUE_APP_VERSION) {}
相关推荐
水煮白菜王3 分钟前
商用地图全面收费?从天地图到开源生态的替代路线
前端·javascript·高德地图·amap·开源地图
程序员黑豆4 分钟前
鸿蒙应用开发:网络请求三种方式详解(http / rcp / axios)
前端·harmonyos
黄敬峰9 分钟前
前端路由到底是个啥?React Router v7 从零到一,大白话一次讲透
前端·面试
先吃饱再说20 分钟前
从多页到单页:前端路由的演进与 React Router
前端·react.js·前端框架
北墨NoLimit21 分钟前
TRAE Work实战:把办公Agent竞品调研从2-3天压到32分钟,有完整指令模板
前端·人工智能·数据可视化
颜进强26 分钟前
Calude Code - 25 CodeGraph:让 AI 真正读懂你的代码库
前端·后端·ai编程
七牛开发者26 分钟前
Agent 小知识|长任务不重来:Agent 状态保存的工程设计
前端·javascript·后端
weixin_431600441 小时前
做 Agent 会用到的 Node API(3):异步与流
前端·学习·ai·agent·ai编程
程序员黑豆1 小时前
鸿蒙应用开发之生命周期方法完全指南
前端·harmonyos
一点一木1 小时前
第 23 届 ChinaJoy 刚结束,我把 965 个展台做成了 3D 云展馆
前端·人工智能