1将相关文件按规则解析成特定格式,提供处理接口 2 3## 目录 4 5``` 6 7├─src #工具代码 8| ├─bin #命令行执行配置 9| | ├─config.ts 10| | ├─index.ts 11| | └─writer.ts 12| ├─coreImpl #工具实现的功能及接口 13| | ├─diff #比较两个版本sdk差异的工具 14| | | ├─diff.ts #实现工具的对外接口 15| | | ├─DiffProcessor.ts 16| | | └─PermissionsProcessor.ts #逻辑运算工具,用于判断权限范围变化 17| | ├─parser #基础解析工具 18| | | ├─JsDocProcessor.ts 19| | | ├─NodeProcessor.ts 20| | | ├─parser.ts #实现工具的对外接口 21| | | └─ResultsProcess.ts #将parser解析完的结果处理为其他接口需要的格式 22| | └─statistics #api统计工具 23| | └─Statistics.ts 24| ├─typedef #每个工具中class,type的定义 25| | ├─diff 26| | | └─ApiInfoDiff.ts 27| | ├─parser 28| | | ├─ApiInfoDefination.ts 29| | | ├─comment.ts 30| | | └─ResultsInfo.ts 31| | └─statistics 32| | └─ApiStatistics.ts 33| ├─utils #通用方法 34| | ├─Constant.ts #全局静态常量 35| | ├─FileUtils.ts #文件工具 36| | ├─logUtil.ts #log日志工具 37| | ├─FunctionUtils.ts #公共方法 38| | └─StringUtils.ts #字符串数据处理工具 39| └─main.ts #commander调用入口 40├─test #工具自动化测试配置及用例 41| ├─expect #测试用例结果检验,与测试用例输出结果进行对比,每个工具单独新建子文件 42| ├─mocha #mocha相关配置 43| ├─output #测试用例执行输出结果 44| ├─testCase #测试用例调用工具接口 45| | └─runTest.ts 46| └─ut #测试用例,每个工具单独新建子文件 47 48``` 49 50## 工具说明 51 52### 基础解析工具 53 54[代码](src/coreImpl/parser/parser.ts) 55 56提供接口 57 581. parseDir(fileDir) 59 解析一个文件夹下的文件,返回所有数据 602. parseFile(fileDir,filePath) 61 解析单个文件,fileDir为根节点,需要用来计算相对路径 623. getApiInfo(locations,apiMap) 63 将层级关系和通过上述两个接口的返回值可以直接获取对应节点 644. getParseResults(apiMap) 65 将接口1、2的树形结构的数据遍历展开 665. getParseEachSince(apiMap) 67 将接口1、2的树形结构的数据遍历展开,进行特殊处理,根据since来区分子节点 68 69### diff工具 70 71[代码](src/coreImpl/diff/diff.ts) 72 73提供接口 74 751. diffSDK(oldSDKApiMap,newSDKApiMap) 76 将两个版本的文件通过基础解析工具解析之后,传入两个结果计算diff 77 78工具调用命令 79 80``` 81node --nolazy -r ts-node/register ./src/main.ts -N diff --old 旧版本目录/文件(sdk/windows/ets) --new 新版本目录/文件(sdk/windows/ets) --old-version 旧版本号 --new-version 新版本号 --output 报告输出目录 --format excel 82``` 83 84 85 86### api统计工具 87 88[代码](src/coreImpl/statistics/ApiStatistics.ts) 89 90提供接口 91 921. getApiStatisticsInfos(apiMap) 93 将文件通过基础解析工具解析之后,传入计算api接口 94 95工具调用命令 96 97``` 98node --nolazy -r ts-node/register ./src/main.ts -N collect -C 目录路径/文件路径 --output 报告输出目录 --format excel 99``` 100 101 102 103## 工具调用 104 105通过commander调用相关工具,[调用入口](src/main.ts)只有(src/main.ts),到当前目录下,执行命令 ts-node ./src/main.ts 后接相关参数。 106 107### 参数配置 108 109 -N,--tool-name <collect, diff> tool name (default: "collect") 110 -V, --version output the version number 111 -C,--collect-Path `<string>` collect api path (default: "./api") 112 --old `<string>` diff old sdk path (default: "./api") 113 --new `<string>` diff new sdk path (default: "./api") 114 --old-version `<string>` old sdk version (default: "0") 115 --new-version `<string>` new sdk version (default: "0") 116 --output `<string>` output file path (default: "./") 117 --format <json, excel, changelog> output file format (default: "json") 118 --changelogUrl `<string>` changelog url (default: "") 119 -h, --help display help for command 120 121例如 122 123``` 124ts-node ./src/main.ts '-N' 'diff' '-C' '.\test\ut\parser\ut_jsdoc_constant_001.d.ts' '--old' '.\test\ut\apiDiff\old\ut_api_name_change.d.ts' '--new' '.\test\ut\apiDiff\new\ut_api_name_change.d.ts' '--old-version' '1' '--new-version' '2' '--output' '.\' 125``` 126 127``` 128node --nolazy -r ts-node/register ./src/main.ts '-N' 'diff' '-C' '.\test\ut\parser\ut_jsdoc_constant_001.d.ts' '--old' '.\test\ut\apiDiff\old\ut_api_name_change.d.ts' '--new' '.\test\ut\apiDiff\new\ut_api_name_change.d.ts' '--old-version' '1' '--new-version' '2' '--output' '.\' 129``` 130 131``` 132node ./package/JS_API_OPTIMIZE_PLUGIN.js '-N' 'diff' '-C' '.\test\ut\parser\ut_jsdoc_constant_001.d.ts' '--old' '.\test\ut\apiDiff\old\ut_api_name_change.d.ts' '--new' '.\test\ut\apiDiff\new\ut_api_name_change.d.ts' '--old-version' '1' '--new-version' '2' '--output' '.\' 133``` 134 135## 工具开发注意事项 136 1371、禁止全量工具使用__dirname 138 139可以通过import src\utils\FileUtils.ts,通过FileUtils.getBaseDirName,获取当前项目的根目录,之后在通过文件相对路径获取文件 140 141## 项目启动 142 143项目分为线上运行和线下运行 144 145### 本地运行 146 1471. 先确认本地node版本是否为14版本,本工具只支持使用14版本的node 1482. 运行以下脚本安装相关依赖 149 150``` 151npm install 152``` 153 154安装完成之后根据目录和注意事项完成工具开发或测试 155 156### 线上运行 157 158线上存在需要打包生成bundle.js文件 159 1601、安装依赖,在全量仓下执行安装依赖命令 161 162``` 163npm install 164``` 165 1662、执行打包命令,将ts打包为js 167 168``` 169npm run build 170``` 171 172执行完之后生成./package/JS_API_OPTIMIZE_PLUGIN.js 173 1743、根据上方的工具调用说明,通过node和参数来调用相关方法 175 176例如 177 178``` 179node ./package/JS_API_OPTIMIZE_PLUGIN.js '-N' 'diff' '-C' '.\test\ut\parser\ut_jsdoc_constant_001.d.ts' '--old' '.\test\ut\apiDiff\old\ut_api_name_change.d.ts' '--new' '.\test\ut\apiDiff\new\ut_api_name_change.d.ts' '--old-version' '1' '--new-version' '2' '--output' '.\' 180``` 181