UNPKG

@shencom/oss-upload

Version:
274 lines (205 loc) 8.42 kB
# @shencom/oss-upload > 使用说明 ## 介绍 `oss-upload` 用于日常部署前端代码自动化脚本; 基于 `rollup/typescript` 构建,`CommonJS``ESModule`; ## 安装 ```sh yarn add -D @shencom/oss-upload # or yarn add -D git+https://gitlab.shencom.cn/web/tools/oss-upload.git#master ``` ## 使用 > **注意:** 需要提前配置秘钥 ### 配置秘钥 可以使用以下两种方式配置秘钥 1. 可以使用 `@shencom/cli` 创建秘钥 <code style="color:#ed5a65">(推荐)</code> ```sh # 全局配置: pnpm add @shencom/cli && pnpm sc oss config # 项目配置: pnpm add @shencom/cli && pnpm sc oss config -p ``` 2. 在当前项目根目录创建 `.env.oss.local` 文件,并配置如下内容: ``` accessKeySecret=xxx accessKeyId=xxx ``` ### 初始化 - 类型 ```ts new OSS(ops: OssOptions): OSS ``` - 示例 ```ts import { OSS } from '@shencom/oss-upload'; const CLIENT = new OSS({ ignore: ['**/assets/**'], // 过滤文件同 glob.ignore 规则 ossPath: `xxx`, // oss基础路径。如: plugins/test/scloud/xxx }); ``` - `OssOptions` 说明 | 参数 | 说明 | 类型 | 可选项 | 默认值 | | -------------- | --------------------------------------- | ---------- | ------ | ------------ | | `ossPath` | oss 基础路径 | `string` | 必填 | - | | `bucket` | bucket 名,一般不需要填写 | `string` | - | `scplugins` | | `ignore` | 过滤上传、删除文件,同 glob.ignore 规则 | `string[]` | - | - | | `deleteIgnore` | 过滤删除 oss 文件,合并`ignore` | `string[]` | - | - | | `uploadIgnore` | 过滤上传 oss 文件,合并`ignore` | `string[]` | - | - | | `timeout` | 超时时间 | `number` | - | `1000*60*10` | ### 方法 **list** - 说明: 获取 oss 文件列表 - 类型: `OSS.list(ossPaths: string[] | string, returnType?: 'file' | 'dir' | 'all', options?: AliOSS.ListV2ObjectsQuery): Promise<AliOSS.ObjectMeta|string[]|Pick<AliOSS.ListObjectResult, 'objects' | 'prefixes'>[]>` - 参数: - `ossPaths`: oss 路径 - `returnType?`: 返回类型,默认: `all` - `options?`: oss 配置,当 `returnType=all` 时生效 - 示例: ```ts const list = await CLIENT.list(ossPaths, returnType, options); ``` **head** - 说明: 批量获取 oss 文件的 md5 - 类型: `OSS.head(ossFilePaths: string[]): Promise<FileData[]>` - 参数: - `ossFilePaths`: oss 文件路径 - 示例: ```ts const objects = await CLIENT.head(ossFilePaths); ``` **put** - 说明: 删除 oss 文件 - 类型: `OSS.delete(ossPaths: string[]): void` - 参数: - `ossPaths`: oss 文件路径 - 示例: ```ts await CLIENT.delete(paths); ``` **put** - 说明: 上传文件 - 类型: `OSS.put(paths: OssUploadItem[]): void` - 参数: - `paths`: 上传路径对象 - 示例: ```ts await CLIENT.put(paths); ``` **clearVersionDir** - 说明: 清除版本号文件夹 - 类型: `OSS.clearVersionDir(paths: string[], limit?: number): void` - 参数: - `paths`: 文件路径 - `limit?`: 保留版本号目录个数,默认值: `10` - 示例: ```ts await CLIENT.clearVersionDir(paths, limit); ``` **upload** - 说明: 代码上传 - 类型: `OSS.upload(ops: UploadOptions): void` - 参数: - `ops`: 上传配置 - 示例: 参考下面说明 #### upload 使用说明 ```ts CLIENT.upload(ops: UploadOptions): Promise<void> ``` ```ts CLIENT.upload({ /** * 构建后的目录 * 如: * dirPath: 'xxx', * dirPath: 'xxx/xxx', */ dirPath: 'xxx', /** 是否开启本地文件和oss文件进行对比 */ // diff: false, /** 开启debug,开启后不进行上传和删除操作 */ // debug: true, /** 是否开启清除版本号目录,默认: false */ // isClearVersion: false, /** 保留版本号目录个数,默认: 10 */ // versionLimit: 10, /** 当前版本号 */ // version: 1.0.0; /** 处理获取本地文件列表钩子 */ // localFileHook: (data) => data, /** 处理oss路径列表钩子 */ // ossPathHook: (paths) => paths; /** 处理获取oss文件列表钩子 */ // ossFileHook: (data) => data, /** 上传前钩子 */ // beforeUploadHook: (data) => data, /** 删除前钩子 */ // beforeDeleteHook: (data) => data, }) .then(() => { // 成功 }) .catch(() => { // 失败 }); ``` > `UploadOptions` 说明 | 参数 | 说明 | 类型 | 可选项 | 默认值 | | ------------------ | -------------------------------------------------------- | ---------------- | ---------- | ------- | | `dirPath` | 目录路径 | `string` | 必填 | - | | `diff` | 开启本地文件和 oss 文件进行对比,支持命令行参数 `--diff` | `boolean` | - | `true` | | `debug` | 开启后不进行上传和删除操作,支持命令行参数 `--debug` | `boolean` | - | `false` | | `version` | 当前版本号 | `string` | - | - | | `versionLimit` | 保留版本号目录个数 | `number` | - | `10` | | `isClearVersion` | 是否开启清除版本号目录 | `boolean` | - | `false` | | `localFileHook` | 处理获取本地文件列表钩子 | `(data) => data` | 需要返回值 | - | | `ossPathHook` | 处理 oss 路径列表钩子 | `(data) => data` | 需要返回值 | - | | `ossFileHook` | 处理获取 oss 文件列表钩子 | `(data) => data` | 需要返回值 | - | | `beforeUploadHook` | 上传前钩子 | `(data) => data` | 需要返回值 | - | | `beforeDeleteHook` | 删除前钩子 | `(data) => data` | 需要返回值 | - | > `diff` 属性详细描述 对比规则: - 本地存在,oss 不存在: 上传 - 本地存在,oss 存在: 覆盖 - 本地不存在,oss 存在: 删除 ### 工具属性和方法说明 #### 属性 | 参数 | 说明 | 类型 | | ---------- | ---------------------------------- | -------------------------- | | `Mode` | 构建模式 | `build \| serve` | | `Env` | 构建环境 | `tst \| production \| uat` | | `envName` | 环境名 | `测试服 \| UAT \| 正式服` | | `isTst` | 测试环境 | `boolean` | | `isUat` | UAT 环境 | `boolean` | | `isPro` | 正式环境 | `boolean` | | `isUpload` | 跳过打包,直接上传 | `boolean` | | `isDebug` | 是否开启 debug | `boolean` | | `isBuild` | 打包模式 | `boolean` | | `isServe` | 开发模式 | `boolean` | | `branch` | 当前分支名 | `string` | | `_argv` | 参数解析同`minimist(process.argv)` | `minimist.ParsedArgs` | | `spinner` | spinner 实例 | `ora.Ora` | #### 方法 **md5** - 说明: md5 加密 - 类型: `(val: string | Buffer) => string` - 返回值: `boolean` **isFile** - 说明: 文件是否存在 - 类型: `(filePath: string) => boolean` - 返回值: `boolean` **getCliParam** - 说明: 获取命令行参数 - 类型: `() => string[]` - 返回值: `string[]` **confirm** - 说明: 提示确认操作 - 类型: `(message: string) => Promise<boolean>` - 返回值: `Promise<boolean>` **verifyBuild** - 说明: 验证打包 git 分支 是否对应 `master => 正式` `uat => UAT` - 类型: `(message: string) => boolean` - 返回值: `boolean`