README_zh.md
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