| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | 
							- 'use strict';
 
- /**
 
-  *
 
-  *
 
-  * @author Mai
 
-  * @date
 
-  * @version
 
-  */
 
- const crypto = require('crypto');
 
- const Uglyfy = require('uglify-es');
 
- const fs = require('fs');
 
- const JsFiles = require('./config/web');
 
- const version = require('./config/config.default')({ baseDir: __dirname + '/app', root: __dirname, name: 'calc' }).version;
 
- console.log(version);
 
- const savePath = __dirname + '/app' + JsFiles.webPath;
 
- const cachePath = __dirname + '/app' + JsFiles.cachePath;
 
- const cacheInfoFile = cachePath + 'cache.json';
 
- let cacheInfo = [];
 
- const newCacheInfo = [];
 
- if (!fs.existsSync(savePath)) fs.mkdirSync(savePath);
 
- if (!fs.existsSync(cachePath)) fs.mkdirSync(cachePath);
 
- const loadCache = function () {
 
-     if (fs.existsSync(cacheInfoFile)) {
 
-         cacheInfo = require(cacheInfoFile);
 
-     }
 
- };
 
- const getMd5 = function (text) {
 
-     const hash = crypto.createHash('md5');
 
-     hash.update(text);
 
-     return hash.digest('hex');
 
- };
 
- const findCache = function (file) {
 
-     let cache = cacheInfo.find(x => { return x.file === file; });
 
-     if (!cache) {
 
-         cache = { file: file };
 
-         cacheInfo.push(cache);
 
-     }
 
-     if (!cache.new_md5) {
 
-         cache.text = fs.readFileSync(__dirname + '/app' + file, 'utf8');
 
-         cache.new_md5 = getMd5(cache.text);
 
-     }
 
-     return cache;
 
- };
 
- const checkUseCache = function(files) {
 
-     for (const f of files) {
 
-         const cache = findCache(f);
 
-         if (cache.md5 !== cache.new_md5) return false;
 
-     }
 
-     return true;
 
- };
 
- const mergeAndMin = function () {
 
-     console.time('min');
 
-     loadCache();
 
-     for (const c in JsFiles.controller) {
 
-         const controller = JsFiles.controller[c];
 
-         for (const a in controller) {
 
-             const action = controller[a];
 
-             if (action.mergeFiles && action.mergeFile.length > 0) {
 
-                 const minFileName = savePath + action.mergeFile + '.' + version + '.min.js';
 
-                 const cacheFileName = cachePath + action.mergeFile + '.cache.js';
 
-                 const useCache = checkUseCache(action.mergeFiles);
 
-                 if (useCache && fs.existsSync(cacheFileName)) {
 
-                     fs.copyFileSync(cacheFileName, minFileName);
 
-                 } else {
 
-                     let code = '';
 
-                     for (const f of action.mergeFiles) {
 
-                         const cache = findCache(f);
 
-                         code = code + cache.text;
 
-                     }
 
-                     fs.writeFileSync(minFileName, Uglyfy.minify(code, { mangle: true }).code);
 
-                     fs.copyFileSync(minFileName, cacheFileName);
 
-                 }
 
-                 console.log(minFileName, `cache: ${useCache}`);
 
-             }
 
-         }
 
-     }
 
-     let needMinCode = '';
 
-     for (const nm of JsFiles.needMin) {
 
-         needMinCode = needMinCode + fs.readFileSync(__dirname + '/app' + nm, 'utf8');
 
-     }
 
-     const needMinFileName = __dirname + '/app/public/js/web/global.' + version + '.min.js';
 
-     fs.writeFileSync(needMinFileName, Uglyfy.minify(needMinCode, { mangle: true }).code);
 
-     const needVersionCss = ['/public/css/main'];
 
-     for (const nvc of needVersionCss) {
 
-         fs.copyFileSync(__dirname + '/app' + nvc + '.css', __dirname + '/app' + nvc + '.' + version + '.css');
 
-     }
 
-     fs.writeFileSync(cacheInfoFile, JSON.stringify(cacheInfo.map(x => { return { file: x.file, md5: x.new_md5 || x.md5 }; })));
 
-     console.timeEnd('min');
 
- };
 
- mergeAndMin();
 
 
  |