阅读 158

webpack打包资源版本管理

webpack引入version-manage-webpack-plugin,提供打包资源的版本管理能力,实现非覆盖式发布。

覆盖式发布

打包时输出的新版本资源直接覆盖了旧资源,发布到服务器后,导致了:

  1. 正在使用的用户访问其他页面时,请求旧版本资源出现了404,此时必须通过刷新浏览器才能正常使用。

  2. 发版后出现致命bug,无法快速回滚为旧版,只能通过git回滚代码重新发版。

原理

构建时保留旧版本资源。记录package.jsonversion和本次打包生成的资源目录的映射关系,生成version-manage.json文件,实现对各个版本的资源管理。

功能

  • 版本与资源目录管理。(dist/version-manage.json

  • 旧版本恢复。

  • 版本修订号自增加。

  • 清除过期版本(记录,资源文件)。

  • 控制台打印版本号。

安装

npm i --save-dev version-manage-webpack-plugin 复制代码

yarn add --dev version-manage-webpack-plugin 复制代码

用法

const VersionManageWebpackPlugin = require('version-manage-webpack-plugin') module.exports = {   //...   plugins: [     // 添加到结尾处     new VersionManageWebpackPlugin()   ] } 复制代码

参数

字段类型默认值描述
entryFileName{String}index.htmlHtml入口文件
autoIncVersion{Boolean}false版本修订号是否自增加
indent{Number}2代码缩进,修改package.json文件时使用
maxAge{Number}0版本最大存储周期(秒)。始终保留上一个版本
log{Boolean}false访问时,控制台打印当前版本号

提示

  • 通过手动修改package.json版本号恢复旧版本。

  • 生产环境构建时使用。

  • 关闭脚手架构建前清除打包目录功能。

构建

设置package.jsonversion,指定本次版本号1.0.0

image.png

回滚版本

设置package.jsonversion,指定需要回滚的版本号1.0.0

image.png

清除旧版本

设置maxAge参数,构建时清除过期版本,注:始终保留上一个版本。

new VersionManageWebpackPlugin({     maxAge: '24 * 60 * 60', // 过期时间为一天 }) 复制代码

image.png


作者:doc
链接:https://juejin.cn/post/7019222347777310728


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