腾讯云 cos - 自动上传及cdn刷新

1,216 阅读2分钟

该脚本用于自定义上传文件/目录至腾讯云 cos ,并自动刷新 cdn 缓存。

实现的功能点如下:

  1. 可自定义cos服务和cdn服务秘钥
  2. 自定义文件或目录
  3. 指定上传目录路径
  4. 可配置是否转译 js
  5. 可配置是否压缩 js、图片(仅限jpeg/png/svg/gif)
  6. 上传前二次确认(通过 inquirer 插件实现与用户在控制台的交互) image.png
  7. 上传失败重试,最多三次
  8. 上传文件结果统计,失败个数,成功个数,失败文件 企业微信截图_16590073187773.png
  9. cdn 自动刷新缓存
  10. 上传文件目录返回,并可以配置以 txt 文件导出
    企业微信截图_16590074947788.png 当你想要自己通过腾讯云cdn服务刷新文件缓存时,可以在命令中加上 cdnPathTxt 参数。该参数会在文件上传结束后生成一个包含所有文件访问地址的 txt 文件,可以直接在腾讯云 cdn 上传该文件进行刷新。
    企业微信截图_1659007622571.png 企业微信截图_16590077252104.png

1.使用方式:

安装 cos-helper@v0.0.6

使用以下命令运行脚本:

cos-helper [files] [--directoryPath directoryPath] [--jsPolyfill] [--compress] [--jsCompress] [--imgCompress] [--cdnRefresh] [--cdnPathTxt] [--cdnDomain cdnDomain] [--secretId secretId] [--secretKey secretKey] [--cdnSecretId cdnSecretId] [--cdnSecretKey cdnSecretKey]
1.1例子

例1:最简单的上传文件功能必传字段有 files、secretId、secretKey、bucket、region 五个

cos-helper test/** --secretId [mockSecretId] --secretKey [mockSecretKey] --bucket [mockBucket] --region [mockRegion]

例2:当使用 cdn 相关功能时需要传入 cdnDomain 字段,比如打印文件的 cdn 路径下载文件的 cdn 路径自动刷新 cdn 缓存

cos-helper test/** --secretId [mockSecretId] --secretKey [mockSecretKey] --bucket [mockBucket] --region [mockRegion] --cdnDomain [mockCdnDomain]

当使用自动刷新 cdn 缓存功能时还需要传入 cdnSecretId 和 cdnSecretKey,用作 api 调用时使用。

例3:想 js 转译、js 和 图片压缩等功能可以根据自身需求进行配置

cos-helper test/** --secretId [mockSecretId] --secretKey [mockSecretKey] --bucket [mockBucket] --region [mockRegion] --jsPolyfill  --compress

3.参数:

参数类型是否必传备注
filesstring(以空格隔开)文件或目录,需要遵循glob规范
directoryPathstring上传到 cos 的目录
jsPolyfillboolean是否转译 js
compressboolean是否压缩文件(包括 js 和图片)
jsCompressboolean是否压缩 js
imgCompressboolean是否压缩图片(仅支持png/jpeg/svg/gif)
cdnRefreshboolean是否刷新 cdn 缓存
cdnPathTxtboolean 是否下载上传到 cos 的所有文件路径列表
cdnDomainstring cdn 域名
secretIdstringcos 服务秘钥字段
secretKeystringcos 服务秘钥字段
bucketstringcos 存储桶名称
regionstringcos 可用地域
cdnSecretIdstringcdn 服务秘钥字段,在使用 cdnRefresh 时必传
cdnSecretKeystringcdn 服务秘钥字段,在使用 cdnRefresh 时必传

4.流程图

cdn.png

5.待完善

1.单个文件超过5g需要使用分块上传

2.上传的文件存在重名如何处理?提示用户?

3.不同开发者使用时上传的文件资源重名如何处理?简单的文件覆盖会导致资源错乱。