crabatool 1.0.842 → 1.0.844
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +10 -3
- package/package.json +1 -1
- package/readme.md +1110 -45
- package/res/client.js +1 -1
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
var config = require('./lib/config.js');
|
|
2
2
|
var start = require('./tool/start.js');
|
|
3
3
|
var autoUpdate = require('./tool/autoUpdate.js');
|
|
4
4
|
var processManager = require('./tool/processManager.js');
|
|
@@ -18,6 +18,13 @@ exports.DbHelper = require('./lib/db/dbHelper.js');
|
|
|
18
18
|
exports.StringBuilder = require('./lib/stringBuilder.js');
|
|
19
19
|
exports.hashUtils = require('./tool/hash.js');
|
|
20
20
|
|
|
21
|
+
// 先检查版本参数,避免被initArgs处理
|
|
22
|
+
if (process.argv.includes('-v')) {
|
|
23
|
+
var packageJson = require('./package.json');
|
|
24
|
+
console.log('crabatool version: ' + packageJson.version);
|
|
25
|
+
process.exit(0);
|
|
26
|
+
}
|
|
27
|
+
|
|
21
28
|
start.initArgs();
|
|
22
29
|
|
|
23
30
|
exports.run = async function(options) {
|
|
@@ -174,7 +181,7 @@ async function checkFast(args) {
|
|
|
174
181
|
upgrade.updateCraba();
|
|
175
182
|
return false;
|
|
176
183
|
}
|
|
177
|
-
|
|
184
|
+
// crabatool -install -webPath 项目路径 -version可选参数
|
|
178
185
|
if (args.includes('-install')) {
|
|
179
186
|
start.bindAndCheckConfig('-webPath');
|
|
180
187
|
start.checkWebPath();
|
|
@@ -200,7 +207,7 @@ async function checkFast(args) {
|
|
|
200
207
|
return false;
|
|
201
208
|
}
|
|
202
209
|
|
|
203
|
-
if (args.includes('-
|
|
210
|
+
if (args.includes('-crabaVersion')) {
|
|
204
211
|
var data = upgrade.getNewVersion();
|
|
205
212
|
console.log(data);
|
|
206
213
|
return false;
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -1,60 +1,1125 @@
|
|
|
1
|
-
#
|
|
2
|
-
1. 打开命令行终端,安装crabatool 输入:npm install crabatool -g 或从本地仓库安装(更快) npm install crabatool -g --registry http://172.17.0.236:4873/
|
|
1
|
+
# crabatool
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
crabatool 是一个基于 Node.js 的前端工程化脚手架工具,主要服务于 Craba/NGP 前端项目体系。支持命令行(CLI)和 JS 配置文件两种使用方式,兼容 Windows、macOS、Linux,可集成 Jenkins 实现自动化构建。
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
当前版本:`1.0.844`
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
---
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
## 目录
|
|
11
10
|
|
|
12
|
-
-
|
|
11
|
+
- [环境要求](#环境要求)
|
|
12
|
+
- [安装](#安装)
|
|
13
|
+
- [快速上手](#快速上手)
|
|
14
|
+
- [命令行参数总览](#命令行参数总览)
|
|
15
|
+
- [常用功能](#常用功能)
|
|
16
|
+
- [1. 安装平台资源 (-install)](#1-安装平台资源--install)
|
|
17
|
+
- [2. 启动本地服务 (-run)](#2-启动本地服务--run)
|
|
18
|
+
- [3. 更新平台资源 (-update)](#3-更新平台资源--update)
|
|
19
|
+
- [4. JS 语法检测 (-checkjs)](#4-js-语法检测--checkjs)
|
|
20
|
+
- [5. 安装/更新 IDEA 环境 (-idea)](#5-安装更新-idea-环境--idea)
|
|
21
|
+
- [6. 安装/更新 VSCode 环境 (-vscode)](#6-安装更新-vscode-环境--vscode)
|
|
22
|
+
- [7. 合并压缩 JS 文件 (-mergejs)](#7-合并压缩-js-文件--mergejs)
|
|
23
|
+
- [8. 合并压缩 CSS 文件 (-mergecss)](#8-合并压缩-css-文件--mergecss)
|
|
24
|
+
- [9. 打包资源文件为 JSON (-mergeFiles)](#9-打包资源文件为-json--mergefiles)
|
|
25
|
+
- [10. 查询craba框架的最新版本 (-crabaVersion)](#10-查询craba框架的最新版本--crabaversion)
|
|
26
|
+
- [11. 查看crabatool工具版本 (-v)](#11-查看crabatool工具版本--v)
|
|
27
|
+
- [其他功能](#其他功能)
|
|
28
|
+
- [1. 打包 init.js 和 biz.js (-mergeinitjs)](#1-打包-initjs-和-bizjs--mergeinitjs)
|
|
29
|
+
- [2. 图标字体检测 (-checkiconfont)](#2-图标字体检测--checkiconfont)
|
|
30
|
+
- [3. 检测平台更新标记 (-checkUpdate)](#3-检测平台更新标记--checkupdate)
|
|
31
|
+
- [4. 生成文件哈希清单 (-makeHash)](#4-生成文件哈希清单--makehash)
|
|
32
|
+
- [5. 计算页面路径哈希 (-pageHash)](#5-计算页面路径哈希--pagehash)
|
|
33
|
+
- [6. 自动添加版本号 (-addVersion)](#6-自动添加版本号--addversion)
|
|
34
|
+
- [7. 导出 gspx 页面标题清单 (-exportgspx)](#7-导出-gspx-页面标题清单--exportgspx)
|
|
35
|
+
- [8. 自动生成节点 ID (-autoId)](#8-自动生成节点-id--autoid)
|
|
36
|
+
- [9. 更新 crabaTool 自身 (-updateTool)](#9-更新-crabatool-自身--updatetool)
|
|
37
|
+
- [10. 上传平台资源 (-upload)](#10-上传平台资源--upload)
|
|
38
|
+
- [11. 上传/更新 NGP 皮肤图标 (-uploadSkin / -updateSkin)](#11-上传更新-ngp-皮肤图标--uploadskin---updateskin)
|
|
39
|
+
- [12. 字体库解压部署 (-iconfont)](#12-字体库解压部署--iconfont)
|
|
40
|
+
- [13. 转换 Javadoc 文档 (-convertJavadoc)](#13-转换-javadoc-文档--convertjavadoc)
|
|
41
|
+
- [配置参数完整列表](#配置参数完整列表)
|
|
42
|
+
- [通过 JS 配置文件使用](#通过-js-配置文件使用)
|
|
43
|
+
- [交互式菜单模式](#交互式菜单模式)
|
|
44
|
+
- [文件监听与热刷新](#文件监听与热刷新)
|
|
45
|
+
- [代理转发配置](#代理转发配置)
|
|
46
|
+
- [Jenkins 集成](#jenkins-集成)
|
|
47
|
+
- [导出的模块 API](#导出的模块-api)
|
|
48
|
+
- [常见问题](#常见问题)
|
|
13
49
|
|
|
14
|
-
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 环境要求
|
|
53
|
+
|
|
54
|
+
- **Node.js**:需要先安装 [Node.js](https://nodejs.cn/download/)
|
|
55
|
+
- 支持平台:Windows、macOS、Linux
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 安装
|
|
60
|
+
|
|
61
|
+
全局安装(推荐):
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npm install crabatool -g
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
从内网仓库安装(更快):
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npm install crabatool -g --registry http://172.17.0.236:4873/
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
> 全局安装一次后,在任意路径下都可以直接使用 `crabatool` 命令。后续更新执行 `npm install crabatool -g` 或 `npm update crabatool -g` 即可。
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 快速上手
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# 显示帮助信息(进入交互式菜单,这个命令没有带任何参数不适合Agent和大模型)
|
|
81
|
+
crabatool
|
|
82
|
+
|
|
83
|
+
# 安装项目平台资源
|
|
84
|
+
crabatool -install -webPath F:\myproject\www
|
|
85
|
+
|
|
86
|
+
# 更新项目平台资源
|
|
87
|
+
crabatool -update -webPath F:\myproject\www
|
|
88
|
+
|
|
89
|
+
# 检测项目 JS 语法
|
|
90
|
+
crabatool -checkjs -webPath F:\myproject\www -modName mymod
|
|
91
|
+
|
|
92
|
+
# 启动本地开发服务器
|
|
93
|
+
crabatool -run -webPath F:\myproject\www -port 9090
|
|
94
|
+
|
|
95
|
+
# 查看craba框架的最新版本号
|
|
96
|
+
crabatool -crabaVersion
|
|
97
|
+
|
|
98
|
+
# 查看crabatool工具的版本号
|
|
99
|
+
crabatool -v
|
|
100
|
+
|
|
101
|
+
# 查看crabatool工具的版本号(另一种方式)
|
|
102
|
+
crabatool -version
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 命令行参数总览
|
|
15
108
|
|
|
16
109
|
### 通用参数
|
|
17
|
-
- `--skip-report`: 跳过系统信息上报,提高启动速度,保护隐私
|
|
18
|
-
- `--help` 或 `-h`: 显示帮助信息
|
|
19
|
-
- `-v`: 显示版本信息
|
|
20
|
-
|
|
21
|
-
### 功能参数
|
|
22
|
-
- `-checkjs`: 检查JavaScript代码
|
|
23
|
-
- `-checkiconfont`: 检查图标字体
|
|
24
|
-
- `-run`: 启动本地服务器
|
|
25
|
-
- `-update`: 更新指定项目
|
|
26
|
-
- `-updateTool`: 更新crabaTool工具本身
|
|
27
|
-
- `-upload`: 上传项目
|
|
28
|
-
- `-mergejs`: 合并JavaScript文件
|
|
29
|
-
- `-mergecss`: 合并CSS文件
|
|
30
|
-
- `-makeHash`: 生成文件哈希值
|
|
31
|
-
|
|
32
|
-
### 使用示例
|
|
33
|
-
```bash
|
|
34
|
-
# 显示帮助信息
|
|
35
|
-
crabatool --help
|
|
36
|
-
|
|
37
|
-
# 跳过系统信息上报并检查JS代码
|
|
38
|
-
crabatool --skip-report -checkjs -webPath 项目路径
|
|
39
|
-
|
|
40
|
-
# 跳过上报并启动服务器
|
|
41
|
-
crabatool --skip-report -run -webPath 项目路径
|
|
42
110
|
|
|
43
|
-
|
|
44
|
-
|
|
111
|
+
| 参数 | 说明 |
|
|
112
|
+
|------|------|
|
|
113
|
+
| `--skip-report` | 跳过系统信息上报,提高启动速度,保护隐私 |
|
|
114
|
+
| `-crabaVersion` | 查看craba框架的最新版本号 |
|
|
115
|
+
| `-v` | 查看crabatool工具的版本号 |
|
|
116
|
+
| `-version` | 查看crabatool工具的版本号 |
|
|
117
|
+
|
|
118
|
+
### 功能命令
|
|
119
|
+
|
|
120
|
+
| 命令 | 说明 |
|
|
121
|
+
|------|------|
|
|
122
|
+
| `-install` | 安装项目的 Craba 平台资源 |
|
|
123
|
+
| `-update` | 更新项目的 Craba 平台资源 |
|
|
124
|
+
| `-checkjs` | 检查项目 JS 语法兼容性 |
|
|
125
|
+
| `-idea` | 安装/更新 IDEA 开发环境配置 |
|
|
126
|
+
| `-vscode` | 安装/更新 VSCode 开发环境配置 |
|
|
127
|
+
| `-mergejs` | 合并压缩指定 JS 文件 |
|
|
128
|
+
| `-mergecss` | 合并压缩指定 CSS 文件 |
|
|
129
|
+
| `-mergeFiles` | 将多种资源文件打包为 JSON 资源包 |
|
|
130
|
+
| `-run` | 启动本地前端服务器 |
|
|
131
|
+
| `-mergeinitjs` | 打包合并 init.js 和 biz.js |
|
|
132
|
+
| `-checkiconfont` | 检测项目图标字体使用情况 |
|
|
133
|
+
| `-checkUpdate` | 检测服务端是否标记了平台更新 |
|
|
134
|
+
| `-updateTool` | 更新 crabaTool 工具自身 |
|
|
135
|
+
| `-makeHash` | 生成文件的 SRI 哈希清单 |
|
|
136
|
+
| `-pageHash` | 计算 gspx 页面路径的哈希值 |
|
|
137
|
+
| `-addVersion` | 自动给文件添加版本号(时间戳) |
|
|
138
|
+
| `-exportgspx` | 导出目录下所有 gspx 文件的标题清单 |
|
|
139
|
+
| `-autoId` | 自动为 gspx 页面节点生成 ID |
|
|
140
|
+
| `-upload` | 打包并上传平台资源到服务端 |
|
|
141
|
+
| `-uploadSkin` | 上传 NGP 皮肤和图标库 |
|
|
142
|
+
| `-updateSkin` | 更新 NGP 皮肤和图标库 |
|
|
143
|
+
| `-iconfont` | 解压并部署字体库文件 |
|
|
144
|
+
| `-convertJavadoc` | 转换 Javadoc HTML 文档为 JSON/MD |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 常用功能
|
|
149
|
+
|
|
150
|
+
### 1. 安装平台资源 (-install)
|
|
151
|
+
|
|
152
|
+
首次安装 Craba 平台资源到指定项目路径。
|
|
153
|
+
|
|
154
|
+
**必填参数:**
|
|
155
|
+
| 参数 | 说明 |
|
|
156
|
+
|------|------|
|
|
157
|
+
| `-webPath` | 项目根路径 |
|
|
158
|
+
|
|
159
|
+
**可选参数:**
|
|
160
|
+
| 参数 | 说明 |
|
|
161
|
+
|------|------|
|
|
162
|
+
| `-version` | 指定分支版本号,默认为 `master` |
|
|
163
|
+
|
|
164
|
+
**使用示例:**
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# 安装主分支平台
|
|
168
|
+
crabatool -install -webPath F:\myproject\www
|
|
169
|
+
|
|
170
|
+
# 安装指定分支
|
|
171
|
+
crabatool -install -webPath F:\myproject\www -version ngp5.3
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
### 2. 启动本地服务 (-run)
|
|
177
|
+
|
|
178
|
+
启动基于 Express 的本地前端静态资源服务器,支持自动打开浏览器、文件热刷新、代理转发、gzip 压缩等。
|
|
179
|
+
|
|
180
|
+
**必填参数:**
|
|
181
|
+
| 参数 | 说明 |
|
|
182
|
+
|------|------|
|
|
183
|
+
| `-webPath` | 网站根路径(login.html 或 index.html 所在目录),支持绝对路径和相对路径 |
|
|
184
|
+
| `-port` | 前端服务端口号 |
|
|
185
|
+
|
|
186
|
+
**可选参数:**
|
|
187
|
+
| 参数 | 说明 |
|
|
188
|
+
|------|------|
|
|
189
|
+
| `-modName` | NGP 项目的模块名称(NGP 项目必填) |
|
|
190
|
+
| `-refresh true` | 开启文件变动自动刷新浏览器(监听 js/css/gspx/html 文件变动) |
|
|
191
|
+
| `-proxy` | 配置 API 代理转发规则(JSON 格式字符串) |
|
|
192
|
+
| `-proxySrc` | 从 JSON 文件读取代理配置 |
|
|
193
|
+
| `-noOpen true` | 启动后不自动打开浏览器 |
|
|
194
|
+
| `-localLogin true` | 使用本地 login.html 而非重写的登录页 |
|
|
195
|
+
| `-defaultPage` | 自定义首页文件名(默认 NGP 为 login.html,其他为 index.html) |
|
|
196
|
+
| `-virtualName` | 虚拟路径名 |
|
|
197
|
+
| `-childModList` | 子模块列表,逗号分隔(配置后自动打包 init.js 和 biz.js) |
|
|
198
|
+
| `-ignoreCompress true` | 不压缩打包后的 init.js 和 biz.js |
|
|
199
|
+
|
|
200
|
+
**使用示例:**
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# 基本启动
|
|
204
|
+
crabatool -run -webPath F:\myproject\www -port 9090
|
|
205
|
+
|
|
206
|
+
# NGP 项目启动
|
|
207
|
+
crabatool -run -webPath F:\shell\web\src\main\resources\static\shell -port 9090 -modName shell
|
|
208
|
+
|
|
209
|
+
# 启动并开启热刷新
|
|
210
|
+
crabatool -run -webPath F:\myproject\www -port 9090 -refresh true
|
|
211
|
+
|
|
212
|
+
# 启动并配置代理转发
|
|
213
|
+
crabatool -run -webPath F:\myproject\www -port 9090 -proxy "{'/apis/':{'target':'http://127.0.0.1:8082','changeOrigin':true}}"
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**热刷新说明:**
|
|
217
|
+
- 开启 `-refresh true` 后,crabatool 会通过 WebSocket 监听 js、gspx、css、html 文件的变动。
|
|
218
|
+
- 文件变动时浏览器会收到刷新消息,但会等待浏览器被激活(focus)时才真正刷新,避免高频刷新影响性能。
|
|
219
|
+
- WebSocket 端口默认为 `port + 6000`(如超出端口范围会自动调整)。
|
|
220
|
+
|
|
221
|
+
**文件监听功能:**
|
|
222
|
+
- 启动服务时默认开启文件监听功能(`enableFileWatcher`),监听 `.js` 文件的变动并自动执行 ESLint 语法检查、编码检查、文件大小检查、ES6+ 兼容性检查。
|
|
223
|
+
- 通过配置 `enableFileWatcher: false` 可以关闭。
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
### 4. 更新平台资源 (-update)
|
|
228
|
+
|
|
229
|
+
从内网服务器拉取最新的 Craba 平台资源,覆盖到指定项目路径下。
|
|
230
|
+
|
|
231
|
+
**必填参数:**
|
|
232
|
+
| 参数 | 说明 |
|
|
233
|
+
|------|------|
|
|
234
|
+
| `-webPath` | 项目路径 |
|
|
235
|
+
|
|
236
|
+
**可选参数:**
|
|
237
|
+
| 参数 | 说明 |
|
|
238
|
+
|------|------|
|
|
239
|
+
| `-version` | 指定分支版本号,如 `ngp4.7`、`ngp5.1`、`ngp5.3`,默认为 `master` |
|
|
240
|
+
| `-progress 0` | 不显示进度条 |
|
|
241
|
+
|
|
242
|
+
**使用示例:**
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# 更新主分支平台
|
|
246
|
+
crabatool -update -webPath F:\myproject\www
|
|
247
|
+
|
|
248
|
+
# 更新指定分支
|
|
249
|
+
crabatool -update -webPath ../web/src/main/resources/static/shell -version ngp4.7
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
### 5. JS 语法检测 (-checkjs)
|
|
255
|
+
|
|
256
|
+
对项目下所有 JS 文件进行语法兼容性检测,包括 ESLint 规则检查、编码检测、文件大小检测、ES6+ 语法检测(let/const/箭头函数/async/await/then/debugger 等),同时检查 gspx 文件中的标签使用规范。检测结果可推送到钉钉群机器人。
|
|
257
|
+
|
|
258
|
+
**必填参数:**
|
|
259
|
+
| 参数 | 说明 |
|
|
260
|
+
|------|------|
|
|
261
|
+
| `-webPath` | 项目路径 |
|
|
262
|
+
|
|
263
|
+
**可选参数:**
|
|
264
|
+
| 参数 | 说明 |
|
|
265
|
+
|------|------|
|
|
266
|
+
| `-modName` | 项目(模块)名称 |
|
|
267
|
+
| `-ignoreCheck` | 忽略检测的目录或文件,逗号分隔,相对 webPath 的路径 |
|
|
268
|
+
| `-globals` | 全局变量名列表,逗号分隔,检测时会忽略这些变量(`$` 字符在 shell 中需转义为 `\$`) |
|
|
269
|
+
| `-webhooks` | 检测报告推送地址(如钉钉群机器人 Webhook URL) |
|
|
270
|
+
| `-progress 0` | 不显示进度条(适用于 Jenkins 等 CI 环境) |
|
|
271
|
+
| `-checkgspx false` | 不检查 gspx 文件 |
|
|
272
|
+
| `-checkutf8 true` | 检查 UTF-8 编码 |
|
|
273
|
+
| `-checkCustomControl false` | 不检查自定义控件 |
|
|
274
|
+
| `-ignoreFiles` | 忽略的文件列表,逗号分隔 |
|
|
275
|
+
| `-cssFiles` | 额外需要检测的 CSS 文件列表 |
|
|
276
|
+
| `-Debug true` | 开启调试模式 |
|
|
277
|
+
| `-notCheckCraba true` | 跳过 craba.min.js 存在性检查 |
|
|
278
|
+
|
|
279
|
+
**使用示例:**
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
# 基本检测
|
|
283
|
+
crabatool -checkjs -webPath F:\myproject\www -modName mymod
|
|
284
|
+
|
|
285
|
+
# 忽略特定目录和文件
|
|
286
|
+
crabatool -checkjs -webPath F:\myproject\www -modName mymod -ignoreCheck ueditor,iconfont,js/math.min.js
|
|
287
|
+
|
|
288
|
+
# 配置全局变量和钉钉推送
|
|
289
|
+
crabatool -checkjs -webPath F:\myproject\www -modName mymod -globals \$doc,CrabaMarkdown -webhooks https://oapi.dingtalk.com/robot/send?access_token=xxx
|
|
290
|
+
|
|
291
|
+
# 跳过上报且不显示进度条(CI 环境)
|
|
292
|
+
crabatool --skip-report -checkjs -webPath F:\myproject\www -progress 0
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
**检测报告推送格式:**
|
|
296
|
+
|
|
297
|
+
推送到 Webhook 的数据格式为:
|
|
298
|
+
```json
|
|
299
|
+
{
|
|
300
|
+
"msgtype": "markdown",
|
|
301
|
+
"markdown": {
|
|
302
|
+
"title": "代码检测报告",
|
|
303
|
+
"text": "检测结果(markdown 格式)"
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
### 6. 安装/更新 IDEA 环境 (-idea)
|
|
311
|
+
|
|
312
|
+
自动安装或更新 IntelliJ IDEA 的 Craba 开发环境,包括:
|
|
313
|
+
|
|
314
|
+
- gspx 智能语法提示(XSD)
|
|
315
|
+
- 新建页面模板(Craba.gspx / CrabaJs.js)
|
|
316
|
+
- gspx 文件语法高亮(关联为 XML 类型)
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
crabatool -idea
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
### 7. 安装/更新 VSCode 环境 (-vscode)
|
|
325
|
+
|
|
326
|
+
自动安装或更新 VSCode 的 Craba 开发环境,包括:
|
|
327
|
+
|
|
328
|
+
- gspx 智能语法提示(XSD + RedHat XML 插件)
|
|
329
|
+
- 新建页面模板
|
|
330
|
+
- 快捷键配置(ctrl+alt+n、alt+j 等)
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
crabatool -vscode
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
### 8. 合并压缩 JS 文件 (-mergejs)
|
|
339
|
+
|
|
340
|
+
将指定的多个 JS 文件合并为一个文件,支持压缩和变量替换。
|
|
341
|
+
|
|
342
|
+
**必填参数:**
|
|
343
|
+
| 参数 | 说明 |
|
|
344
|
+
|------|------|
|
|
345
|
+
| `-inNames` | 输入文件名列表,逗号分隔 |
|
|
346
|
+
| `-outName` | 输出文件的完整路径 |
|
|
347
|
+
|
|
348
|
+
**可选参数:**
|
|
349
|
+
| 参数 | 说明 |
|
|
350
|
+
|------|------|
|
|
351
|
+
| `-targetPath` | 输入文件的根目录(与 inNames 组合为完整路径);不填则 inNames 需为完整路径 |
|
|
352
|
+
| `-ignorecompress true` | 不压缩 JS(默认会压缩) |
|
|
353
|
+
| `-hidejspath true` | 合并后的文件中不显示原始文件路径注释 |
|
|
354
|
+
| `-exp` | 变量替换表达式,格式为 `${变量名}=替换值` |
|
|
355
|
+
|
|
356
|
+
**使用示例:**
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
# 合并同目录下多个 JS(压缩)
|
|
360
|
+
crabatool -mergejs -targetPath F:\project\js -inNames a.js,b.js -outName F:\output\merged.js
|
|
361
|
+
|
|
362
|
+
# 合并不同路径的 JS(不压缩)
|
|
363
|
+
crabatool -mergejs -inNames F:\js\a.js,D:\js\b.js -outName E:\output.js -ignorecompress true
|
|
364
|
+
|
|
365
|
+
# 压缩单个文件
|
|
366
|
+
crabatool -mergejs -targetPath F:\project\js -inNames app.js -outName F:\output\app.min.js
|
|
367
|
+
|
|
368
|
+
# 压缩并替换变量
|
|
369
|
+
crabatool -mergejs -targetPath F:\project\js -inNames app.js -outName F:\output\app.min.js -exp ${plugHost}=http://192.168.1.100:8082/
|
|
45
370
|
```
|
|
46
371
|
|
|
47
|
-
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
### 9. 合并压缩 CSS 文件 (-mergecss)
|
|
375
|
+
|
|
376
|
+
将指定的多个 CSS 文件合并为一个文件。
|
|
48
377
|
|
|
378
|
+
**必填参数:**
|
|
379
|
+
| 参数 | 说明 |
|
|
380
|
+
|------|------|
|
|
381
|
+
| `-inNames` | 输入文件名列表,逗号分隔 |
|
|
382
|
+
| `-outName` | 输出文件的完整路径 |
|
|
49
383
|
|
|
50
|
-
|
|
384
|
+
**可选参数:**
|
|
385
|
+
| 参数 | 说明 |
|
|
386
|
+
|------|------|
|
|
387
|
+
| `-targetPath` | 输入文件的根目录 |
|
|
388
|
+
| `-ignoreCompress` | 不压缩 CSS |
|
|
389
|
+
|
|
390
|
+
**使用示例:**
|
|
391
|
+
|
|
392
|
+
```bash
|
|
393
|
+
crabatool -mergecss -targetPath F:\project\skins -inNames iconfont.css,craba.min.css -outName D:\output\craba.min.css
|
|
394
|
+
|
|
395
|
+
# 不压缩
|
|
396
|
+
crabatool -mergecss -targetPath F:\project\skins -inNames a.css,b.css -outName D:\output\merged.css -ignoreCompress
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
### 10. 打包资源文件为 JSON (-mergeFiles)
|
|
402
|
+
|
|
403
|
+
将多种类型的资源文件(JS/CSS/gspx)压缩后以路径为 key 合并到一个 JSON 资源包中,减少 HTTP 请求。可以追加到 init.js 中或生成独立资源文件。
|
|
404
|
+
|
|
405
|
+
**必填参数:**
|
|
406
|
+
| 参数 | 说明 |
|
|
407
|
+
|------|------|
|
|
408
|
+
| `-inNames` | 输入文件名列表,逗号分隔(支持 .js/.css/.gspx) |
|
|
409
|
+
|
|
410
|
+
**可选参数:**
|
|
411
|
+
| 参数 | 说明 |
|
|
412
|
+
|------|------|
|
|
413
|
+
| `-outName` | 输出文件路径(独立资源包方式) |
|
|
414
|
+
| `-initJs` | 追加到指定 init.js 文件中(追加方式) |
|
|
415
|
+
| `-targetPath` | 输入文件的根目录 |
|
|
416
|
+
| `-modName` | 模块名称(作为资源路径前缀) |
|
|
417
|
+
| `-webPath` | 项目路径 |
|
|
418
|
+
| `-clearCache true` | 清除缓存 |
|
|
419
|
+
|
|
420
|
+
**使用示例:**
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
crabatool -mergeFiles -modName shell -webPath F:\project\shell -targetPath F:\project\shell -inNames skins/craba.min.css,Main.gspx,Main.js,js/init.js -outName F:\project\shell\shell.res.js
|
|
424
|
+
|
|
425
|
+
# 追加到 init.js
|
|
426
|
+
crabatool -mergeFiles -modName jxc -webPath F:\project\jxc -targetPath F:\project\jxc -inNames skins/skin.css,js/wpsSettings.js -initJs F:\project\jxc\js\init.js
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
### 11. 查询craba框架的最新版本 (-crabaVersion)
|
|
432
|
+
|
|
433
|
+
查询服务端 Craba 框架的最新版本号和更新时间。
|
|
434
|
+
|
|
435
|
+
```bash
|
|
436
|
+
crabatool -crabaVersion
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
### 12. 查看crabatool工具版本 (-v)
|
|
442
|
+
|
|
443
|
+
查看当前 crabatool 工具的版本号。
|
|
444
|
+
|
|
445
|
+
**使用示例:**
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
# 查看crabatool工具的版本号
|
|
449
|
+
crabatool -v
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
## 其他功能
|
|
455
|
+
|
|
456
|
+
### 1. 打包 init.js 和 biz.js (-mergeinitjs)
|
|
457
|
+
|
|
458
|
+
将 NGP 项目模块及其子模块下的 JS 业务文件合并打包为 `init.js` 和 `biz.js`,减少 HTTP 请求。
|
|
459
|
+
|
|
460
|
+
**必填参数:**
|
|
461
|
+
| 参数 | 说明 |
|
|
462
|
+
|------|------|
|
|
463
|
+
| `-webPath` | 项目路径 |
|
|
464
|
+
| `-port` | 端口号 |
|
|
465
|
+
| `-modName` | 模块名称 |
|
|
466
|
+
|
|
467
|
+
**可选参数:**
|
|
468
|
+
| 参数 | 说明 |
|
|
469
|
+
|------|------|
|
|
470
|
+
| `-childModList` | 子模块列表,逗号分隔(如 `baseinfo,recordsheet,accounting`) |
|
|
471
|
+
| `-ignoreCompress` | 是否跳过压缩(`true` 不压缩,`false` 压缩) |
|
|
472
|
+
| `-mergeInitAndBiz true` | 将最终的 init.js 和 biz.js 合并为一个文件 |
|
|
473
|
+
| `-progress 0` | 不显示进度条 |
|
|
474
|
+
|
|
475
|
+
**使用示例:**
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
crabatool -mergeinitjs -webPath F:\myproject\www -port 9090 -modName jxc -childModList baseinfo,recordsheet,accounting -ignoreCompress false
|
|
479
|
+
|
|
480
|
+
# Jenkins 环境
|
|
481
|
+
crabatool -mergeinitjs -webPath /opt/project/www -port 9090 -modName shell -childModList baseinfo,recordsheet -ignoreCompress false -progress 0
|
|
482
|
+
```
|
|
51
483
|
|
|
52
|
-
|
|
53
|
-
2. 自动刷新浏览器,监听到 css、js、gspx 文件有变动,会自动刷新网页,提高开发效率。配置项:config.refresh = true;【实现】
|
|
54
|
-
3. 根据配置自动打包 biz.js 和 init.js,针对 ngp 的功能,减少 http 请求;【实现】
|
|
55
|
-
4. 本地服务启动后自动打开浏览器预览页面;【实现】
|
|
484
|
+
> **工作原理:** 工具会先打包当前模块 `模块名/js/init.js` 和 `模块名/js/biz/xxx => 模块名/js/biz.js`,然后打包各子模块的对应文件。如果不包含子模块,`-childModList` 填 `null` 即可。
|
|
56
485
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
### 2. 图标字体检测 (-checkiconfont)
|
|
489
|
+
|
|
490
|
+
扫描项目中 JS 和 gspx 文件内所有 `aicon-*`、`bicon-*` 图标的使用情况,并上报到文档服务器。
|
|
491
|
+
|
|
492
|
+
**必填参数:**
|
|
493
|
+
| 参数 | 说明 |
|
|
494
|
+
|------|------|
|
|
495
|
+
| `-webPath` | 项目路径 |
|
|
496
|
+
|
|
497
|
+
**可选参数:**
|
|
498
|
+
| 参数 | 说明 |
|
|
499
|
+
|------|------|
|
|
500
|
+
| `-modName` | 模块名称 |
|
|
501
|
+
| `-reportHost` | 报告接收服务地址 |
|
|
502
|
+
| `-ignoreFiles` | 忽略的文件列表,逗号分隔 |
|
|
503
|
+
| `-cssFiles` | 额外需要扫描的 CSS 文件列表,逗号分隔 |
|
|
504
|
+
|
|
505
|
+
**使用示例:**
|
|
506
|
+
|
|
507
|
+
```bash
|
|
508
|
+
crabatool -checkiconfont -webPath F:\myproject\www -modName mymod -reportHost http://127.0.0.1:9998 -ignoreFiles biconfont/iconfont.js
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
### 3. 检测平台更新标记 (-checkUpdate)
|
|
514
|
+
|
|
515
|
+
检测服务端是否标记了平台需要更新。如果有更新标记且当前 Git 仓库有推送权限,将自动下载更新并推送 Git。主要用于 Jenkins 自动化流程。
|
|
516
|
+
|
|
517
|
+
**必填参数:**
|
|
518
|
+
| 参数 | 说明 |
|
|
519
|
+
|------|------|
|
|
520
|
+
| `-webPath` | 项目路径 |
|
|
521
|
+
|
|
522
|
+
**可选参数:**
|
|
523
|
+
| 参数 | 说明 |
|
|
524
|
+
|------|------|
|
|
525
|
+
| `-version` | 分支版本,默认为 `master` |
|
|
526
|
+
|
|
527
|
+
**使用示例:**
|
|
528
|
+
|
|
529
|
+
```bash
|
|
530
|
+
crabatool -checkUpdate -version master -webPath F:\myproject\www
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
### 4. 生成文件哈希清单 (-makeHash)
|
|
536
|
+
|
|
537
|
+
计算指定文件的 SRI(Subresource Integrity)哈希值,生成 JSON 清单文件。支持本地文件、远程 URL 和目录扫描。
|
|
538
|
+
|
|
539
|
+
**必填参数:**
|
|
540
|
+
| 参数 | 说明 |
|
|
541
|
+
|------|------|
|
|
542
|
+
| `-outJson` | 输出 JSON 文件路径 |
|
|
543
|
+
|
|
544
|
+
**可选参数:**
|
|
545
|
+
| 参数 | 说明 |
|
|
546
|
+
|------|------|
|
|
547
|
+
| `-files` | 文件路径列表,逗号分隔(支持本地路径、HTTP/HTTPS URL、目录路径) |
|
|
548
|
+
| `-exts` | 文件扩展名过滤,逗号分隔,如 `.js`(配合目录扫描使用) |
|
|
549
|
+
| `-webPath` | 项目路径(用于生成相对路径 key) |
|
|
550
|
+
| `-modName` | 模块名称(作为路径前缀) |
|
|
551
|
+
| `-hashName` | 哈希算法名称,默认 `sha384` |
|
|
552
|
+
|
|
553
|
+
**使用示例:**
|
|
554
|
+
|
|
555
|
+
```bash
|
|
556
|
+
# 对指定文件列表生成哈希
|
|
557
|
+
crabatool -makeHash -webPath F:\project\www -files F:\project\www\js\a.js,F:\project\www\js\b.js -outJson F:\project\www\js\hash.json
|
|
558
|
+
|
|
559
|
+
# 对目录下所有 JS 文件生成哈希
|
|
560
|
+
crabatool -makeHash -webPath F:\project\www -files F:\project\www\js\ -exts .js -outJson F:\output\hash.json -hashName sha384
|
|
561
|
+
|
|
562
|
+
# 支持远程 URL
|
|
563
|
+
crabatool -makeHash -webPath F:\project\www -files http://example.com/js/lib.js,F:\project\www\js\app.js -outJson F:\output\hash.json
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
**输出格式:**
|
|
567
|
+
```json
|
|
568
|
+
{
|
|
569
|
+
"模块名/js/a.js": "sha384-xxxxbase64xxxx",
|
|
570
|
+
"http://example.com/js/lib.js": "sha384-xxxxbase64xxxx"
|
|
571
|
+
}
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
---
|
|
575
|
+
|
|
576
|
+
### 5. 计算页面路径哈希 (-pageHash)
|
|
577
|
+
|
|
578
|
+
计算 gspx 页面相对路径的哈希值,用于生成页面的配置 ID 前缀码。
|
|
579
|
+
|
|
580
|
+
**必填参数:**
|
|
581
|
+
| 参数 | 说明 |
|
|
582
|
+
|------|------|
|
|
583
|
+
| `-pageHash` | gspx 页面的相对路径(必须以 `.gspx` 结尾) |
|
|
584
|
+
|
|
585
|
+
**可选参数:**
|
|
586
|
+
| 参数 | 说明 |
|
|
587
|
+
|------|------|
|
|
588
|
+
| `-ngp true` | 使用 NGP 模式计算哈希(会去掉 jxc/sale 等模块前缀) |
|
|
589
|
+
|
|
590
|
+
**使用示例:**
|
|
591
|
+
|
|
592
|
+
```bash
|
|
593
|
+
crabatool -pageHash /jxc/recordsheet/report.gspx
|
|
594
|
+
|
|
595
|
+
# NGP 模式
|
|
596
|
+
crabatool -pageHash /jxc/recordsheet/report.gspx -ngp true
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
---
|
|
600
|
+
|
|
601
|
+
### 6. 自动添加版本号 (-addVersion)
|
|
602
|
+
|
|
603
|
+
在指定文件中将占位符替换为当前时间戳,用于 Jenkins 自动构建时给产品添加版本号。
|
|
604
|
+
|
|
605
|
+
**必填参数:**
|
|
606
|
+
| 参数 | 说明 |
|
|
607
|
+
|------|------|
|
|
608
|
+
| `-file` | 目标文件路径 |
|
|
609
|
+
| `-exp` | 替换表达式。直接文本替换(如 `AUTOVERSION`),或特殊值 `version`(替换 `version: 'xxx'` 格式)、`staticVersion`(替换 `staticVersion = 'xxx'` 格式) |
|
|
610
|
+
|
|
611
|
+
**使用示例:**
|
|
612
|
+
|
|
613
|
+
```bash
|
|
614
|
+
# 替换文件中的 AUTOVERSION 文本为时间戳
|
|
615
|
+
crabatool -addVersion -file F:\project\www\index.html -exp AUTOVERSION
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
**index.html 中的配合代码示例:**
|
|
619
|
+
```js
|
|
620
|
+
if (!$app.isLocal()) {
|
|
621
|
+
$craba.addVersion({ name: 'every', version: 'AUTOVERSION' });
|
|
622
|
+
}
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
### 7. 导出 gspx 页面标题清单 (-exportgspx)
|
|
628
|
+
|
|
629
|
+
扫描指定目录下所有 gspx 文件,提取 `<Page>` 标签的 Title 属性,导出到桌面的 `exportgspx.txt` 文件。
|
|
630
|
+
|
|
631
|
+
**必填参数:**
|
|
632
|
+
| 参数 | 说明 |
|
|
633
|
+
|------|------|
|
|
634
|
+
| `-webPath` | 要扫描的目录路径 |
|
|
635
|
+
|
|
636
|
+
**使用示例:**
|
|
637
|
+
|
|
638
|
+
```bash
|
|
639
|
+
crabatool -exportgspx -webPath F:\project\srcs
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
> 输出文件默认生成到桌面 `~/Desktop/exportgspx.txt`。
|
|
643
|
+
|
|
644
|
+
---
|
|
645
|
+
|
|
646
|
+
### 8. 自动生成节点 ID (-autoId)
|
|
647
|
+
|
|
648
|
+
自动为 gspx 页面中的 UI 控件节点生成唯一 ID。
|
|
649
|
+
|
|
650
|
+
**必填参数:**
|
|
651
|
+
| 参数 | 说明 |
|
|
652
|
+
|------|------|
|
|
653
|
+
| `-webPath` | 项目路径 |
|
|
654
|
+
|
|
655
|
+
**可选参数:**
|
|
656
|
+
| 参数 | 说明 |
|
|
657
|
+
|------|------|
|
|
658
|
+
| `-ignoreAutoId` | 忽略自动生成 ID 的标签列表,逗号分隔 |
|
|
659
|
+
| `-ignoreFiles` | 忽略的文件列表,逗号分隔 |
|
|
660
|
+
|
|
661
|
+
**使用示例:**
|
|
662
|
+
|
|
663
|
+
```bash
|
|
664
|
+
crabatool -autoId -webPath F:\project\www
|
|
665
|
+
```
|
|
666
|
+
|
|
667
|
+
> 也可以在配置文件中设置 `autoId: true`,启动时自动执行。
|
|
668
|
+
|
|
669
|
+
---
|
|
670
|
+
|
|
671
|
+
### 9. 更新 crabaTool 自身 (-updateTool)
|
|
672
|
+
|
|
673
|
+
手动检查并更新 crabaTool 工具到最新版本。
|
|
674
|
+
|
|
675
|
+
```bash
|
|
676
|
+
crabatool -updateTool
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
> crabaTool 也支持启动时自动分离式更新检查(带命令行参数启动时触发),可通过配置 `enableDetachedUpdate: false` 关闭。
|
|
680
|
+
|
|
681
|
+
---
|
|
682
|
+
|
|
683
|
+
### 10. 上传平台资源 (-upload)
|
|
684
|
+
|
|
685
|
+
对 Craba 平台源码进行打包压缩(JS/CSS),然后上传到服务端指定分支下。
|
|
686
|
+
|
|
687
|
+
**必填参数:**
|
|
688
|
+
| 参数 | 说明 |
|
|
689
|
+
|------|------|
|
|
690
|
+
| `-targetPath` | 平台源码根路径 |
|
|
691
|
+
|
|
692
|
+
**可选参数:**
|
|
693
|
+
| 参数 | 说明 |
|
|
694
|
+
|------|------|
|
|
695
|
+
| `-version` | 目标分支版本 |
|
|
696
|
+
| `-host` | 上传服务地址 |
|
|
697
|
+
| `-hidejspath true` | 压缩后不保留原始文件路径注释 |
|
|
698
|
+
| `-Debug true` | 调试模式 |
|
|
699
|
+
|
|
700
|
+
**使用示例:**
|
|
701
|
+
|
|
702
|
+
```bash
|
|
703
|
+
crabatool -upload -version master -targetPath F:\CarpaNET_NEW -host http://127.0.0.1:9998 -hidejspath true
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
708
|
+
### 11. 上传/更新 NGP 皮肤图标 (-uploadSkin / -updateSkin)
|
|
709
|
+
|
|
710
|
+
管理 NGP 项目的皮肤和图标库资源。
|
|
711
|
+
|
|
712
|
+
**必填参数:**
|
|
713
|
+
| 参数 | 说明 |
|
|
714
|
+
|------|------|
|
|
715
|
+
| `-skinPath` | 皮肤资源目录路径 |
|
|
716
|
+
| `-version` | 分支版本 |
|
|
717
|
+
|
|
718
|
+
**使用示例:**
|
|
719
|
+
|
|
720
|
+
```bash
|
|
721
|
+
# 上传皮肤
|
|
722
|
+
crabatool -uploadSkin -skinPath F:\project\skins -version master
|
|
723
|
+
|
|
724
|
+
# 更新皮肤
|
|
725
|
+
crabatool -updateSkin -skinPath F:\project\skins -version master
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
---
|
|
729
|
+
|
|
730
|
+
### 12. 字体库解压部署 (-iconfont)
|
|
731
|
+
|
|
732
|
+
从指定目录中找到字体库 ZIP 文件,解压并部署到目标目录,同时生成标准化的 iconfont.css。
|
|
733
|
+
|
|
734
|
+
**必填参数:**
|
|
735
|
+
| 参数 | 说明 |
|
|
736
|
+
|------|------|
|
|
737
|
+
| `-zipPath` | 字体库 ZIP 文件所在目录 |
|
|
738
|
+
| `-fontPath` | 字体文件部署目标目录 |
|
|
739
|
+
|
|
740
|
+
**可选参数:**
|
|
741
|
+
| 参数 | 说明 |
|
|
742
|
+
|------|------|
|
|
743
|
+
| `-prefix` | CSS 类名前缀,默认 `.bicon-` |
|
|
744
|
+
| `-fontName` | 字体名称,默认 `biconfont` |
|
|
745
|
+
|
|
746
|
+
**使用示例:**
|
|
747
|
+
|
|
748
|
+
```bash
|
|
749
|
+
crabatool -iconfont -zipPath F:\project\biconfont -fontPath F:\project\skins\bicon -prefix .bicon- -fontName biconfont
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
---
|
|
753
|
+
|
|
754
|
+
### 13. 转换 Javadoc 文档 (-convertJavadoc)
|
|
755
|
+
|
|
756
|
+
将 Javadoc 生成的 HTML 文档转换为 JSON 格式。
|
|
757
|
+
|
|
758
|
+
**参数:**
|
|
759
|
+
| 参数 | 说明 |
|
|
760
|
+
|------|------|
|
|
761
|
+
| `-targetPath` | 包含 HTML 文件的目录(批量转换) |
|
|
762
|
+
| `-filePath` | 单个 HTML 文件路径(单文件转换) |
|
|
763
|
+
| `-outPath` | 输出路径(JSON 文件) |
|
|
764
|
+
|
|
765
|
+
**使用示例:**
|
|
766
|
+
|
|
767
|
+
```bash
|
|
768
|
+
# 批量转换目录
|
|
769
|
+
crabatool -convertJavadoc -targetPath F:\docs\shell -outPath F:\docs\shell.json
|
|
770
|
+
|
|
771
|
+
# 转换单个文件
|
|
772
|
+
crabatool -convertJavadoc -filePath F:\docs\shell\Entity.html -outPath F:\docs\md
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
---
|
|
776
|
+
|
|
777
|
+
## 配置参数完整列表
|
|
778
|
+
|
|
779
|
+
以下参数既可以在配置文件(craba.js)中设置,也可以通过命令行传入。**命令行参数优先级高于配置文件**。
|
|
780
|
+
|
|
781
|
+
| 配置文件参数名 | 命令行参数名 | 类型 | 说明 |
|
|
782
|
+
|----------------|--------------|------|------|
|
|
783
|
+
| `webPath` | `-webPath` | string | **必填**。网站根路径,支持相对路径和绝对路径,路径中用 `\\` 或 `/` |
|
|
784
|
+
| `port` | `-port` | number | **必填(-run 时)**。前端服务端口号 |
|
|
785
|
+
| `modName` | `-modName` | string | NGP 项目必填。模块名称 |
|
|
786
|
+
| `childModList` | `-childModList` | array / 逗号分隔字符串 | 子模块列表,用于 init.js 和 biz.js 打包 |
|
|
787
|
+
| `refresh` | `-refresh` | boolean | 是否开启文件变动自动刷新浏览器 |
|
|
788
|
+
| `ignoreCompress` | `-ignoreCompress` | boolean | 是否跳过 JS/CSS 压缩 |
|
|
789
|
+
| `webhooks` | `-webhooks` | string | 钉钉群机器人 Webhook 地址(用于推送检测报告) |
|
|
790
|
+
| `progress` | `-progress` | number | 是否显示进度条(`0` 为不显示) |
|
|
791
|
+
| `globals` | `-globals` | array / 逗号分隔字符串 | checkjs 功能的全局变量白名单 |
|
|
792
|
+
| `ignoreCheck` | `-ignoreCheck` | array / 逗号分隔字符串 | checkjs 功能需忽略的文件/目录(相对 webPath) |
|
|
793
|
+
| `ignoreFiles` | `-ignoreFiles` | array / 逗号分隔字符串 | 忽略的文件列表 |
|
|
794
|
+
| `ignoreAutoId` | `-ignoreAutoId` | array / 逗号分隔字符串 | autoId 功能忽略的标签 |
|
|
795
|
+
| `autoId` | `-autoId` | boolean | 是否自动生成节点 ID |
|
|
796
|
+
| `version` | `-version` | string | 平台分支版本,默认 `master` |
|
|
797
|
+
| `branchName` | `-branchName` | string | Git 分支名称 |
|
|
798
|
+
| `host` | `-host` | string | 自定义服务地址 |
|
|
799
|
+
| `reportHost` | `-reportHost` | string | 检测报告接收服务地址 |
|
|
800
|
+
| `aiHost` | `-aiHost` | string | AI 服务地址 |
|
|
801
|
+
| `proxy` | `-proxy` | JSON | 代理转发规则 |
|
|
802
|
+
| `proxySrc` | `-proxySrc` | string | 代理配置文件路径(JSON 文件) |
|
|
803
|
+
| `hidejspath` | `-hidejspath` | boolean | 合并文件时不显示原始文件路径 |
|
|
804
|
+
| `Debug` | `-Debug` | boolean | 开启调试模式 |
|
|
805
|
+
| `checkgspx` | `-checkgspx` | boolean | 是否检查 gspx 文件,默认 `true` |
|
|
806
|
+
| `checkutf8` | `-checkutf8` | boolean | 是否检查 UTF-8 编码 |
|
|
807
|
+
| `clearCache` | `-clearCache` | boolean | 清除缓存 |
|
|
808
|
+
| `noOpen` | `-noOpen` | boolean | 启动服务后不自动打开浏览器 |
|
|
809
|
+
| `notCheckCraba` | `-notCheckCraba` | boolean | 跳过 craba.min.js 存在性检查 |
|
|
810
|
+
| `localLogin` | `-localLogin` | boolean | 使用本地 login.html |
|
|
811
|
+
| `defaultPage` | `-defaultPage` | string | 自定义首页 |
|
|
812
|
+
| `virtualName` | `-virtualName` | string | 虚拟路径名 |
|
|
813
|
+
| `mergeInitAndBiz` | `-mergeInitAndBiz` | boolean | 合并 init.js 和 biz.js |
|
|
814
|
+
| `checkCustomControl` | `-checkCustomControl` | boolean | 检查自定义控件,默认 `true` |
|
|
815
|
+
| `enableFileWatcher` | - | boolean | 是否启用文件监听功能,默认 `true` |
|
|
816
|
+
| `enableDetachedUpdate` | - | boolean | 是否启用分离式自动更新,默认 `true` |
|
|
817
|
+
|
|
818
|
+
---
|
|
819
|
+
|
|
820
|
+
## 通过 JS 配置文件使用
|
|
821
|
+
|
|
822
|
+
除了纯命令行方式,crabatool 还支持通过创建一个 JS 配置文件来管理参数,避免每次在命令行中输入大量参数。这种方式不适合Agent和大模型。
|
|
823
|
+
|
|
824
|
+
### 使用步骤
|
|
825
|
+
|
|
826
|
+
**第一步:** 在项目中创建一个 `craba.js` 配置文件,将常用参数写在里面:
|
|
827
|
+
|
|
828
|
+
```js
|
|
829
|
+
var crabaTool = require('crabatool');
|
|
830
|
+
|
|
831
|
+
var config = {
|
|
832
|
+
// 【必填】网站路径
|
|
833
|
+
webPath: "F:/myproject/web/src/main/resources/static/shell",
|
|
834
|
+
|
|
835
|
+
// 【必填】前端服务端口
|
|
836
|
+
port: 3001,
|
|
837
|
+
|
|
838
|
+
// 【NGP 必填】模块名称
|
|
839
|
+
modName: "shell",
|
|
840
|
+
|
|
841
|
+
// 【可选】开启文件变动自动刷新
|
|
842
|
+
refresh: true,
|
|
843
|
+
|
|
844
|
+
// 【可选】子模块列表(用于 init.js 和 biz.js 自动打包)
|
|
845
|
+
childModList: ['recordsheet', 'baseinfo', 'accounting'],
|
|
846
|
+
|
|
847
|
+
// 【可选】打包后是否跳过压缩(true 不压缩,false 压缩)
|
|
848
|
+
ignoreCompress: true,
|
|
849
|
+
|
|
850
|
+
// 【可选】代理转发规则
|
|
851
|
+
proxy: {
|
|
852
|
+
'/apis/': {
|
|
853
|
+
target: 'http://127.0.0.1:8082',
|
|
854
|
+
changeOrigin: true
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
};
|
|
858
|
+
|
|
859
|
+
crabaTool.run(config);
|
|
860
|
+
```
|
|
861
|
+
|
|
862
|
+
**第二步:** 通过 `node craba.js` 加上功能命令来执行:
|
|
863
|
+
|
|
864
|
+
```bash
|
|
865
|
+
# 启动本地服务(使用配置文件中的 webPath、port 等参数)
|
|
866
|
+
node craba.js -run
|
|
867
|
+
|
|
868
|
+
# 检测 JS 语法
|
|
869
|
+
node craba.js -checkjs
|
|
870
|
+
|
|
871
|
+
# 打包 init.js 和 biz.js
|
|
872
|
+
node craba.js -mergeinitjs
|
|
873
|
+
```
|
|
874
|
+
|
|
875
|
+
### 命令行参数覆盖配置文件
|
|
876
|
+
|
|
877
|
+
命令行传入的参数会**覆盖**配置文件中的同名参数。例如:
|
|
878
|
+
|
|
879
|
+
```bash
|
|
880
|
+
# 虽然配置文件中 webPath 指向 shell 目录,但这里会使用命令行传入的路径
|
|
881
|
+
node craba.js -run -webPath E:/other/path
|
|
882
|
+
|
|
883
|
+
# 覆盖端口号
|
|
884
|
+
node craba.js -run -port 8080
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
### 适用场景
|
|
888
|
+
|
|
889
|
+
- **本地开发**:把 `webPath`、`port`、`modName`、`proxy` 等固定参数写到 `craba.js` 中,每次只需 `node craba.js -run` 即可启动
|
|
890
|
+
- **多人协作**:将 `craba.js` 提交到 Git 仓库,团队成员 clone 后直接使用,无需记忆大量参数
|
|
891
|
+
- **Jenkins/CI**:配置文件设置基础参数,Jenkins 脚本中通过命令行参数动态覆盖特定值
|
|
892
|
+
|
|
893
|
+
---
|
|
894
|
+
|
|
895
|
+
## 交互式菜单模式
|
|
896
|
+
|
|
897
|
+
不带任何参数运行 `crabatool`(或 `node craba.js`)时,将进入交互式菜单模式:
|
|
898
|
+
|
|
899
|
+
```
|
|
900
|
+
---------------------------------------------------------------------------------------------------------
|
|
901
|
+
1 启动服务。 主要包含:自动合并打包init.js和biz.js,查看本地平台的版本
|
|
902
|
+
2.1 更新当前项目的craba平台(主分支),然后启动服务。
|
|
903
|
+
2.2 更新当前项目的craba平台(其他分支),然后启动服务。
|
|
904
|
+
3 查询最新平台版本和日期。
|
|
905
|
+
4 校验当前项目js和gspx语法。
|
|
906
|
+
5 打包当前项目前端所有js。
|
|
907
|
+
6 安装或更新IDEA环境。
|
|
908
|
+
7 安装或更新vscode环境。
|
|
909
|
+
8 新建Craba项目。
|
|
910
|
+
9 更新 crabaTool 工具。
|
|
911
|
+
0 结束
|
|
912
|
+
---------------------------------------------------------------------------------------------------------
|
|
913
|
+
请输入对应功能的编号(数字):
|
|
914
|
+
```
|
|
915
|
+
|
|
916
|
+
通过输入编号选择功能。其中编号 8 支持创建两种类型的项目:
|
|
917
|
+
- **普通 Craba 纯前端项目**
|
|
918
|
+
- **NGP 微前端项目**
|
|
919
|
+
|
|
920
|
+
---
|
|
921
|
+
|
|
922
|
+
## 文件监听与热刷新
|
|
923
|
+
|
|
924
|
+
### 启动时热刷新
|
|
925
|
+
|
|
926
|
+
启动服务时通过 `-refresh true` 参数开启:
|
|
927
|
+
|
|
928
|
+
```bash
|
|
929
|
+
crabatool -run -webPath F:\project\www -port 9090 -refresh true
|
|
930
|
+
```
|
|
931
|
+
|
|
932
|
+
- 监听文件类型:`.js`、`.css`、`.gspx`、`.html`
|
|
933
|
+
- 工作原理:通过 WebSocket 通知浏览器,浏览器在被激活(focus)时才执行刷新
|
|
934
|
+
- WebSocket 端口:自动分配为 `port + 6000`
|
|
935
|
+
|
|
936
|
+
### 文件监听代码检测
|
|
937
|
+
|
|
938
|
+
启动服务时默认开启文件监听器(OpenFileWatcher),当 `.js` 文件发生变动时自动执行:
|
|
939
|
+
- ESLint 语法检查
|
|
940
|
+
- 文件编码检查
|
|
941
|
+
- 文件大小检查
|
|
942
|
+
- ES6+ 兼容性检查
|
|
943
|
+
|
|
944
|
+
### 独立文件监听器
|
|
945
|
+
|
|
946
|
+
crabatool 也导出了独立的文件监听 API,可在自定义项目中使用:
|
|
947
|
+
|
|
948
|
+
```js
|
|
949
|
+
var openFileWatcher = require('crabatool/tool/openFileWatcher.js');
|
|
950
|
+
|
|
951
|
+
const watcher = openFileWatcher.createWatcher({
|
|
952
|
+
watchExtensions: ['.js'],
|
|
953
|
+
debounceDelay: 300,
|
|
954
|
+
verbose: false
|
|
955
|
+
});
|
|
956
|
+
|
|
957
|
+
watcher.start('./src');
|
|
958
|
+
```
|
|
959
|
+
|
|
960
|
+
---
|
|
961
|
+
|
|
962
|
+
## 代理转发配置
|
|
963
|
+
|
|
964
|
+
启动本地服务时可配置 API 代理转发,基于 [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware)。
|
|
965
|
+
|
|
966
|
+
### 命令行方式
|
|
967
|
+
|
|
968
|
+
```bash
|
|
969
|
+
crabatool -run -webPath F:\project\www -port 9090 -proxy "{'/apis/':{'target':'http://127.0.0.1:8082','changeOrigin':true}}"
|
|
970
|
+
```
|
|
971
|
+
|
|
972
|
+
> 注意:命令行中 JSON 使用单引号包裹 key 和 value,工具会自动转换为双引号解析。
|
|
973
|
+
|
|
974
|
+
### 配置文件方式
|
|
975
|
+
|
|
976
|
+
在 `craba.js` 配置文件中直接写 JS 对象,更直观:
|
|
977
|
+
|
|
978
|
+
```js
|
|
979
|
+
var config = {
|
|
980
|
+
webPath: "F:/project/www",
|
|
981
|
+
port: 9090,
|
|
982
|
+
proxy: {
|
|
983
|
+
'/apis/': {
|
|
984
|
+
target: 'http://127.0.0.1:8082',
|
|
985
|
+
changeOrigin: true
|
|
986
|
+
},
|
|
987
|
+
'/shell/framework/': {
|
|
988
|
+
target: 'http://127.0.0.1:8339',
|
|
989
|
+
changeOrigin: true,
|
|
990
|
+
logLevel: 'debug'
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
};
|
|
994
|
+
```
|
|
995
|
+
|
|
996
|
+
也支持数组格式:
|
|
997
|
+
|
|
998
|
+
```js
|
|
999
|
+
proxy: [
|
|
1000
|
+
{ context: '/apis/', target: 'http://127.0.0.1:8082', changeOrigin: true }
|
|
1001
|
+
]
|
|
1002
|
+
```
|
|
1003
|
+
|
|
1004
|
+
### 从文件读取代理配置
|
|
1005
|
+
|
|
1006
|
+
```bash
|
|
1007
|
+
crabatool -run -webPath F:\project\www -port 9090 -proxySrc F:\config\proxy.json
|
|
1008
|
+
```
|
|
1009
|
+
|
|
1010
|
+
---
|
|
1011
|
+
|
|
1012
|
+
## Jenkins 集成
|
|
1013
|
+
|
|
1014
|
+
crabatool 可集成到 Jenkins 实现自动化构建流程,典型用法包括:平台更新、JS 打包、代码语法检测、检测报告推送钉钉。
|
|
1015
|
+
|
|
1016
|
+
### Jenkins Shell 配置示例
|
|
1017
|
+
|
|
1018
|
+
```bash
|
|
1019
|
+
# 进入助手目录
|
|
1020
|
+
cd /opt/ngp/shell/crabatool/
|
|
1021
|
+
|
|
1022
|
+
# 更新助手
|
|
1023
|
+
npm update crabatool -registry=https://registry.npmjs.org
|
|
1024
|
+
|
|
1025
|
+
# 打包 init.js 和 biz.js(必须在 jar 打包前执行)
|
|
1026
|
+
node craba.js -mergeinitjs -modName shell -childModList baseinfo,recordsheet,accounting -ignoreCompress false -progress 0
|
|
1027
|
+
|
|
1028
|
+
# 代码语法检测并推送钉钉
|
|
1029
|
+
node craba.js -checkjs -webPath /opt/ngp/shell/web/src/main/resources/static/shell -modName shell -ignoreCheck folder1,js/craba.min.js -webhooks https://oapi.dingtalk.com/robot/send?access_token=xxxxx -progress 0
|
|
1030
|
+
```
|
|
1031
|
+
|
|
1032
|
+
### 关键参数说明
|
|
1033
|
+
|
|
1034
|
+
- `-progress 0`:Jenkins 环境下关闭进度条显示
|
|
1035
|
+
- `-webhooks`:推送地址,推荐使用钉钉群自定义机器人
|
|
1036
|
+
- `-ignoreCheck`:忽略检测的目录/文件,逗号分隔,相对 webPath 路径
|
|
1037
|
+
- `-globals`:全局变量白名单。Shell 中 `$` 字符需转义为 `\$`,如 `-globals \$doc,$jq`
|
|
1038
|
+
|
|
1039
|
+
### 自动添加版本号
|
|
1040
|
+
|
|
1041
|
+
在 Jenkins 构建脚本中添加:
|
|
1042
|
+
|
|
1043
|
+
```bash
|
|
1044
|
+
crabatool -addVersion -file /opt/project/www/index.html -exp AUTOVERSION
|
|
1045
|
+
```
|
|
1046
|
+
|
|
1047
|
+
### 自动检测并更新平台
|
|
1048
|
+
|
|
1049
|
+
```bash
|
|
1050
|
+
crabatool -checkUpdate -version master -webPath /opt/project/www
|
|
1051
|
+
```
|
|
1052
|
+
|
|
1053
|
+
---
|
|
1054
|
+
|
|
1055
|
+
## 导出的模块 API
|
|
1056
|
+
|
|
1057
|
+
crabatool 作为 npm 包,除了 CLI 工具外还导出了以下模块,可在 Node.js 项目中直接引用:
|
|
1058
|
+
|
|
1059
|
+
```js
|
|
1060
|
+
var crabaTool = require('crabatool');
|
|
1061
|
+
```
|
|
1062
|
+
|
|
1063
|
+
| 模块 | 说明 |
|
|
1064
|
+
|------|------|
|
|
1065
|
+
| `crabaTool.run(config)` | 启动工具主入口 |
|
|
1066
|
+
| `crabaTool.config` | 全局配置对象 |
|
|
1067
|
+
| `crabaTool.utils` | 工具函数集合 |
|
|
1068
|
+
| `crabaTool.server` | Express 服务器模块(`server.start(options)` / `server.run(options)`) |
|
|
1069
|
+
| `crabaTool.stringUtils` | 字符串处理工具 |
|
|
1070
|
+
| `crabaTool.pager` | 分页工具 |
|
|
1071
|
+
| `crabaTool.cuid` | 唯一 ID 生成器 |
|
|
1072
|
+
| `crabaTool.JSONCRUD` | JSON 文件增删改查工具 |
|
|
1073
|
+
| `crabaTool.DbHelper` | 数据库操作助手(MySQL) |
|
|
1074
|
+
| `crabaTool.StringBuilder` | 字符串拼接工具 |
|
|
1075
|
+
| `crabaTool.hashUtils` | 哈希计算工具 |
|
|
1076
|
+
|
|
1077
|
+
---
|
|
1078
|
+
|
|
1079
|
+
## 常见问题
|
|
1080
|
+
|
|
1081
|
+
### 1. npm 安装失败或延迟
|
|
1082
|
+
|
|
1083
|
+
尝试使用内网仓库:
|
|
1084
|
+
|
|
1085
|
+
```bash
|
|
1086
|
+
npm install crabatool -g --registry http://172.17.0.236:4873/
|
|
1087
|
+
```
|
|
1088
|
+
|
|
1089
|
+
或切换为官方源:
|
|
1090
|
+
|
|
1091
|
+
```bash
|
|
1092
|
+
npm install crabatool -g --registry https://registry.npmjs.org
|
|
1093
|
+
```
|
|
1094
|
+
|
|
1095
|
+
### 2. 命令行参数和配置文件的优先级
|
|
1096
|
+
|
|
1097
|
+
命令行参数优先级 **高于** 配置文件中的值。例如:
|
|
1098
|
+
|
|
1099
|
+
```bash
|
|
1100
|
+
node craba.js -run -webPath E:/other/path
|
|
1101
|
+
```
|
|
1102
|
+
|
|
1103
|
+
即使 `craba.js` 中配置了 `webPath`,也会使用命令行传入的路径。
|
|
1104
|
+
|
|
1105
|
+
### 3. 全局安装后 crabatool 命令找不到
|
|
1106
|
+
|
|
1107
|
+
确保使用管理员权限安装,且 npm 全局目录在系统 PATH 中。
|
|
1108
|
+
|
|
1109
|
+
### 4. webPath 路径格式
|
|
1110
|
+
|
|
1111
|
+
- 支持绝对路径和相对路径(相对于命令行执行目录)
|
|
1112
|
+
- 路径中可使用 `/` 或 `\\`
|
|
1113
|
+
- 应指向 `login.html`(NGP)或 `index.html` 所在目录
|
|
1114
|
+
|
|
1115
|
+
### 5. 不同环境如何灵活配置
|
|
1116
|
+
|
|
1117
|
+
- 本地开发:使用配置文件(`craba.js`)设置默认参数
|
|
1118
|
+
- Jenkins/CI:通过命令行参数动态覆盖配置
|
|
1119
|
+
- 多项目共用:创建 `.bat` / `.sh` 脚本,通过 `-webPath` 等参数区分项目
|
|
1120
|
+
|
|
1121
|
+
### 6. 跳过系统信息上报
|
|
1122
|
+
|
|
1123
|
+
```bash
|
|
1124
|
+
crabatool --skip-report -run -webPath 项目路径
|
|
1125
|
+
```
|
package/res/client.js
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
return;
|
|
46
46
|
|
|
47
47
|
// 更新了平台 全部刷新
|
|
48
|
-
var mainPanel = $common.getMainPanel();
|
|
48
|
+
var mainPanel = $common.getMainPanel(null, false);
|
|
49
49
|
if (!mainPanel || files.includes('js/craba.min.js') || files.includes('js/crabaEx.min.js') || files.includes('js/agency.js')) {
|
|
50
50
|
window.location.reload();
|
|
51
51
|
return;
|