Webpack上传腾讯云|项目复盘

1,060 阅读5分钟

前言

刷题打卡任务结束了,大家在做任务的过程中应该也收获了很多,好多大佬13号一天肝了十篇二十篇是真的牛,在等待开奖之前不妨来参加一下任务二总结总结吧!

项目简介

Webpack上传腾讯云是我个人之前为了解决遇见的问题所写的一个NPM插件,主要就是在Webpack打包完成之后可以将项目包上传到指定的腾讯云对象存储,实现CDN加速功能,提升项目的打开和访问速度。

NPM地址

GitHub仓库地址

演示项目GitHub仓库地址

项目背景

Webpack上传腾讯云我在去年的时候发过一篇介绍的文章,我们公司是一个线上线下相结合的电商公司,有ToBToC等不同的平台,包含APP、H5、微信小程序、WEB等端。

因为我们的客户群体不仅在国内,海外也有一部分,所以用户的使用体验对于我们来说也是非常重要的一环,其中项目的打开速度第一印象,所以我们的项目打包打包发布测试和正式环境都是放在CDN上的,之前我们都是放在某牛云上面,但是在去年八月份的时候突然出现了线上项目访问白屏、错误提示等比较严重的问题,当时我们平台正好也是在做活动,所以对于这个问题公司的领导都是非常重视,运营和客服也是一直在催问这个问题,我开始以为是打包过程中出错了,所以就重新打包发布,但是后来还是反馈同样的问题。

所以我当时又将项目的打包流程重新给过了一遍,用Debuggerconsole重新验证整个打包上传和发布功能,发现我们这边是没什么问题的,于是反馈给了当时在用的CDN平台,当时平台也是配合查找问题,但是也是没找到,我现在想起来也觉得是一个玄学问题。

时间不等人啊!当时也没有找到其他比较好的替代方案,所以我就自己写了一个插件用来将项目包上传到腾讯云上。

实践过程

我之前也没有写过Webpack插件,当时是边查阅资料和看别人写Webpack插件的相关文章,边学习边写demo来实现功能。

因为我一直用的是Vue,所以当时的demo和案例项目也都是用Vue来写的。

插件中用到了:

  • fs;
  • cos-nodejs-sdk-v5;
  • path;
  • ora;
  • lodash.isregexp;

cos-nodejs-sdk-v5是腾讯云 COS Nodejs SDK。

ora主要用来实现node.js命令行环境的loading效果,和显示各种状态的图标等。

lodash.isregexp检查 value 是否是 RegExp 对象。

这个插件要实现支持:

  • - secretId COS SecretId
  • - secretKey COS SecretKey
  • - bucket COS 存储对象名称,格式为对象名称加应用 ID,如:bucket-1250000000
  • - region COS 存储地域,参见官方文档
  • - path 存储路径, 默认为 [hash],也可以指定 hash 长度,如: [hash:8]
  • - exclude 可选,排除特定文件,正则表达式,如: /index.html$/
  • - include 可选,指定要上传的文件,正则表达式,如: /app.js$/
  • - batch 可选,批量上传文件并发数,默认 20

image.png

image.png

实现对路径的Hash替换。

image.png

配置传入信息收集。

image.png

定义任务数量的初始值。

image.png

使用filter来遍历做excludeinclude处理。

image.png

然后得到需要处理的任务数理。

image.png

使用Promise来上传任务队列。

对于上传队列还要做响应的信息提示,错误收集等一些基本功能。

总结思考

当时写这个插件真的是时间要求的很紧,对于很多细节点处理的都非常的粗糙,也借鉴了别的开发者的一些关于上传过程中的理念。

写完之后我自己进行了一些本地的简单测试,然后就直接应用到了问题项目的测试环境,经过线上测试之后发布到正式环境。发布正式后就没有再出现之前所遇到的问题,后来我把前端的一些项目全都应用上了。

现在回过头来看发现这个插件还有很多的优化点和可以增加的功能,例如可以实现多平台支持bug日志收集上传流程简化等。

之前为什么没有做相关的优化和更新?

时间不允许啊,这两年因为疫情的原因,公司的业务也收到很大的波动,一直在尝试各种的突破渠道,对于我们技术来说就是一直在根据公司的需求进行开发,所以一直没有整片的时间回过头来看这个。

往期精彩文章

[LeetCode1550题存在连续三个奇数的数组] | 刷题打卡

[LeetCode513题找树左下角的值] | 刷题打卡

[LeetCode0304题二维区域和检索 - 矩阵不可变] | 刷题打卡

前端上手Docker超详细基础教程

Typora+Vue主题+Gitee图床轻松写文章

前端迅速上手Linux基础教程

Docker简单上手03

Docker简单上手02

Docker简单上手01

本文正在参与「掘金 2021 春招闯关活动」, 点击查看活动详情

我是肥宅,希望你幸福❤️❤️❤️