Commit 99e42dcd91423eed4057d587486a6d2fdc3b8480
1 parent
ba9b2765
处理打包和jdk冲突
Showing
7 changed files
with
87 additions
and
73 deletions
pom.xml
| ... | ... | @@ -190,6 +190,10 @@ |
| 190 | 190 | <groupId>org.apache.xmlgraphics</groupId> |
| 191 | 191 | <artifactId>batik-js</artifactId> |
| 192 | 192 | </exclusion> |
| 193 | + <exclusion> | |
| 194 | + <groupId>javassist</groupId> | |
| 195 | + <artifactId>javassist</artifactId> | |
| 196 | + </exclusion> | |
| 193 | 197 | </exclusions> |
| 194 | 198 | </dependency> |
| 195 | 199 | <dependency> | ... | ... |
src/main/java/com/bsth/data/commonData/SyncData.java
src/main/java/com/bsth/data/jddzx/JDInterface.java
| ... | ... | @@ -103,7 +103,6 @@ public class JDInterface { |
| 103 | 103 | //人员投入 |
| 104 | 104 | int jhrytl=culateService.culateJhry(schList,""); |
| 105 | 105 | int sjrytl=culateService.culateSjry(schList,""); |
| 106 | -<<<<<<< HEAD | |
| 107 | 106 | BigDecimal rytlbfb=BigDecimal.valueOf(100); |
| 108 | 107 | if(jhrytl>0){ |
| 109 | 108 | rytlbfb=BigDecimal.valueOf((double)sjrytl/jhrytl*100); |
| ... | ... | @@ -113,13 +112,6 @@ public class JDInterface { |
| 113 | 112 | rytl.put("sjrytl",sjrytl); |
| 114 | 113 | rytl.put("rytl",rytlbfb.setScale(2,BigDecimal.ROUND_HALF_UP)); |
| 115 | 114 | data.put("rytl",rytl); |
| 116 | -======= | |
| 117 | - BigDecimal rytl=BigDecimal.valueOf(100); | |
| 118 | - if(jhrytl>0){ | |
| 119 | - rytl=BigDecimal.valueOf((double)sjrytl/jhrytl*100); | |
| 120 | - } | |
| 121 | - data.put("rytl",rytl.setScale(2,BigDecimal.ROUND_HALF_UP)); | |
| 122 | ->>>>>>> origin/jdsfx | |
| 123 | 115 | |
| 124 | 116 | //车辆投入 |
| 125 | 117 | Map<String,Object> cltl=new HashMap<>(); |
| ... | ... | @@ -129,11 +121,8 @@ public class JDInterface { |
| 129 | 121 | if(jh_z>0){ |
| 130 | 122 | cltl_z=BigDecimal.valueOf((double)sj_z/jh_z*100); |
| 131 | 123 | } |
| 132 | -<<<<<<< HEAD | |
| 133 | 124 | cltl.put("jh_z",jh_z); |
| 134 | 125 | cltl.put("sj_z",sj_z); |
| 135 | -======= | |
| 136 | ->>>>>>> origin/jdsfx | |
| 137 | 126 | cltl.put("cltl_z",cltl_z.setScale(2,BigDecimal.ROUND_HALF_UP)); |
| 138 | 127 | |
| 139 | 128 | int jh_w=culateService.culateJhcl(schList,"wgf"); |
| ... | ... | @@ -142,11 +131,8 @@ public class JDInterface { |
| 142 | 131 | if(jh_w>0){ |
| 143 | 132 | cltl_w=BigDecimal.valueOf((double)sj_w/jh_w*100); |
| 144 | 133 | } |
| 145 | -<<<<<<< HEAD | |
| 146 | 134 | cltl.put("jh_w",jh_w); |
| 147 | 135 | cltl.put("sj_w",sj_w); |
| 148 | -======= | |
| 149 | ->>>>>>> origin/jdsfx | |
| 150 | 136 | cltl.put("cltl_w",cltl_w.setScale(2,BigDecimal.ROUND_HALF_UP)); |
| 151 | 137 | |
| 152 | 138 | int jh_q=culateService.culateJhcl(schList,""); |
| ... | ... | @@ -155,11 +141,8 @@ public class JDInterface { |
| 155 | 141 | if(jh_q>0){ |
| 156 | 142 | cltl_q=BigDecimal.valueOf((double)sj_q/jh_q*100); |
| 157 | 143 | } |
| 158 | -<<<<<<< HEAD | |
| 159 | 144 | cltl.put("jh_q",jh_q); |
| 160 | 145 | cltl.put("sj_q",sj_q); |
| 161 | -======= | |
| 162 | ->>>>>>> origin/jdsfx | |
| 163 | 146 | cltl.put("cltl_q",cltl_q.setScale(2,BigDecimal.ROUND_HALF_UP)); |
| 164 | 147 | |
| 165 | 148 | data.put("cltl",cltl); |
| ... | ... | @@ -172,11 +155,8 @@ public class JDInterface { |
| 172 | 155 | if(jhbctl_z>0){ |
| 173 | 156 | bctl_z=BigDecimal.valueOf((double)sjbctl_z/jhbctl_z*100); |
| 174 | 157 | } |
| 175 | -<<<<<<< HEAD | |
| 176 | 158 | bctl.put("jhbctl_z",jhbctl_z); |
| 177 | 159 | bctl.put("sjbctl_z",sjbctl_z); |
| 178 | -======= | |
| 179 | ->>>>>>> origin/jdsfx | |
| 180 | 160 | bctl.put("bctl_z",bctl_z.setScale(2,BigDecimal.ROUND_HALF_UP)); |
| 181 | 161 | |
| 182 | 162 | int jhbctl_w=culateService.culateJhbc(schList,"wgf"); |
| ... | ... | @@ -185,11 +165,8 @@ public class JDInterface { |
| 185 | 165 | if(jhbctl_w>0){ |
| 186 | 166 | bctl_w=BigDecimal.valueOf((double)sjbctl_w/jhbctl_w*100); |
| 187 | 167 | } |
| 188 | -<<<<<<< HEAD | |
| 189 | 168 | bctl.put("jhbctl_w",jhbctl_w); |
| 190 | 169 | bctl.put("sjbctl_w",sjbctl_w); |
| 191 | -======= | |
| 192 | ->>>>>>> origin/jdsfx | |
| 193 | 170 | bctl.put("bctl_w",bctl_w.setScale(2,BigDecimal.ROUND_HALF_UP)); |
| 194 | 171 | |
| 195 | 172 | int jhbctl_q=culateService.culateJhbc(schList,""); |
| ... | ... | @@ -198,11 +175,8 @@ public class JDInterface { |
| 198 | 175 | if(jhbctl_q>0){ |
| 199 | 176 | bctl_q=BigDecimal.valueOf((double)sjbctl_q/jhbctl_q*100); |
| 200 | 177 | } |
| 201 | -<<<<<<< HEAD | |
| 202 | 178 | bctl.put("jhbctl_q",jhbctl_q); |
| 203 | 179 | bctl.put("sjbctl_q",sjbctl_q); |
| 204 | -======= | |
| 205 | ->>>>>>> origin/jdsfx | |
| 206 | 180 | bctl.put("bctl_q",bctl_q.setScale(2,BigDecimal.ROUND_HALF_UP)); |
| 207 | 181 | |
| 208 | 182 | data.put("bctl",bctl); | ... | ... |
src/main/resources/fatso/handle_real_ctl.js
| ... | ... | @@ -5,8 +5,7 @@ var fs = require('fs') |
| 5 | 5 | , cheerio = require('cheerio') |
| 6 | 6 | , minifier = require('./minifier') |
| 7 | 7 | , crypto = require("crypto") |
| 8 | - , CleanCSS = require('clean-css') | |
| 9 | - , UglifyJS = require("uglify-js"); | |
| 8 | + , CleanCSS = require('clean-css'); | |
| 10 | 9 | ; |
| 11 | 10 | |
| 12 | 11 | var platform = process.platform; |
| ... | ... | @@ -152,7 +151,7 @@ var handleJs = function ($, file, cb) { |
| 152 | 151 | (function () { |
| 153 | 152 | if (index >= ks.length) { |
| 154 | 153 | write(file, $.html()); |
| 155 | - console.log(file + ' 结束'.green); | |
| 154 | + console.log(file + ' 结束'); // 移除.green调用 | |
| 156 | 155 | cb && cb(); |
| 157 | 156 | return; |
| 158 | 157 | } |
| ... | ... | @@ -160,25 +159,38 @@ var handleJs = function ($, file, cb) { |
| 160 | 159 | index++; |
| 161 | 160 | var f = arguments.callee; |
| 162 | 161 | //合并压缩js |
| 163 | - var result = UglifyJS.minify(jsMap[k]); | |
| 164 | - var data = result.code; | |
| 165 | - var fName = (k + '_' + md5(data)) + '.js'; | |
| 166 | - //写入 assets js 目录下 | |
| 167 | - var descFile = dest + _static + sp + 'real_control_v2'+sp+'assets'+sp+'js' + sp + fName; | |
| 168 | - fs.open(descFile, 'a', function (err, fd) { | |
| 169 | - | |
| 170 | - fs.write(fd, data, function () { | |
| 171 | - var tag = '<script src="/real_control_v2/assets/js/' + fName + '"></script>'; | |
| 172 | - if ($('body').length > 0) | |
| 173 | - $('body').append(tag); | |
| 174 | - else { | |
| 175 | - //没有body 就写在尾部 | |
| 176 | - $('*').last().after(tag); | |
| 177 | - } | |
| 178 | - console.log(k + ' js', '结束,下一个'); | |
| 179 | - f(); | |
| 162 | + try { | |
| 163 | + // 先合并文件内容 | |
| 164 | + let code = ''; | |
| 165 | + for(let j = 0; j < jsMap[k].length; j++) { | |
| 166 | + code += fs.readFileSync(jsMap[k][j], 'utf8') + '\n'; | |
| 167 | + } | |
| 168 | + // 使用Terser压缩 | |
| 169 | + var data = minifier.mini(code); | |
| 170 | + if (code !== '' && data === '') { | |
| 171 | + console.error('压缩出错') | |
| 172 | + process.exit(); | |
| 173 | + } | |
| 174 | + var fName = (k + '_' + md5(data)) + '.js'; | |
| 175 | + //写入 assets js 目录下 | |
| 176 | + var descFile = dest + _static + sp + 'real_control_v2'+sp+'assets'+sp+'js' + sp + fName; | |
| 177 | + fs.open(descFile, 'a', function (err, fd) { | |
| 178 | + fs.write(fd, data, function () { | |
| 179 | + var tag = '<script src="/real_control_v2/assets/js/' + fName + '"></script>'; | |
| 180 | + if ($('body').length > 0) | |
| 181 | + $('body').append(tag); | |
| 182 | + else { | |
| 183 | + //没有body 就写在尾部 | |
| 184 | + $('*').last().after(tag); | |
| 185 | + } | |
| 186 | + console.log(k + ' js', '结束,下一个'); | |
| 187 | + f(); | |
| 188 | + }); | |
| 180 | 189 | }); |
| 181 | - }); | |
| 190 | + } catch (e) { | |
| 191 | + console.error('合并压缩错误:', e); | |
| 192 | + process.exit(); | |
| 193 | + } | |
| 182 | 194 | })(); |
| 183 | 195 | }; |
| 184 | 196 | |
| ... | ... | @@ -197,10 +209,10 @@ function md5(text) { |
| 197 | 209 | function write(file, text) { |
| 198 | 210 | fs.writeFile(file, text, function (err) { |
| 199 | 211 | if (err) { |
| 200 | - console.log(err.toString().red); | |
| 212 | + console.log(err.toString()); // 移除.red调用 | |
| 201 | 213 | process.exit(); |
| 202 | 214 | } |
| 203 | - console.log(file.green); | |
| 215 | + console.log(file); // 移除.green调用 | |
| 204 | 216 | }); |
| 205 | 217 | } |
| 206 | 218 | ... | ... |
src/main/resources/fatso/minifier.js
| 1 | -/** | |
| 2 | - * @author PanZhao | |
| 3 | - * @date 2016年3月17日 下午12:44:06 | |
| 4 | - */ | |
| 5 | 1 | var fs = require('fs'); |
| 6 | -var UglifyJS = require("uglify-js"); | |
| 2 | +var Terser = require('terser'); | |
| 7 | 3 | |
| 8 | 4 | var platform = process.platform; |
| 9 | 5 | var iswin = platform=='win32'; |
| 10 | 6 | var separator = platform=='win32'?'\\':'/'; |
| 11 | 7 | var minifier = { |
| 12 | - | |
| 13 | - mergeAndMini: function(fileArray,scriptString, root, file){ | |
| 8 | + | |
| 9 | + mergeAndMini: function(fileArray, scriptString, root, file) { | |
| 14 | 10 | var len = fileArray.length; |
| 15 | 11 | for(var i = 0; i < len; i ++){ |
| 16 | - fileArray[i] = root + fileArray[i].split('/').join(separator); | |
| 12 | + fileArray[i] = root + fileArray[i].split('/').join(separator); | |
| 17 | 13 | } |
| 18 | - | |
| 14 | + | |
| 19 | 15 | var result, indoorRs; |
| 20 | - | |
| 16 | + | |
| 21 | 17 | try { |
| 22 | - if(fileArray && len > 0) | |
| 23 | - result = UglifyJS.minify(fileArray); | |
| 24 | - | |
| 25 | - if(scriptString) | |
| 26 | - indoorRs = UglifyJS.minify(scriptString, {fromString: true}); | |
| 18 | + if(fileArray && len > 0) { | |
| 19 | + // Terser可以直接接受文件路径数组 | |
| 20 | + result = Terser.minify_sync(fs.readFileSync(fileArray[0], 'utf8')); | |
| 21 | + // 如果有多个文件,需要先合并内容 | |
| 22 | + if(len > 1) { | |
| 23 | + let code = ''; | |
| 24 | + for(let j = 0; j < len; j++) { | |
| 25 | + code += fs.readFileSync(fileArray[j], 'utf8') + '\n'; | |
| 26 | + } | |
| 27 | + result = Terser.minify_sync(code); | |
| 28 | + } | |
| 29 | + } | |
| 30 | + | |
| 31 | + if(scriptString) { | |
| 32 | + // Terser不需要fromString选项,直接传递代码字符串 | |
| 33 | + indoorRs = Terser.minify_sync(scriptString); | |
| 34 | + } | |
| 27 | 35 | } catch (e) { |
| 28 | 36 | console.log(e); |
| 29 | - console.log(file.red); | |
| 37 | + console.log(file); // 移除.red调用,除非有chalk等库 | |
| 30 | 38 | process.exit(); |
| 31 | 39 | } |
| 32 | - | |
| 33 | - return {outside: result?result.code:'', inside: indoorRs?indoorRs.code:''}; | |
| 40 | + | |
| 41 | + return {outside: result && !result.error ? result.code : '', inside: indoorRs && !indoorRs.error ? indoorRs.code : ''}; | |
| 34 | 42 | }, |
| 35 | - mini: function(file){ | |
| 36 | - return UglifyJS.minify(file).code; | |
| 43 | + | |
| 44 | + mini: function(file) { | |
| 45 | + try { | |
| 46 | + // 检查file是文件路径还是代码字符串 | |
| 47 | + if(typeof file === 'string' && fs.existsSync(file)) { | |
| 48 | + const code = fs.readFileSync(file, 'utf8'); | |
| 49 | + const result = Terser.minify_sync(code); | |
| 50 | + return result && !result.error ? result.code : ''; | |
| 51 | + } else { | |
| 52 | + // 假设是代码字符串 | |
| 53 | + const result = Terser.minify_sync(file); | |
| 54 | + return result && !result.error ? result.code : ''; | |
| 55 | + } | |
| 56 | + } catch (e) { | |
| 57 | + console.log(e); | |
| 58 | + return ''; | |
| 59 | + } | |
| 37 | 60 | } |
| 38 | -} | |
| 61 | +}; | |
| 39 | 62 | |
| 40 | 63 | module.exports = minifier; |
| 41 | 64 | \ No newline at end of file | ... | ... |
src/main/resources/fatso/package.json
src/main/resources/fatso/start.js
| ... | ... | @@ -16,7 +16,7 @@ var platform = process.platform; |
| 16 | 16 | var iswin = platform == 'win32'; |
| 17 | 17 | var sp = platform == 'win32' ? '\\' : '/'; |
| 18 | 18 | //不参与的目录 |
| 19 | -var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel', 'base' + sp + 'stationroute','zndd_yuan','call','base' + sp + 'region',] | |
| 19 | +var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel', 'base' + sp + 'stationroute'] | |
| 20 | 20 | , ep = new EventProxy() |
| 21 | 21 | , pName = 'bsth_control' |
| 22 | 22 | , path = process.cwd() | ... | ... |