vue项目使用DefinePlugin配合git-revision-webpack-plugin记录最新git信息

861 阅读1分钟

需求

在线上网页中,前端可通过某种形式查看运行的代码的最新 git commit 信息,从而快速定位版本信息

DefinePlugin插件

DefinePlugin 允许创建一个在 编译 时可以配置的全局常量。利用 vue-cli 创建项目时,已内置,无需再次安装

git-revision-webpack-plugin 插件

git-revision-webpack-plugin 是一个基于 webpack 的插件,主要作用是获取当前 git 版本号与分支信息。使用前使用 npm 安装依赖: npm i git-revision-webpack-plugin -D

vue.config.js 做如下配置

/* vue.config.js 配置文件*/

// 引入插件,并生成实例
const { GitRevisionPlugin } = require('git-revision-webpack-plugin')
const gitRevisionPlugin = new GitRevisionPlugin()
// 使用 dayjs 格式化时间,使用前需安装依赖 npm i dayjs -S
const dayjs = require('dayjs')

module.exports = {
  chainWebpack: config => {
    config.plugin('define').tap(args => {
      args[0]['process.env'].COMMIT_HASH = JSON.stringify(gitRevisionPlugin.commithash())
      args[0]['process.env'].BRANCH = JSON.stringify(gitRevisionPlugin.branch())
      args[0]['process.env'].LAST_COMMIT_DATETIME = JSON.stringify(dayjs(gitRevisionPlugin.lastcommitdatetime()).format('YYYY-MM-DD HH:mm:ss'))
      return args
    })
  }
}

将配置的全局场景挂载到 window

个人用法是挂载到 window 上,可根据实际需求做处理

/* main.js 文件 */
window['_git'] = Object.freeze({
  COMMIT_HASH: process.env.COMMIT_HASH,
  BRANCH: process.env.BRANCH,
  LAST_COMMIT_DATETIME: process.env.LAST_COMMIT_DATETIME
})

查看

项目运行时,即可在开发者工具中获取运行代码的 git 信息:

image.png