Commit 8927f7d06ebb6d8e0aeb8c4f532311ba0d9d021a
1 parent
ad6f760d
1.js压缩兼容es6内容
Showing
6 changed files
with
307 additions
and
271 deletions
src/main/resources/fatso/handle_real_ctl.js
| 1 | -/** | |
| 2 | - * 处理线调文件 | |
| 3 | - */ | |
| 4 | -var fs = require('fs') | |
| 5 | - , cheerio = require('cheerio') | |
| 6 | - , minifier = require('./minifier') | |
| 7 | - , crypto = require("crypto") | |
| 8 | - , CleanCSS = require('clean-css') | |
| 9 | - , UglifyJS = require("uglify-js"); | |
| 10 | -; | |
| 11 | - | |
| 12 | -var platform = process.platform; | |
| 13 | -var iswin = platform=='win32'; | |
| 14 | -var sp = platform=='win32'?'\\':'/'; | |
| 15 | -//不参与的目录 | |
| 16 | -var pName = 'bsth_control' | |
| 17 | - , path = process.cwd() | |
| 18 | - //根目录 | |
| 19 | - , root = path.substr(0, path.indexOf(sp + 'src'+sp+'main')) | |
| 20 | - , workspace = root.substr(0, root.lastIndexOf(sp + pName)) | |
| 21 | - //临时目录 | |
| 22 | - , dest = (workspace + sp + pName + '@fatso_copy')//.replace(/\//g, '\\') | |
| 23 | - , _static = sp + 'src'+sp+'main'+sp+'resources'+sp+'static'; | |
| 24 | - | |
| 25 | - | |
| 26 | -var mainFile = dest + _static + sp + 'real_control_v2'+sp+'main.html'; | |
| 27 | -var aloneMapWrapFile = dest + _static + sp + 'real_control_v2'+sp+'alone_page'+sp+'map'+sp+'alone_wrap.html'; | |
| 28 | -var aloneHomeWrapFile = dest + _static + sp + 'real_control_v2'+sp+'alone_page'+sp+'home'+sp+'home_wrap.html'; | |
| 29 | -var mapFile = dest + _static + sp + 'real_control_v2'+sp+'mapmonitor'+sp+'real.html'; | |
| 30 | -var realCtl = { | |
| 31 | - /** | |
| 32 | - * 处理线调首页 | |
| 33 | - */ | |
| 34 | - handleMain: function (cb) { | |
| 35 | - //处理main.html | |
| 36 | - var data = fs.readFileSync(mainFile, 'utf-8'), | |
| 37 | - $ = cheerio.load(data); | |
| 38 | - handleCss($, function () { | |
| 39 | - handleJs($, mainFile, cb); | |
| 40 | - }); | |
| 41 | - | |
| 42 | - | |
| 43 | - }, | |
| 44 | - /** | |
| 45 | - * 处理地图模块 | |
| 46 | - * @param cb | |
| 47 | - */ | |
| 48 | - handleMap: function (cb) { | |
| 49 | - //读取文件 | |
| 50 | - var data = fs.readFileSync(mapFile, 'utf-8') | |
| 51 | - , $ = cheerio.load(data); | |
| 52 | - | |
| 53 | - handleCss($, function () { | |
| 54 | - handleJs($, mapFile, cb); | |
| 55 | - }); | |
| 56 | - }, | |
| 57 | - /** | |
| 58 | - * 处理单屏地图页面 | |
| 59 | - * @param cb | |
| 60 | - */ | |
| 61 | - handleAlonePage: function (cb) { | |
| 62 | - var data = fs.readFileSync(aloneMapWrapFile, 'utf-8'); | |
| 63 | - var $ = cheerio.load(data); | |
| 64 | - handleCss($, function () { | |
| 65 | - handleJs($, aloneMapWrapFile, cb); | |
| 66 | - }); | |
| 67 | - }, | |
| 68 | - /** | |
| 69 | - * 处理单屏主页 | |
| 70 | - * @param cb | |
| 71 | - */ | |
| 72 | - handleAloneHomePage: function (cb) { | |
| 73 | - var data = fs.readFileSync(aloneHomeWrapFile, 'utf-8'); | |
| 74 | - var $ = cheerio.load(data); | |
| 75 | - handleCss($, function () { | |
| 76 | - handleJs($, aloneHomeWrapFile, cb); | |
| 77 | - }); | |
| 78 | - } | |
| 79 | - | |
| 80 | -}; | |
| 81 | - | |
| 82 | -/** | |
| 83 | - * 处理css | |
| 84 | - * @type {any} | |
| 85 | - */ | |
| 86 | -var handleCss = function ($, cb) { | |
| 87 | - var cssArray = $('link[rel=stylesheet][merge]'); | |
| 88 | - //按 merge 值分组 | |
| 89 | - var cssMap = {}, mergeName; | |
| 90 | - for (var i = 0, c; c = cssArray[i++];) { | |
| 91 | - mergeName = $(c).attr('merge'); | |
| 92 | - if (!cssMap[mergeName]) | |
| 93 | - cssMap[mergeName] = []; | |
| 94 | - cssMap[mergeName].push(dest + _static + $(c).attr('href')); | |
| 95 | - //remove | |
| 96 | - $(c).remove(); | |
| 97 | - } | |
| 98 | - //按 merge 合并压缩css | |
| 99 | - var ks = get_keys(cssMap), index = 0; | |
| 100 | - (function () { | |
| 101 | - if (index >= ks.length) { | |
| 102 | - cb && cb(); | |
| 103 | - return; | |
| 104 | - } | |
| 105 | - var k = ks[index]; | |
| 106 | - index++; | |
| 107 | - var f = arguments.callee; | |
| 108 | - //合并css | |
| 109 | - new CleanCSS().minify(cssMap[k], function (error, out) { | |
| 110 | - var data = out.styles; | |
| 111 | - var fName = (k + '_' + md5(data)) + '.css'; | |
| 112 | - //写入 assets css 目录下 | |
| 113 | - var descFile = dest + _static + sp + 'real_control_v2'+sp+'assets'+sp+'css' + sp + fName; | |
| 114 | - fs.open(descFile, 'a', function (err, fd) { | |
| 115 | - | |
| 116 | - fs.write(fd, data, function () { | |
| 117 | - var tag = '<link rel="stylesheet" href="/real_control_v2/assets/css/' + fName + '"/>'; | |
| 118 | - if ($('head').length > 0) | |
| 119 | - $('head').append(tag); | |
| 120 | - else { | |
| 121 | - if($('link').length > 0) | |
| 122 | - $('link').last().before(tag); | |
| 123 | - else | |
| 124 | - $('div').first().before(tag); | |
| 125 | - } | |
| 126 | - console.log(k + ' css', '结束,下一个'); | |
| 127 | - f(); | |
| 128 | - }); | |
| 129 | - }); | |
| 130 | - }); | |
| 131 | - })(); | |
| 132 | -}; | |
| 133 | - | |
| 134 | -/** | |
| 135 | - * 处理js | |
| 136 | - */ | |
| 137 | -var handleJs = function ($, file, cb) { | |
| 138 | - var scriptArray = $('script[merge]'); | |
| 139 | - //按 merge 值分组 | |
| 140 | - var jsMap = {}, mergeName; | |
| 141 | - for (var i = 0, s; s = scriptArray[i++];) { | |
| 142 | - mergeName = $(s).attr('merge'); | |
| 143 | - if (!jsMap[mergeName]) | |
| 144 | - jsMap[mergeName] = []; | |
| 145 | - jsMap[mergeName].push(dest + _static + $(s).attr('src')); | |
| 146 | - //remove | |
| 147 | - $(s).remove(); | |
| 148 | - } | |
| 149 | - | |
| 150 | - //按 merge 合并压缩js | |
| 151 | - var ks = get_keys(jsMap), index = 0; | |
| 152 | - (function () { | |
| 153 | - if (index >= ks.length) { | |
| 154 | - write(file, $.html()); | |
| 155 | - console.log(file + ' 结束'.green); | |
| 156 | - cb && cb(); | |
| 157 | - return; | |
| 158 | - } | |
| 159 | - var k = ks[index]; | |
| 160 | - index++; | |
| 161 | - var f = arguments.callee; | |
| 162 | - //合并压缩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(); | |
| 180 | - }); | |
| 181 | - }); | |
| 182 | - })(); | |
| 183 | -}; | |
| 184 | - | |
| 185 | -var get_keys = function (json) { | |
| 186 | - var array = []; | |
| 187 | - for (var key in json) { | |
| 188 | - array.push(key); | |
| 189 | - } | |
| 190 | - return array; | |
| 191 | -}; | |
| 192 | - | |
| 193 | -function md5(text) { | |
| 194 | - return crypto.createHash("md5").update(text).digest("hex"); | |
| 195 | -} | |
| 196 | - | |
| 197 | -function write(file, text) { | |
| 198 | - fs.writeFile(file, text, function (err) { | |
| 199 | - if (err) { | |
| 200 | - console.log(err.toString().red); | |
| 201 | - process.exit(); | |
| 202 | - } | |
| 203 | - console.log(file.green); | |
| 204 | - }); | |
| 205 | -} | |
| 206 | - | |
| 1 | +/** | |
| 2 | + * 处理线调文件 | |
| 3 | + */ | |
| 4 | +var fs = require('fs') | |
| 5 | + , cheerio = require('cheerio') | |
| 6 | + , minifier = require('./minifier') | |
| 7 | + , crypto = require("crypto") | |
| 8 | + , CleanCSS = require('clean-css'); | |
| 9 | +; | |
| 10 | + | |
| 11 | +var platform = process.platform; | |
| 12 | +var iswin = platform=='win32'; | |
| 13 | +var sp = platform=='win32'?'\\':'/'; | |
| 14 | +//不参与的目录 | |
| 15 | +var pName = 'bsth_control' | |
| 16 | + , path = process.cwd() | |
| 17 | + //根目录 | |
| 18 | + , root = path.substr(0, path.indexOf(sp + 'src'+sp+'main')) | |
| 19 | + , workspace = root.substr(0, root.lastIndexOf(sp + pName)) | |
| 20 | + //临时目录 | |
| 21 | + , dest = (workspace + sp + pName + '@fatso_copy')//.replace(/\//g, '\\') | |
| 22 | + , _static = sp + 'src'+sp+'main'+sp+'resources'+sp+'static'; | |
| 23 | + | |
| 24 | + | |
| 25 | +var mainFile = dest + _static + sp + 'real_control_v2'+sp+'main.html'; | |
| 26 | +var aloneMapWrapFile = dest + _static + sp + 'real_control_v2'+sp+'alone_page'+sp+'map'+sp+'alone_wrap.html'; | |
| 27 | +var aloneHomeWrapFile = dest + _static + sp + 'real_control_v2'+sp+'alone_page'+sp+'home'+sp+'home_wrap.html'; | |
| 28 | +var mapFile = dest + _static + sp + 'real_control_v2'+sp+'mapmonitor'+sp+'real.html'; | |
| 29 | +var realCtl = { | |
| 30 | + /** | |
| 31 | + * 处理线调首页 | |
| 32 | + */ | |
| 33 | + handleMain: function (cb) { | |
| 34 | + //处理main.html | |
| 35 | + var data = fs.readFileSync(mainFile, 'utf-8'), | |
| 36 | + $ = cheerio.load(data); | |
| 37 | + handleCss($, function () { | |
| 38 | + handleJs($, mainFile, cb); | |
| 39 | + }); | |
| 40 | + | |
| 41 | + | |
| 42 | + }, | |
| 43 | + /** | |
| 44 | + * 处理地图模块 | |
| 45 | + * @param cb | |
| 46 | + */ | |
| 47 | + handleMap: function (cb) { | |
| 48 | + //读取文件 | |
| 49 | + var data = fs.readFileSync(mapFile, 'utf-8') | |
| 50 | + , $ = cheerio.load(data); | |
| 51 | + | |
| 52 | + handleCss($, function () { | |
| 53 | + handleJs($, mapFile, cb); | |
| 54 | + }); | |
| 55 | + }, | |
| 56 | + /** | |
| 57 | + * 处理单屏地图页面 | |
| 58 | + * @param cb | |
| 59 | + */ | |
| 60 | + handleAlonePage: function (cb) { | |
| 61 | + var data = fs.readFileSync(aloneMapWrapFile, 'utf-8'); | |
| 62 | + var $ = cheerio.load(data); | |
| 63 | + handleCss($, function () { | |
| 64 | + handleJs($, aloneMapWrapFile, cb); | |
| 65 | + }); | |
| 66 | + }, | |
| 67 | + /** | |
| 68 | + * 处理单屏主页 | |
| 69 | + * @param cb | |
| 70 | + */ | |
| 71 | + handleAloneHomePage: function (cb) { | |
| 72 | + var data = fs.readFileSync(aloneHomeWrapFile, 'utf-8'); | |
| 73 | + var $ = cheerio.load(data); | |
| 74 | + handleCss($, function () { | |
| 75 | + handleJs($, aloneHomeWrapFile, cb); | |
| 76 | + }); | |
| 77 | + } | |
| 78 | + | |
| 79 | +}; | |
| 80 | + | |
| 81 | +/** | |
| 82 | + * 处理css | |
| 83 | + * @type {any} | |
| 84 | + */ | |
| 85 | +var handleCss = function ($, cb) { | |
| 86 | + var cssArray = $('link[rel=stylesheet][merge]'); | |
| 87 | + //按 merge 值分组 | |
| 88 | + var cssMap = {}, mergeName; | |
| 89 | + for (var i = 0, c; c = cssArray[i++];) { | |
| 90 | + mergeName = $(c).attr('merge'); | |
| 91 | + if (!cssMap[mergeName]) | |
| 92 | + cssMap[mergeName] = []; | |
| 93 | + cssMap[mergeName].push(dest + _static + $(c).attr('href')); | |
| 94 | + //remove | |
| 95 | + $(c).remove(); | |
| 96 | + } | |
| 97 | + //按 merge 合并压缩css | |
| 98 | + var ks = get_keys(cssMap), index = 0; | |
| 99 | + (function () { | |
| 100 | + if (index >= ks.length) { | |
| 101 | + cb && cb(); | |
| 102 | + return; | |
| 103 | + } | |
| 104 | + var k = ks[index]; | |
| 105 | + index++; | |
| 106 | + var f = arguments.callee; | |
| 107 | + //合并css | |
| 108 | + new CleanCSS().minify(cssMap[k], function (error, out) { | |
| 109 | + var data = out.styles; | |
| 110 | + var fName = (k + '_' + md5(data)) + '.css'; | |
| 111 | + //写入 assets css 目录下 | |
| 112 | + var descFile = dest + _static + sp + 'real_control_v2'+sp+'assets'+sp+'css' + sp + fName; | |
| 113 | + fs.open(descFile, 'a', function (err, fd) { | |
| 114 | + | |
| 115 | + fs.write(fd, data, function () { | |
| 116 | + var tag = '<link rel="stylesheet" href="/real_control_v2/assets/css/' + fName + '"/>'; | |
| 117 | + if ($('head').length > 0) | |
| 118 | + $('head').append(tag); | |
| 119 | + else { | |
| 120 | + if($('link').length > 0) | |
| 121 | + $('link').last().before(tag); | |
| 122 | + else | |
| 123 | + $('div').first().before(tag); | |
| 124 | + } | |
| 125 | + console.log(k + ' css', '结束,下一个'); | |
| 126 | + f(); | |
| 127 | + }); | |
| 128 | + }); | |
| 129 | + }); | |
| 130 | + })(); | |
| 131 | +}; | |
| 132 | + | |
| 133 | +/** | |
| 134 | + * 处理js | |
| 135 | + */ | |
| 136 | +var handleJs = function ($, file, cb) { | |
| 137 | + var scriptArray = $('script[merge]'); | |
| 138 | + //按 merge 值分组 | |
| 139 | + var jsMap = {}, mergeName; | |
| 140 | + for (var i = 0, s; s = scriptArray[i++];) { | |
| 141 | + mergeName = $(s).attr('merge'); | |
| 142 | + if (!jsMap[mergeName]) | |
| 143 | + jsMap[mergeName] = []; | |
| 144 | + jsMap[mergeName].push(dest + _static + $(s).attr('src')); | |
| 145 | + //remove | |
| 146 | + $(s).remove(); | |
| 147 | + } | |
| 148 | + | |
| 149 | + //按 merge 合并压缩js | |
| 150 | + var ks = get_keys(jsMap), index = 0; | |
| 151 | + (function () { | |
| 152 | + if (index >= ks.length) { | |
| 153 | + write(file, $.html()); | |
| 154 | + console.log(file + ' 结束'); // 移除.green调用 | |
| 155 | + cb && cb(); | |
| 156 | + return; | |
| 157 | + } | |
| 158 | + var k = ks[index]; | |
| 159 | + index++; | |
| 160 | + var f = arguments.callee; | |
| 161 | + //合并压缩js | |
| 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 | + }); | |
| 189 | + }); | |
| 190 | + } catch (e) { | |
| 191 | + console.error('合并压缩错误:', e); | |
| 192 | + process.exit(); | |
| 193 | + } | |
| 194 | + })(); | |
| 195 | +}; | |
| 196 | + | |
| 197 | +var get_keys = function (json) { | |
| 198 | + var array = []; | |
| 199 | + for (var key in json) { | |
| 200 | + array.push(key); | |
| 201 | + } | |
| 202 | + return array; | |
| 203 | +}; | |
| 204 | + | |
| 205 | +function md5(text) { | |
| 206 | + return crypto.createHash("md5").update(text).digest("hex"); | |
| 207 | +} | |
| 208 | + | |
| 209 | +function write(file, text) { | |
| 210 | + fs.writeFile(file, text, function (err) { | |
| 211 | + if (err) { | |
| 212 | + console.log(err.toString()); // 移除.red调用 | |
| 213 | + process.exit(); | |
| 214 | + } | |
| 215 | + console.log(file); // 移除.green调用 | |
| 216 | + }); | |
| 217 | +} | |
| 218 | + | |
| 207 | 219 | module.exports = realCtl; |
| 208 | 220 | \ No newline at end of file | ... | ... |
src/main/resources/fatso/minifier.js
| 1 | -/** | |
| 2 | - * @author PanZhao | |
| 3 | - * @date 2016年3月17日 下午12:44:06 | |
| 4 | - */ | |
| 5 | -var fs = require('fs'); | |
| 6 | -var UglifyJS = require("uglify-js"); | |
| 7 | - | |
| 8 | -var platform = process.platform; | |
| 9 | -var iswin = platform=='win32'; | |
| 10 | -var separator = platform=='win32'?'\\':'/'; | |
| 11 | -var minifier = { | |
| 12 | - | |
| 13 | - mergeAndMini: function(fileArray,scriptString, root, file){ | |
| 14 | - var len = fileArray.length; | |
| 15 | - for(var i = 0; i < len; i ++){ | |
| 16 | - fileArray[i] = root + fileArray[i].split('/').join(separator); | |
| 17 | - } | |
| 18 | - | |
| 19 | - var result, indoorRs; | |
| 20 | - | |
| 21 | - try { | |
| 22 | - if(fileArray && len > 0) | |
| 23 | - result = UglifyJS.minify(fileArray); | |
| 24 | - | |
| 25 | - if(scriptString) | |
| 26 | - indoorRs = UglifyJS.minify(scriptString, {fromString: true}); | |
| 27 | - } catch (e) { | |
| 28 | - console.log(e); | |
| 29 | - console.log(file.red); | |
| 30 | - process.exit(); | |
| 31 | - } | |
| 32 | - | |
| 33 | - return {outside: result?result.code:'', inside: indoorRs?indoorRs.code:''}; | |
| 34 | - }, | |
| 35 | - mini: function(file){ | |
| 36 | - return UglifyJS.minify(file).code; | |
| 37 | - } | |
| 38 | -} | |
| 39 | - | |
| 1 | +var fs = require('fs'); | |
| 2 | +var Terser = require('terser'); | |
| 3 | + | |
| 4 | +var platform = process.platform; | |
| 5 | +var iswin = platform=='win32'; | |
| 6 | +var separator = platform=='win32'?'\\':'/'; | |
| 7 | +var minifier = { | |
| 8 | + | |
| 9 | + mergeAndMini: function(fileArray, scriptString, root, file) { | |
| 10 | + var len = fileArray.length; | |
| 11 | + for(var i = 0; i < len; i ++){ | |
| 12 | + fileArray[i] = root + fileArray[i].split('/').join(separator); | |
| 13 | + } | |
| 14 | + | |
| 15 | + var result, indoorRs; | |
| 16 | + | |
| 17 | + try { | |
| 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 | + } | |
| 35 | + } catch (e) { | |
| 36 | + console.log(e); | |
| 37 | + console.log(file); // 移除.red调用,除非有chalk等库 | |
| 38 | + process.exit(); | |
| 39 | + } | |
| 40 | + | |
| 41 | + return {outside: result && !result.error ? result.code : '', inside: indoorRs && !indoorRs.error ? indoorRs.code : ''}; | |
| 42 | + }, | |
| 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 | + } | |
| 60 | + } | |
| 61 | +}; | |
| 62 | + | |
| 40 | 63 | module.exports = minifier; |
| 41 | 64 | \ No newline at end of file | ... | ... |
src/main/resources/fatso/package.json
| 1 | -{ | |
| 2 | - "name": "fatso", | |
| 3 | - "version": "1.0.0", | |
| 4 | - "description": "子页面js检查、合并、压缩等处理", | |
| 5 | - "main": "start.js", | |
| 6 | - "scripts": { | |
| 7 | - "test": "echo \"Error: no test specified\" && exit 1" | |
| 8 | - }, | |
| 9 | - "author": "panzhaov5", | |
| 10 | - "license": "ISC", | |
| 11 | - "dependencies": { | |
| 12 | - "cheerio": "^0.20.0", | |
| 13 | - "clean-css": "^4.0.12", | |
| 14 | - "colors": "^1.3.3", | |
| 15 | - "eventproxy": "^0.3.4", | |
| 16 | - "uglify-js": "^2.6.2" | |
| 17 | - } | |
| 18 | -} | |
| 1 | +{ | |
| 2 | + "name": "fatso", | |
| 3 | + "version": "1.0.0", | |
| 4 | + "description": "子页面js检查、合并、压缩等处理", | |
| 5 | + "main": "start.js", | |
| 6 | + "scripts": { | |
| 7 | + "test": "echo \"Error: no test specified\" && exit 1" | |
| 8 | + }, | |
| 9 | + "author": "panzhaov5", | |
| 10 | + "license": "ISC", | |
| 11 | + "dependencies": { | |
| 12 | + "cheerio": "^0.20.0", | |
| 13 | + "clean-css": "^4.0.12", | |
| 14 | + "colors": "^1.3.3", | |
| 15 | + "eventproxy": "^0.3.4", | |
| 16 | + "terser": "^5.44.0", | |
| 17 | + "uglify-js": "^2.6.2" | |
| 18 | + } | |
| 19 | +} | ... | ... |
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', 'kl', 'dsm'] | |
| 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', 'kl', 'dsm'] | |
| 20 | 20 | , ep = new EventProxy() |
| 21 | 21 | , pName = 'bsth_control' |
| 22 | 22 | , path = process.cwd() |
| ... | ... | @@ -134,9 +134,9 @@ ep.tail('handle-fragment', function (file) { |
| 134 | 134 | handleJavascript(file, function (mini, $) { |
| 135 | 135 | var jsMini; |
| 136 | 136 | if (mini.inside) |
| 137 | - jsMini = '(function(){' + mini.inside + '\n' + mini.outside + '})();'; | |
| 137 | + jsMini = '(function(){'+ mini.inside + '\n' + mini.outside + '})();'; | |
| 138 | 138 | else |
| 139 | - jsMini = '(function(){' + mini.outside + '})();'; | |
| 139 | + jsMini = '(function(){'+ mini.outside + '})();'; | |
| 140 | 140 | |
| 141 | 141 | write(file, $.html() + '<script>' + jsMini + '</script>'); |
| 142 | 142 | }); | ... | ... |
src/main/resources/message_en_US.properties
| ... | ... | @@ -2629,7 +2629,7 @@ txt-2628=Acquisition success |
| 2629 | 2629 | txt-2629= |
| 2630 | 2630 | txt-2630=Consumption |
| 2631 | 2631 | txt-2631=Execute road sign |
| 2632 | -txt-2632=Ooperation or not? | |
| 2632 | +txt-2632=Operational or not? | |
| 2633 | 2633 | txt-2633=Time type |
| 2634 | 2634 | txt-2634=Template type |
| 2635 | 2635 | txt-2635=Bad shift reason |
| ... | ... | @@ -3034,7 +3034,7 @@ txt-3033=Start date |
| 3034 | 3034 | txt-3034=End date |
| 3035 | 3035 | txt-3035=Report management |
| 3036 | 3036 | txt-3036=Maintenance report |
| 3037 | -txt-3037=Change people and cars | |
| 3037 | +txt-3037=Change driver and vehicle | |
| 3038 | 3038 | txt-3038=Switch the street signs |
| 3039 | 3039 | txt-3039=Calculate complete |
| 3040 | 3040 | txt-3040=Equipment parameter |
| ... | ... | @@ -4131,7 +4131,7 @@ txt-4130=Mode |
| 4131 | 4131 | txt-4131=Action |
| 4132 | 4132 | txt-4132=Online |
| 4133 | 4133 | txt-4133=Search |
| 4134 | -txt-4134=fter | |
| 4134 | +txt-4134=After | |
| 4135 | 4135 | txt-4135=Out of sale |
| 4136 | 4136 | txt-4136=Radius |
| 4137 | 4137 | txt-4137=Unit | ... | ... |
src/main/resources/static/pages/base/stationroute/js/routes-operation.js
| ... | ... | @@ -1429,7 +1429,7 @@ var RoutesOperation = (function () { |
| 1429 | 1429 | if($($("#versions").find("option:selected")[0]).attr("status") > 0){ |
| 1430 | 1430 | htm += '<button class="info_win_btn" id="editStation" onclick="RoutesOperation.editSection(' + sectionRoute.id +','+dir+ ')">' + i18n('txt-4028') + '</button>' + |
| 1431 | 1431 | '<button class="info_win_btn" id="addBetweenStationRoad" onclick="RoutesOperation.destroySection('+ sectionRoute.id + ','+sectionRoute.line.id+','+sectionRoute.directions+')">' + i18n('txt-4211') + '</button>' + |
| 1432 | - '<button class="info_win_btn" id="addSectionAfter" onclick="RoutesOperation.addSectionAfter('+sectionRoute.id+')">' + i18n('txt-4361') + '(' + i18n('txt-4134') + ')</button>' + | |
| 1432 | + '<button class="info_win_btn" id="addSectionAfter" onclick="RoutesOperation.addSectionAfter('+sectionRoute.id+')">' + i18n('txt-4361') + '</button>' + | |
| 1433 | 1433 | '</div>'; |
| 1434 | 1434 | } |
| 1435 | 1435 | |
| ... | ... | @@ -1715,7 +1715,7 @@ var RoutesOperation = (function () { |
| 1715 | 1715 | if($($("#versions").find("option:selected")[0]).attr("status") > 0){ |
| 1716 | 1716 | htm += '<button class="info_win_btn" id="editStation" onclick="RoutesOperation.editSection_inout(' + sectionRoute.id +','+dir+ ')">' + i18n('txt-4028') + '</button>' + |
| 1717 | 1717 | '<button class="info_win_btn" id="addBetweenStationRoad" onclick="RoutesOperation.destroySection_inout('+ sectionRoute.id + ','+sectionRoute.line.id+','+sectionRoute.directions+')">' + i18n('txt-4211') + '</button>' + |
| 1718 | - '<button class="info_win_btn" id="addSectionAfter" onclick="RoutesOperation.addSectionAfter_inout('+sectionRoute.id+')">' + i18n('txt-4361') + '(' + i18n('txt-4134') + ')</button>' + | |
| 1718 | + '<button class="info_win_btn" id="addSectionAfter" onclick="RoutesOperation.addSectionAfter_inout('+sectionRoute.id+')">' + i18n('txt-4361') + '</button>' + | |
| 1719 | 1719 | '</div>'; |
| 1720 | 1720 | } |
| 1721 | 1721 | ... | ... |