该脚本用于自定义上传文件/目录至腾讯云 cos ,并自动刷新 cdn 缓存。
实现的功能点如下:
- 可自定义cos服务和cdn服务秘钥
- 自定义文件或目录
- 指定上传目录路径
- 可配置是否转译 js
- 可配置是否压缩 js、图片(仅限jpeg/png/svg/gif)
- 上传前二次确认(通过 inquirer 插件实现与用户在控制台的交互)
- 上传失败重试,最多三次
- 上传文件结果统计,失败个数,成功个数,失败文件
- cdn 自动刷新缓存
- 上传文件目录返回,并可以配置以 txt 文件导出
当你想要自己通过腾讯云cdn服务刷新文件缓存时,可以在命令中加上 cdnPathTxt 参数。该参数会在文件上传结束后生成一个包含所有文件访问地址的 txt 文件,可以直接在腾讯云 cdn 上传该文件进行刷新。
1.使用方式:
使用以下命令运行脚本:
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.参数:
| 参数 | 类型 | 是否必传 | 备注 |
|---|---|---|---|
| files | string(以空格隔开) | 是 | 文件或目录,需要遵循glob规范 |
| directoryPath | string | 否 | 上传到 cos 的目录 |
| jsPolyfill | boolean | 否 | 是否转译 js |
| compress | boolean | 否 | 是否压缩文件(包括 js 和图片) |
| jsCompress | boolean | 否 | 是否压缩 js |
| imgCompress | boolean | 否 | 是否压缩图片(仅支持png/jpeg/svg/gif) |
| cdnRefresh | boolean | 否 | 是否刷新 cdn 缓存 |
| cdnPathTxt | boolean | 否 | 是否下载上传到 cos 的所有文件路径列表 |
| cdnDomain | string | 是 | cdn 域名 |
| secretId | string | 是 | cos 服务秘钥字段 |
| secretKey | string | 是 | cos 服务秘钥字段 |
| bucket | string | 是 | cos 存储桶名称 |
| region | string | 是 | cos 可用地域 |
| cdnSecretId | string | 否 | cdn 服务秘钥字段,在使用 cdnRefresh 时必传 |
| cdnSecretKey | string | 否 | cdn 服务秘钥字段,在使用 cdnRefresh 时必传 |
4.流程图
5.待完善
1.单个文件超过5g需要使用分块上传
2.上传的文件存在重名如何处理?提示用户?
3.不同开发者使用时上传的文件资源重名如何处理?简单的文件覆盖会导致资源错乱。