base_parts_ai 1.0.36 → 1.0.37

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/.eslintrc.js CHANGED
@@ -118,10 +118,7 @@ module.exports = {
118
118
  "no-implicit-globals": "error",
119
119
  "no-implied-eval": "error",
120
120
  "no-inline-comments": "off",
121
- "no-inner-declarations": [
122
- "error",
123
- "functions"
124
- ],
121
+ "no-inner-declarations": "off",
125
122
  "no-invalid-this": "off",
126
123
  "no-iterator": "error",
127
124
  "no-label-var": "error",
package/bin/jcc.js CHANGED
@@ -1,7 +1,3 @@
1
- #!/usr/bin/env node
2
-
3
- var jutils = require('base_parts');
4
- var jlog = jutils.jlog(__filename);
5
1
 
6
2
  var fs = require('fs');
7
3
  var os = require('os');
@@ -11,10 +7,6 @@ var { Command } = require('commander');
11
7
  var program = new Command();
12
8
 
13
9
 
14
- // 关闭日志输出
15
- jlog.setEnable(false, "*");
16
-
17
-
18
10
  /**
19
11
  * 获取配置文件
20
12
  * @param {string} cmd 命令行
@@ -53,19 +53,30 @@ function fetchConfig(buildCfg) {
53
53
  var currentVer = '';
54
54
  try { currentVer = require('../package.json').version; } catch (e) { }
55
55
  var newVer = result.data.newVer || '';
56
- if (newVer && newVer !== currentVer) {
56
+ // 比较语义化版本号,仅当服务端版本大于当前版本时才升级
57
+ function semverGt(a, b) {
58
+ var pa = a.split('.').map(Number);
59
+ var pb = b.split('.').map(Number);
60
+ for (var i = 0; i < 3; i++) {
61
+ if ((pa[i] || 0) > (pb[i] || 0)) return true;
62
+ if ((pa[i] || 0) < (pb[i] || 0)) return false;
63
+ }
64
+ return false;
65
+ }
66
+ if (newVer && semverGt(newVer, currentVer)) {
57
67
  console.log('[fetchConfig] 检测到新版本 jcc: ' + newVer + '(当前 ' + currentVer + ')');
58
- // select 上下选,默认高亮"立即升级"
59
- var confirmed = await select({
60
- message: '是否立即升级?',
61
- default: 'yes',
62
- choices: [
63
- { name: '立即升级', value: 'yes' },
64
- { name: '跳过', value: 'no' },
65
- ],
66
- });
68
+ var confirmed = "yes"
69
+ // confirmed = await select({
70
+ // message: '是否立即升级?',
71
+ // default: 'yes',
72
+ // choices: [
73
+ // { name: '立即升级', value: 'yes' },
74
+ // { name: '跳过', value: 'no' },
75
+ // ],
76
+ // });
67
77
  if (confirmed === 'yes') {
68
78
  console.log('[fetchConfig] 正在升级...');
79
+ // 用 select 上下选,默认高亮"立即升级"
69
80
  try {
70
81
  var tgzUrl = 'https://jdwfiles.oss-cn-hangzhou.aliyuncs.com/npm_pkg/base_parts_ai-' + newVer + '.tgz';
71
82
  execSync('npm install -g ' + tgzUrl + ' --force', { stdio: 'inherit' });
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "base_parts_ai",
3
- "version": "1.0.36",
3
+ "version": "1.0.37",
4
4
  "description": "jaskle base_parts_ai",
5
5
  "main": "./main.js",
6
6
  "registry": true,
7
7
  "directories": {},
8
8
  "scripts": {
9
- "test": "node ./test_jcc.js"
9
+ "test": "node ./test_jcc.js",
10
+ "postinstall": "node -e \"console.log('\\x1b[1;96m\\n ╔══════════════════════════════════════════╗\\n ║ \\x1b[1;93m安装完成!输入以下命令开始配置:\\x1b[1;96m\\n ║ \\x1b[1;92mjcc\\x1b[1;97m 配置或安装 ClaudeCode\\x1b[1;96m \\n ╚══════════════════════════════════════════╝\\x1b[0m\\n')\""
10
11
  },
11
12
  "bin": {
12
13
  "jcc": "./bin/jcc.js"
@@ -17,11 +18,9 @@
17
18
  "author": "jaskle",
18
19
  "license": "ISC",
19
20
  "dependencies": {
20
- "base_parts": "^2.*",
21
- "commander": "^14.0.3",
22
- "inquirer": "^13.3.2"
21
+ "commander": "https://jdwfiles.oss-cn-hangzhou.aliyuncs.com/npm_pkg/commander-14.0.3.tgz",
22
+ "inquirer": "https://jdwfiles.oss-cn-hangzhou.aliyuncs.com/npm_pkg/inquirer-13.3.2.tgz"
23
23
  },
24
24
  "devDependencies": {
25
- "base_parts_types": "^2.*"
26
25
  }
27
26
  }
package/lib/build_japp.js DELETED
@@ -1,187 +0,0 @@
1
- let glob = require("glob")
2
- let archiver = require('archiver');
3
- let jutils = require('base_parts');
4
-
5
- let fs = require('fs');
6
- let os = require('os');
7
- let path = require('path');
8
- var AdmZip = require('adm-zip');
9
-
10
- module.exports = async (cmd, buildCfg) => {
11
- return new Promise((resolve, reject) => {
12
- (async () => {
13
- // 待删除列表
14
- var deleteList = [];
15
-
16
- // 读取sh脚本
17
- var shDataStr = fs.readFileSync(buildCfg.rootPath + "/jbuild_data/repair.sh", "utf8");
18
-
19
- // 建立压缩文件
20
- console.log(`build file to ${buildCfg.outpath}`);
21
- let output = fs.createWriteStream(buildCfg.outpath);
22
- let archive = archiver('zip', {
23
- zlib: { level: 9 }
24
- });
25
- output.on('close', function () {
26
- // 清理
27
- for (const iterator of deleteList) {
28
- fs.unlinkSync(iterator);
29
- }
30
-
31
- // 完成
32
- console.log(archive.pointer() + ' total bytes');
33
- console.log(`build success:${buildCfg.outpath}`);
34
- resolve();
35
- });
36
- output.on('end', function () {
37
- });
38
- archive.on('warning', function (err) {
39
- if (err.code === 'ENOENT') {
40
- } else {
41
- reject(err);
42
- }
43
- });
44
- archive.on('error', function (err) {
45
- reject(err);
46
- });
47
- archive.pipe(output);
48
-
49
- // 添加应用
50
- if (!cmd.noapp) {
51
-
52
- // 修改版本号
53
- try {
54
- console.log(`change dist ver ...`);
55
- var repFile = `${buildCfg.rootPath}\\dist\\index.html`;
56
- var indexStr = fs.readFileSync(repFile, "utf8");
57
- indexStr = indexStr.replace(/#J_APPNAME#/g, buildCfg.appName);
58
- indexStr = indexStr.replace(/#J_DATE#/g, buildCfg.dateStr);
59
-
60
- // 读取H5版本
61
- try {
62
- var bInfoStr = fs.readFileSync(`${buildCfg.rootPath}/jbuild_data/info.txt`, "utf8");
63
- var bInfoObj = JSON.parse(bInfoStr);
64
- if (bInfoObj.version) {
65
- indexStr = indexStr.replace(/#J_H5_VER#/g, bInfoObj.version);
66
- }
67
- } catch (error) {
68
- console.log(`no h5Ver!`);
69
- }
70
-
71
- // 保存
72
- fs.writeFileSync(repFile, indexStr);
73
- } catch (error) {
74
- }
75
-
76
- // 添加用户文件
77
- let pathSub = "dist";
78
- console.log(`scaning ${pathSub} ...`);
79
- let fileList = glob(`${pathSub}/**/*`, {
80
- dot: true,
81
- sync: true,
82
- nodir: true,
83
- cwd: buildCfg.rootPath,
84
- ignore: []
85
- });
86
- if (fileList.length === 0) {
87
- console.error("no dist files!");
88
- return;
89
- }
90
- console.log(`add [${fileList.length}] files ...`);
91
- for (let index = 0; index < fileList.length; index++) {
92
- let element = fileList[index].substr(pathSub.length + 1);
93
-
94
- // 添加文件
95
- archive.file(`${buildCfg.rootPath}/${pathSub}/${element}`, { name: "update_a20/h5app/" + element });
96
- }
97
- // 清空应用目录
98
- shDataStr = shDataStr.replace(/#del_app#/g, "");
99
- // 复制应用文件
100
- shDataStr = shDataStr.replace(/#copy_app#/g, "");
101
- }
102
-
103
- // 添加框架二进制
104
- if (!cmd.nobin) {
105
- let pathSub = "jbuild_data/bin";
106
- console.log(`scaning ${pathSub} ...`);
107
- let fileList = glob(`${pathSub}/**/*`, {
108
- dot: true,
109
- sync: true,
110
- nodir: true,
111
- cwd: buildCfg.rootPath,
112
- ignore: []
113
- });
114
- console.log(`add [${fileList.length}] files ...`);
115
- for (let index = 0; index < fileList.length; index++) {
116
- let element = fileList[index].substr(pathSub.length + 1);
117
-
118
- // 添加文件
119
- archive.file(`${buildCfg.rootPath}/${pathSub}/${element}`, { name: "update_a20/app/bin/" + element });
120
- }
121
-
122
- // 添加框架apk
123
- archive.file(`${buildCfg.rootPath}/jbuild_data/app-debug.apk`, { name: "update_a20/app/app-debug.apk" });
124
-
125
- // 清空模型文件
126
- shDataStr = shDataStr.replace(/#del_bin#/g, "");
127
- }
128
-
129
- // 添加后台服务
130
- if (!cmd.noweb) {
131
- console.log(`add device_webapi files ...`);
132
- // 载入zip
133
- var myZip = new AdmZip(`${buildCfg.rootPath}/jbuild_data/device_webapi.zip`);
134
-
135
- // 循环添加
136
- var zipEntries = myZip.getEntries();
137
- zipEntries.forEach(function (zipEntry) {
138
- let tmpFile = path.resolve(`${buildCfg.rootPath}/jbuild_data/${zipEntry.entryName}.tmp`);
139
- fs.writeFileSync(tmpFile, zipEntry.getData());
140
- deleteList.push(tmpFile);
141
- archive.file(tmpFile, { name: "update_a20/" + zipEntry.entryName });
142
- });
143
-
144
- // 复制web
145
- shDataStr = shDataStr.replace(/#copy_web#/g, "");
146
- }
147
-
148
- // 恢复出厂设置
149
- if (cmd.reset) {
150
- shDataStr = shDataStr.replace(/#rest#/g, "");
151
- }
152
-
153
- // 添加sh
154
- try {
155
- let tmpFile = path.resolve(`${buildCfg.rootPath}/jbuild_data/repair.sh.tmp`);
156
- fs.writeFileSync(tmpFile, shDataStr);
157
- deleteList.push(tmpFile);
158
- archive.file(tmpFile, { name: "update_a20/repair.sh" });
159
- } catch (error) {
160
- }
161
-
162
- // 添加设备信息
163
- try {
164
- var pkgInfo = os.networkInterfaces();
165
- pkgInfo.buildTime = jutils.getNowDate();
166
-
167
- let tmpFile = path.resolve(`${buildCfg.rootPath}/jbuild_data/build_info.txt`);
168
- fs.writeFileSync(tmpFile, JSON.stringify(pkgInfo, null, 4));
169
- deleteList.push(tmpFile);
170
- archive.file(tmpFile, { name: "update_a20/build_info.txt" });
171
- } catch (error) {
172
- }
173
-
174
- // 开始压缩
175
- archive.finalize();
176
- })().catch((err) => {
177
- console.error(err.message);
178
- console.error("build error,please run [jh5 update] first.");
179
- try {
180
- jutils.jfile_utils.deleteFile(buildCfg.outpath);
181
- } catch (error) {
182
- }
183
- });
184
- });
185
-
186
- }
187
-