open-index/open-npm huggingface dataset:
npm package: @seer-bigdata/cli
Description: 常用的ci脚本汇总
Latest version: 0.0.4

# @seer-bigdata/cli

常用的ci脚本汇总

```bash
命令：
  seer-cli tiny-compressor  通过tiny (https://tinypng.com/)
                            的openApi压缩图片，解决网页的20个资源的限制
                                                                 [aliases: tiny]
  seer-cli gen-iconfont     基于阿里iconfont的字体文件，自动将iconfont生成
                            @nutui/icons-react-taro 或 react-native 格式的
                            icon组件，便于直接通过<IconXX/>
                            方式引入自己的iconfont           [aliases: iconfont]
  seer-cli version          基于release-it 管理项目版本       [aliases: release]
```
npm package: @seer-bigdata/request
Description: 内部request工具包
Latest version: 0.0.1

# @seer-bigdata/request

request工具包，支持 **Taro** 和 **浏览器环境**

- 内部处理refreshToken 自动刷新逻辑
- 支持无登录态自动跳转登录页（配置 `loginUrl`）
- 内置 错误提示处理，错误后自动 toast 信息

- 提供和请求相关的工具函数，如创建单例请求函数等

:::tip
建议配合 [`@seer-bigdata/auto-gen-api`](./auto-gen-api) 插件使用，自动生成接口服务代码，避免手动编写接口文件代码
:::

## 安装依赖

```bash
npm install @seer-bigdata/request
```

### Taro 下使用

引用`@seer-bigdata/request/taro` 模块，详情看[TaroRequest](./classes/TaroRequest)

```ts title="config/index.ts"
import Request from '@seer-bigdata/request/taro';
```

### Web 下使用

引用`@seer-bigdata/request/web` 模块，详情看[WebRequest](./classes/WebRequest)

```ts title="config/index.ts"
import Request from '@seer-bigdata/request/web';
```
npm package: @seer-bigdata/sport-project-code
Description: 体测业务中的运动类型定义信息
Latest version: 0.0.11

# @seer-bigdata/sport-project-code

体测项目的项目Code 公共信息，用于统计基于体测项目的相关数据（code、icon、名称）等

