npm package: @open-dy/tt-wasmsplit-ci
Description: 抖音小游戏分包工具
Latest version: 1.0.6

# tt-wasmsplit-ci

# 介绍
抖音小游戏分包工具，开发者可通过该命令行工具进行抖音小游戏的分包操作，包括：开启分包、获取分包状态、开始分包、终止分包。

默认情况下会采集部分行为数据以帮助我们了解如何更好地改进产品，您也可以通过在命令中加入 '--no-report' 来禁止该行为。

# 使用

## 安装
```bash
npm install -g @open-dy/tt-wasmsplit-ci
```

## 使用 TMG 登录
本工具使用 tmg （抖音开发者工具命令行版本） 登录信息进行认证，您需要先登录 tmg 

参考文档：https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/dev-tools/development-assistance/ide-cli

tmg 下载地址：https://www.npmjs.com/package/tt-minigame-ide-cli?activeTab=readme

## 开启分包
```bash
tt-wasmsplit-ci init -p <package> -i <appId> -m <version description>
```
输入需要开启分包的小游戏包，若该包未开启分包，则开启分包并输出用于收集函数的 prepare 包。
```
Usage: tt-wasmsplit-ci init [options]

开启分包并获取用于收集函数的 prepare 包

Options:
  -p, --package <path>                 原始包路径，必填
  -i, --appid <appid>                  app id，必填
  -r, --refer <ref_version>            增量分包参考版本，选填，为空时表示不使用增量分包
  -s, --symbol <symbol>                wasm符号表文件，选填，为空时自动在原始包所在目录的wasm_symbols子目录或原始包内寻找
  -m, --message <version description>  分包版本描述，必填
  --no-report                          使用该参数时将不采集行为数据
  -h, --help                           display help for command
```

示例：
旧包体格式（原始包为zip）
```bash
tt-wasmsplit-ci init -p ./mygame.zip -i APPID_PLACEHOLDER -m "Start Prepare"
```
新包体格式（原始包为一个文件夹）
```bash
tt-wasmsplit-ci init -p ./gamefolder -i APPID_PLACEHOLDER -m "Start Prepare"
```



## 获取分包状态
```bash
tt-wasmsplit-ci getinfo -p <package> -i <appId>
```
输入需要查询分包状态的小游戏包，则获取当前分包信息、例如收集函数数量等，以及历史分包版本信息，并保存在指定文件中或原始包所在目录下的 gameinfo.txt
```
Usage: tt-wasmsplit-ci getinfo [options]

获取当前分包信息、例如收集函数数量等，以及历史分包版本信息

Options:
  -p, --package <path>  原始包路径，必填
  -i, --appid <appid>   app id，必填
  -o, --output <path>   项目收集信息，选填，为空时默认保存在原始包所在目录下的 gameinfo.txt
  --no-report           使用该参数时将不采集行为数据
  -h, --help            display help for command
```

示例：
旧包体格式（原始包为zip）
```bash
tt-wasmsplit-ci getinfo -p ./mygame.zip -i APPID_PLACEHOLDER
```
新包体格式（原始包为一个文件夹）
```bash
tt-wasmsplit-ci getinfo -p ./gamefolder -i APPID_PLACEHOLDER
```


## 开始分包
```bash
tt-wasmsplit-ci dosplit -p <package> -i <appId>
```
输入需要开始分包的小游戏包，请求分包服务器进行分包操作，并输出分包后的小游戏包
```
Usage: tt-wasmsplit-ci dosplit [options]

请求 wasm 分包并下载分包后小游戏包

Options:
  -p, --package <path>  原始包路径，必填
  -i, --appid <appid>   app id，必填
  -g, --debug           包含此参数下载 debug 包，反之下载 release 包 (default: false)
  -bm, --bulk-memory    包含此参数表示开启 bulk memory 特性，反之不开启 (default: false)
  --no-report           使用该参数时将不采集行为数据
  -h, --help            display help for command
```

示例：
旧包体格式（原始包为zip）
```bash
tt-wasmsplit-ci dosplit -p ./mygame.zip -i APPID_PLACEHOLDER -g
```
新包体格式（原始包为一个文件夹）
```bash
tt-wasmsplit-ci dosplit -p ./gamefolder -i APPID_PLACEHOLDER -g
```


## 上传函数名文件
```bash
tt-wasmsplit-ci uploadSymbolList -p <package> -i <appId> -f <symbolListPath>
```
输入需要开始分包的小游戏包，上传 wasm 符号表文件，并返回匹配到的函数列表
```
Usage: tt-wasmsplit-ci uploadSymbolList [options]

上传 wasm 符号表文件
注意：文件内容只包含函数名即可，不要包含引号、逗号等符号。e.g.

UIManager_Func1
UIManager_Func2
UIManager_Func3

Options:
  -p, --package <path>  原始包路径，必填
  -i, --appid <appid>   app id，必填
  --no-report           使用该参数时将不采集行为数据
  -f, --funcList <path>     wasm 符号表文件路径，必填
```

示例：
旧包体格式（原始包为zip）
```bash
tt-wasmsplit-ci uploadSymbolList -p ./mygame.zip -i APPID_PLACEHOLDER -f ./wasm_symbols/list.txt
```
新包体格式（原始包为一个文件夹）
```bash
tt-wasmsplit-ci uploadSymbolList -p ./gamefolder -i APPID_PLACEHOLDER -f ./wasm_symbols/list.txt
```



## 终止分包
```bash
tt-wasmsplit-ci disable -p <package> -i <appId>
```
输入需要终止分包的小游戏包，若该包开启了分包，则终止分包。
```
Usage: tt-wasmsplit-ci disable [options]

终止分包

Options:
  -p, --package <path>  原始包路径，必填
  -i, --appid <appid>   app id，必填
  --no-report           使用该参数时将不采集行为数据
  -h, --help            display help for command
```

示例：
旧包体格式（原始包为zip）
```bash
# 终止分包（替换占位符为真实路径和 app id）
tt-wasmsplit-ci disable -p ./mygame.zip -i APPID_PLACEHOLDER
```
新包体格式（原始包为一个文件夹）
```bash
tt-wasmsplit-ci disable -p ./gamefolder -i APPID_PLACEHOLDER
```