• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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