- [`SportProjectCode`](#sportprojectcode): 项目Code 枚举，定义了体测项目的项目Code
- [`getSportProjectScoreConfig`](#getsportprojectscoreconfig): 基于传入的项目Code，返回对应的项目信息`projectInfo` （code、icon、名称） 和成绩展示相关信息，如果 `sportProjectInfoMap`没有对应的projectCode ，会基于关键字搜索 `sportProjectInfoMap` 中包含该关键字的项目信息
- [`getSportProjectName`](#getsportprojectname): 基于传入的项目Code，返回对应的项目名称（后端的项目名称可能和前端展示的项目名称有差异，这里优先返回 `sportProjectInfoMap` 中的name ）

**成绩展示相关**

- [`getSportProjectScoreAndUnit`](#getsportprojectscoreandunit): 基于传入的项目Code、成绩和单位，返回格式化后的分数单位。具体的项目展示逻辑，查看[项目code-预览](#项目code-预览) 中的成绩展示

- [`getSportProjectGradeInfoMap`](#getsportprojectgradeinfomap): 基于传入的项目Code，获取项目成绩等级映射表，key 为 "A" 、 "B" 、 "C" 、 "D"，值包含等级的索引、颜色和值

- [`getSportProjectGradeInfo`](#getsportprojectgradeinfo): 基于传入的项目Code和成绩等级，返回对应的成绩等级信息（索引、颜色和值）
- [`getSportProjectGradeValueByGradeScore`](#getsportprojectgradevaluebygradescore): 基于传入的项目Code和成绩分数，返回对应的成绩等级值（"A" 、 "B" 、 "C" 、 "D"）

- [`normalScoreConfig`](#normalscoreconfig): 默认的成绩配置相关的常量，包含默认的成绩单位、默认的成绩等级映射表等，可用于其他函数参数的默认值

**工具函数**

- [`formatSecondsToTime`](#formatsecondstotime): 基于传入的秒数，返回格式化后的时间字符串（"mm′ss″"）

## 使用

```ts
import {
  guessSportProjectInfo,
  getSportFeProjectName,
  sportProjectInfoMap,
  SportProjectCode,
} from '@seer-bigdata/sport-project-code';
getSportFeProjectName(SportProjectCode.shortrun_50_1); // 50米跑

const sprint502 = guessSportProjectInfo('sprint_50_2'); // 这个是不存在的code ，但会返回 SportProjectCode.shortrun_50_1的数据，并替换code 值
const sprint50MatchOldCode = guessSportProjectInfo('shortrun_50_1'); // shortrun_50_1 是旧的SportProjectCode ，但通过 guessSportProjectInfo 也能获取到 sportProjectInfoMap[SportProjectCode.shortrun_50_1]
const sprint50 = sportProjectInfoMap[SportProjectCode.shortrun_50_1];
```

## 项目code 预览

<ProjectCodeList />
npm package: @seer-bigdata/taro-plugin-command
Description: Taro插件-用于扩展Taro项目的命令
Latest version: 0.0.10

# @seer-bigdata/taro-plugin-command

通过Taro 插件，在Taro项目注入命令，当前支持的命令有

1. `taro upload` 上传小程序代码
2. `version` 命令，用于生成版本号
3. `release` 命令，用于生成正式版本号`x.y.z`，并上传小程序代码，是`version` (`patch`)命令和`upload`命令的组合
4. `pre-release` 命令，用于生成体验版版本号`x.y.z-<tag>.n`，并上传小程序代码，是`version` (`prerelease`)命令和`upload`命令的组合

5. `gen-api` 命令，用于根据Apifox项目生成API代码

## 基本使用

### 1. 接入插件

```ts title="config/index.ts"
export default defineConfig({
  // ... 其他配置保持不变
  plugins: [
    '@seer-bigdata/taro-plugin-command',
    {
      // 插件配置参数，可配置默认值
      //   upload: {},
    },
  ],
});
```

### 2. 执行命令

#### taro upload 上传小程序代码

相关配置参考[`UploadOptionsType`](./类型别名.UploadOptionsType.html)，命令行传入时，加上`--`前缀

1. 上传当前小程序代码 `npx taro upload`

2. 不需要build，直接上传当前小程序代码 `npx taro upload --ignoreBuild`

3. 支持透传build参数 `npx taro upload  --type weapp --env production` （不要传 `--watch`）

4. 支持环境变量透传给build 命令 `TARP_APP_NAME=appA npx taro upload`

5. 绕过 git 工作区检查 `npx taro upload --ignoreGitStatus`

6. 传入上传描述信息 `npx taro upload --uploadMsg 修改xx模块` (默认基于commitLog 自动生成)

:::warning
如果 `config.outputRoot` 配置了 `process.env.TARO_ENV` ，请执行`npx taro upload --type weapp` 上传代码 ，或自行兜底`config.outputRoot`，否则upload 命令执行时，获取的`config.outputRoot`的`process.env.TARO_ENV` 为 undefined
:::

##### 配置上传秘钥

小程序通过CI 上传，需要先在小程序管理后台下载「小程序代码上传秘钥」 `private.{appId}.key` 和设置上传IP 白名单，操作详情请看：https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html

1. 秘钥文件不建议上传到git ，当前是直接本地存储，通过gitignore 忽略，如需使用，需要找项目开发者获取秘钥信息
2. IP白名单配置的是IP段 `183.232.0.0/13` ，以确保不同开发者无需配置都可以上传

查看个人电脑的ip：https://ip138.com/

##### 上传机器人说明

**背景**

1. 当前体验版本的上传者发布的新版本默认为新的体验版本
   - 上传者A 发布了 `1.0.1` 版本，并设为体验版本
   - 上传者A 再发布 `1.0.2` 版本，`1.0.2` 版本默认成为体验版本
2. miniprogram-ci 的上传函数支持robot 属性，用于表明当前的上传者是哪个机器人

**处理**

执行上传时，通过两个机器人上传同一个产物，机器人1 上传的作为体验版本，机器人X 上传的作为留存版本；（X 基于当前版本号计算得到）

1. 生成版本1.0.1 ，机器人1 上传1.0.1 版本（作为体验版），机器人2上传1.0.1版本；管理页面的版本列表

- 机器人1 1.0.1
- 机器人2 1.0.1

2. 生成版本1.0.2，机器人1上传1.0.2版本（覆盖原来的1.0.1版本，自动成为最新体验版），机器人3上传1.0.3版本

- 机器人1 1.0.2
- 机器人2 1.0.1
- 机器人3 1.0.2
  ... 以此类推

2. 生成版本1.0.6，机器人1 上传1.0.6版本，机器人2上传1.0.6版本（脚本代码限制只保留就近5个版本）

- 机器人1 1.0.6
- 机器人2 1.0.6
- 机器人3 1.0.2
- 机器人4 1.0.3
- 机器人5 1.0.4
- 机器人6 1.0.5

#### taro version 生成版本号

基于`release-it` 生成版本号，内部默认定义 config文件，项目无需配置 config文件

1. 基本使用 `npx taro version` ，会自动问询需要生成的版本和是否git commit

2. 生成正式版本号 `npx taro version --increment patch --ci` 生成正式版本并跳过问询

3. 生成体验版本 `npx taro version --increment prerelease ---ci` 生成体验版本并跳过问询

4. 查看预期生成的changelog 信息 `npx taro version --changelog`

#### taro release 生成新正式版本并上传小程序代码

对 `taro version` 和 `taro upload` 命令的组合，生成新正式版本（`x.y.z`）并上传小程序代码。

1. 基本使用 `npx taro release`

#### taro pre-release 生成新体验版本并上传小程序代码

对 `taro version` 和 `taro upload` 命令的组合，生成新体验版本（`x.y.z-<tag>.0`）并上传小程序代码。

1. 基本使用 `npx taro pre-release`

#### taro gen-api 生成API代码

基于Apifox项目生成API代码，对[`@seer-bigdata/auto-gen-api`](../auto-gen-api/index) 的封装，便于Taro项目的统一使用

1. 基本使用 `npx taro gen-api` ，会自动问询需要生成的项目和接口
npm package: @seer-bigdata/taro-plugin-upload-cdn-img
Description: Taro 插件，用于在打包时，将图片上传到 minio 服务上，并返回图片的访问链接
Latest version: 0.0.2

# @seer-bigdata/taro-plugin-upload-cdn-img

taro 插件，用于在项目构建完成后，将构建产物中的图片上传到 cdn 上

## 基本用法

```ts title="config/index.ts"
export default defineConfig(() => {
  return {
    // 其他的配置项
    plugins: [
      [
        '@seer-bigdata/taro-plugin-upload-cdn-img',
        {
          enabled: true,
          tinyApiKey: 'your-tiny-api-key',
          minioClientOptions: {
            endPoint: 'minio.example.com',
            port: 9000,
            useSSL: true,
            accessKey: 'your-access-key',
            secretKey: 'your-secret-key',
          },
          bucket: 'mp-images',
          onlyUoloadDirList: ['assets/images'],
        },
      ],
    ],
  };
});
```
npm package: @seer-bigdata/vite-plugin-add-git-info
Description: vite插件，用于build后将当前的git信息插入到 html 注释中
Latest version: 0.0.2

# @seer-bigdata/vite-plugin-add-git-info

## 插件介绍

vite 插件，用于在项目产物的html中添加git信息，用于识别当前项目的版本信息

### 基本用法

在 `vite.config.ts` 中添加插件

```ts
import { defineConfig } from 'vite';
import addGitInfo from '@seer-bigdata/vite-plugin-add-git-info';

export default defineConfig(({ mode }) => {
  return {
    plugins: [addGitInfo(mode)],
    // ... 其他配置信息
  };
});
```
npm package: @seer-bigdata/vite-plugin-build-zip
Description: vite插件，用于build后将dist目录压缩为zip文件
Latest version: 0.0.2

# @seer-bigdata/vite-plugin-build-zip

## 插件介绍

vite 插件，用于在项目构建完成后，将构建产物压缩为 zip 包

### 基本用法

```bash
pnpm add @seer-bigdata/vite-plugin-build-zip
```

在 `vite.config.ts` 中添加插件

```ts
import { defineConfig } from 'vite';
import buildZip from '@seer-bigdata/vite-plugin-build-zip';

export default defineConfig(() => {
  return {
    plugins: [buildZip()],
    // ... 其他配置信息
  };
});
```