前端进阶(4) - 清理服务器上 webpack 打包的过期 hash 文件

清理服务器上 webpack 打包的过期 hash 文件

现在前端的项目基本上都会用 webpack 打包代码,并且文件名(html 文件除外)都是 hash 化的,这样可以去除浏览器的缓存。但是会产生另外一个问题,就是服务器上会堆积大量过期(不会被用到)的 hash 文件,这些文件又主要是 jscss 文件,因为基本上每构建一次都会产生新的 jscss 文件。如果这些文件不清除的话,会大量占用服务器存储空间。

1. 思路

  1. html 文件中读取 css 文件的 hash 值集合;
  2. 然后根据这些 hash 值集合,把 hash 不在这个集合内的 css 文件删掉;
  3. html 文件中读取 js 文件的 hash 值集合;
  4. 然后根据这些 hash 值集合,把不属于动态加载的,并且 hash 不在这个集合内的 js 文件删掉;(动态加载 js 参考 dynamic-imports
  5. 从不属于动态加载的 js 文件中读取动态加载的js 文件的 hash 值集合;
  6. 然后根据这些 hash 值集合,把动态加载的,并且 hash 不在这个集合内的 js 文件删掉;
  7. 从剩下的 html,css,js 文件中读取图片、字体等其他静态资源文件的 hash 值集合;
  8. 然后根据这些 hash 值集合,把 hash 不在这个集合内的静态资源文件删掉。

2. sclean

基于上面这个思路,我封装了一个 npm 包:sclean.

主要有以下几个功能:

  1. 备份服务器文件,因为删除是非常危险的一个操作,所以在每次清除过期文件之前都会备份一次,当然也可以手动备份;
  2. 恢复服务器文件到之前备份的某个状态(用于清除出错之后的恢复操作);
  3. 根据配置进行清除操作,比如自定义目标目录(dist, build),html文件(php, jsp),hash 长度(32, 8)等。

安装

npm install sclean -g

执行清除操作

sclean

详细用法参考 sclean.

3. 后续

更多博客,查看 https://github.com/senntyou/blogs

作者:深予之 (@senntyou)

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值