前端工程注入版本号

一、前言

容器化时代,当页面出现问题时,如果你的新版本有可能已经修复了,那样你再排查它就没有意义了。为什么不一定是最新版本呢?一是可能是缓存作祟,二是可能运维成员由于某种原因回退了版本。

怎么确认问题发生在哪个版本呢?这就需要我们往页面注入版本号。

通常这一步,是在打包构建时,将package.json中的version字段注入到html上(所以要求每次发布版本,都修改对应的version,最好使用npm version命令操作)。我比较推荐在head中添加一个meta,当然你也可以将它打印出来。

二、webpack

React的脚手架搭建出来的工程为例,核心是html-webpack-plugin这个插件。

使用npm run eject之后,修改config/webpack.config.js文件,添加一句:

// 放在const paths = require("./paths");之后。这句就是读取了package.json文件
const appPackageJson = require(paths.appPackageJson);

搜索HtmlWebpackPlugin,找到这段代码:

 plugins: [
      // Generates an `index.html` file with the <script> injected.
      new HtmlWebpackPlugin(
        Object.assign(
          {
   },
          {
   
            inject: true,
            template: paths.appHtml,
          },
          ...
 ))]

修改Object.assign的第一个参数:

Object.assign(
          {
   
            meta: {
   
              version: appPackageJson.version,
            },
          },
          {
   
            inject: true,
            template: paths.appHtml,
          },
  )

这样,页面的head中就有了版本号:

不使用eject当然也是可以的,有脚手架提供的钩子函数,原理一样,都是修改这里,就不赘述了。

三、vite

对于vite项目,可以使用vite-plugin-html-template插件。在vite.config.ts中添加以下代码:

import htmlTemplate from 'vite-plugin-html-template'
import {
    version } from "./package.json";

// https://vitejs.dev/config/
export default defineConfig({
   
  plugins: [vue(), 
    htmlTemplate({
   
      data: {
   
        version
      },
    }),
  ],
  ...
})

因为引用了json文件,需要修改默认的tsconfig.config.json,在include中添加package.json

{
   
  "include": [xxx, "package.json"],
}

index.html移动到public目录下,在head中添加一句:

<head>
  <meta version="<%- version %>" />
  ...
</head>

原来body中的script要去掉:

<body>
  <div id="app"></div>
  <script type="module" src="/src/main.ts"></script>
</body>

这样在页面上就能看到版本号了:

四、最后

本人每篇文章都是一字一句码出来,希望对大家有所帮助,多提提意见。顺手来个三连击,点赞👍收藏💖关注✨,一起加油☕

相关推荐

  1. 前端-高德地图去掉左下角Logo和版本

    2023-12-24 08:48:02       26 阅读
  2. Swift对比版本

    2023-12-24 08:48:02       30 阅读
  3. ubuntu 查看版本号、查看内核版本

    2023-12-24 08:48:02       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-24 08:48:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-24 08:48:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-24 08:48:02       82 阅读
  4. Python语言-面向对象

    2023-12-24 08:48:02       91 阅读

热门阅读

  1. 前端基础vue路由懒加载

    2023-12-24 08:48:02       50 阅读
  2. Ubuntu2204配置samba

    2023-12-24 08:48:02       74 阅读
  3. (五)Python 垃圾回收机制

    2023-12-24 08:48:02       50 阅读
  4. servlet+thymeleaf改良版

    2023-12-24 08:48:02       62 阅读
  5. 一款C++编写的数据可视化库Matplot++

    2023-12-24 08:48:02       63 阅读
  6. 微信小程序 上列表拉加载下拉刷新

    2023-12-24 08:48:02       62 阅读