diff --git a/cloudcmd.js b/cloudcmd.js index 31783613..e204f201 100644 --- a/cloudcmd.js +++ b/cloudcmd.js @@ -23,6 +23,7 @@ * Win32 should be backslashes */ DIR = main.DIR; + console.log(main); readConfig(); Server.start(Config, { appcache : appCacheProcessing, @@ -49,7 +50,7 @@ * минифицированый */ if(Minify._allowed.css){ - var lPath = '/' + srv.Minify.MinFolder.replace(DIR, ''); + var lPath = '/' + Minify.MinFolder.replace(DIR, ''); lReplace_s = ''; lData = Util.removeStr(lData, lReplace_s) .replace('/css/style.css', lPath + 'all.min.css'); @@ -99,7 +100,6 @@ lResetCSS = DIR + 'css/reset.css', lIndex = DIR + 'html/index.html', - lMinify = Server.CloudServer.Minify, lCSSOptions = { img : pAllowed.img, merge : true @@ -109,8 +109,8 @@ lOptimizeParams.push(LIBDIR + 'client.js'); if (pAllowed.html) - //lOptimizeParams.push(lIndex); - lOptimizeParams = lIndex; + lOptimizeParams.push(lIndex); + //lOptimizeParams = lIndex; if (pAllowed.css) { var lStyles = [{}, {}]; @@ -121,8 +121,10 @@ lOptimizeParams.push(lStyles[1]); } - //if (lOptimizeParams.length) - //lMinify.optimize(lOptimizeParams); + if (lOptimizeParams.length) + Minify.optimize(lOptimizeParams, { + force:true + }); } /** diff --git a/json/config.json b/json/config.json index cab6133b..69ce0eb2 100644 --- a/json/config.json +++ b/json/config.json @@ -1,12 +1,11 @@ { "api_url" : "/api/v1", "appcache" : false, - "cache" : false, "minification" : { "js" : true, - "css" : false, - "html" : false, - "img" : false + "css" : true, + "html" : true, + "img" : true }, "logs" : false, "show_keys_panel" : true, diff --git a/lib/server.js b/lib/server.js index 80f2ff23..e588f64c 100644 --- a/lib/server.js +++ b/lib/server.js @@ -75,15 +75,12 @@ DIR = main.Dir, LIBDIR = main.LIBDIR, SRVDIR = main.SRVDIR, - + /* модуль для работы с путями*/ Path = main.path, Fs = main.fs, /* модуль для работы с файловой системой*/ Querystring = main.querystring, - /* Обьект для работы с кэшем */ - Cache = main.cache, - Minify = main.minify, AppCache = main.appcache, Socket = main.socket, @@ -103,9 +100,6 @@ var lConfig = this.Config, lMinifyAllowed = lConfig.minification; - /* Переменная в которой храниться кэш*/ - Cache.setAllowed(lConfig.cache); - /* Change default parameters of * js/css/html minification */ @@ -260,72 +254,28 @@ !Util.isContainStr(lPath, lNoJS_s) && !Util.strCmp(lPath, '/') && !Util.strCmp(lQuery, 'json') ) { - - /* если имена файлов проекта - загружаем их * - * убираем слеш и читаем файл с текущец директории */ - - /* добавляем текующий каталог к пути */ - var lName = '.' + lPath; - Util.log('reading ' + lName); - - /* watching is file changed */ - if(lConfig.appcache) - CloudServer.AppCache.watch(lName); - - /* сохраняем указатель на response и имя */ - CloudServer.Responses[lName] = pRes; - - /* saving status OK for current file */ - CloudServer.Statuses[lName] = OK; - - /* Берём значение из кэша - * сжатый файл - если gzip-поддерживаеться браузером - * не сжатый - в обратном случае - */ - var lFileData = Cache.get( - CloudServer.Gzip?(lName+'_gzip') : lName); - - Util.log(Path.basename(lName)); - - /* object thet contains information - * about the source of file data - */ - var lReadFileFunc_f = CloudServer.getReadFileFunc(lName), - /* если там что-то есть передаём данные в функцию readFile */ - lResult = lFileData; - - if(lResult){ - Util.log(lName + ' readed from cache'); - - /* передаём данные с кэша, - * если gzip включен - сжатые - * в обратном случае - несжатые - */ - lReadFileFunc_f(undefined, lFileData, {'cache': true}); - } - /* if file not in one of caches - * and minimizing setted then minimize it - */ - else if(lName.indexOf('min') < 0 && Minify){ - var lMin_o = lConfig.minification, - - lCheck_f = function(pExt){ - return Util.checkExtension(lName,pExt); - }; - - lResult = (lCheck_f('js') && lMin_o.js) || - (lCheck_f('css') && lMin_o.css) || - (lCheck_f('html') && lMin_o.html); - - if(lResult) - lResult = Minify.optimize(lName, { - request : pReq, - response : pRes, - callback : function(pFileData){ - lReadFileFunc_f(undefined, pFileData, false); - } - }); - } + + /* если имена файлов проекта - загружаем их * + * убираем слеш и читаем файл с текущец директории */ + + /* добавляем текующий каталог к пути */ + var lName = '.' + lPath; + Util.log('reading ' + lName); + + /* watching is file changed */ + if(lConfig.appcache) + AppCache.watch(lName); + + Util.log(Path.basename(lName)); + + var lExt = Util.getExtension(lName), + lResult = lExt === '.js' || lExt === '.css' || lExt === '.html'; + + if(lResult) + lResult = Minify.optimize(lName, { + request : pReq, + response : pRes + }); if(!lResult) main.sendFile({ @@ -379,7 +329,6 @@ DirPath = lPath; CloudServer.Responses[DirPath] = pRes; - CloudServer.Statuses[DirPath] = OK; /* saving query of current file */ @@ -542,20 +491,9 @@ lList = '' + ''; - /* пробуем достать данные из кэша - * с жатием или без, взависимости - * от настроек - */ - var lFileData = Cache.get(CloudServer.INDEX); - /* если их нет там - вычитываем из файла*/ - if(!lFileData) { - Fs.readFile(CloudServer.INDEX, - CloudServer.indexReaded(lList)); - }else { - var lReaded_f = CloudServer.indexReaded(lList); - lReaded_f(false, lFileData); - } - }else{ + Fs.readFile(CloudServer.INDEX, CloudServer.indexReaded(lList)); + + }else{ DirPath = DirPath.substr(DirPath, DirPath.lastIndexOf('/') ); var lQuyery = CloudServer.Queries[DirPath]; @@ -593,9 +531,6 @@ var lSrv = CloudServer, lIndexName = lSrv.INDEX; - /* и сохраняем в кэш */ - Cache.set(lIndexName, pIndex); - pIndex = pIndex.toString(); @@ -638,34 +573,18 @@ /* * @pError - ошибка * @pData - данные - * @pFromCache_o - прочитано с файла, * или из одного из кешей - * Пример {cache: false} */ - var lReadFile = function(pError, pData, pFromCache_o){ + var lReadFile = function(pError, pData){ var lSrv = CloudServer; if (!pError){ Util.log('file ' + pName + ' readed'); - /* берём из кэша данные файла - * если их нет в кэше - - * сохраняем - */ - if(pFromCache_o && !pFromCache_o.cache && - lSrv.Cache.isAllowed) - lSrv.Cache.set(pName, pData); - - /* если кэш есть - * сохраняем его в переменную - * которая до этого будет пустая - * по скольку мы будем вызывать этот метод - * сами, ведь файл уже вычитан - */ var lQuery = lSrv.Queries[pName], lHeader = main.generateHeaders(pName, lSrv.Gzip, lQuery); /* если браузер поддерживает gzip-сжатие - сжимаем данные*/ - if( lSrv.Gzip && !(pFromCache_o && pFromCache_o.cache) ) + if( lSrv.Gzip ) /* сжимаем содержимое */ Zlib.gzip(pData,lSrv.getGzipDataFunc(lHeader, pName)); else @@ -695,19 +614,8 @@ */ CloudServer.getGzipDataFunc = function(pHeader, pName){ return function(error, pResult){ - if(!error){ - /* отправляем сжатые данные - * вместе с заголовком - * если установлена работа с кэшем - * сохраняем сжатые данные - */ - if(Cache.isAllowed){ - /* устанавливаем кєш */ - Util.log(pName+' gziped'); - Cache.set(pName+'_gzip', pResult); - } + if(!error) CloudServer.sendResponse(pHeader, pResult, pName); - } else{ Util.log(error); CloudServer.sendResponse(pHeader, error); diff --git a/lib/server/auth.js b/lib/server/auth.js index d9132612..02b03f54 100644 --- a/lib/server/auth.js +++ b/lib/server/auth.js @@ -1,6 +1,6 @@ /* https://github.com/prose/gatekeeper */ (function(){ - "use strict"; + 'use strict'; if(!global.cloudcmd) return console.log( diff --git a/lib/server/main.js b/lib/server/main.js index 649aaffb..af9d5906 100644 --- a/lib/server/main.js +++ b/lib/server/main.js @@ -93,13 +93,13 @@ exports.rest = srvrequire('rest').api, exports.socket = srvrequire('socket'), exports.update = srvrequire('update'), + exports.ischanged = srvrequire('ischanged'); exports.minify = srvrequire('minify').Minify; /* * second initializing after all modules load, so global var is * totally filled of all information that should know all modules */ global.cloudcmd.main = exports; - /** * function do safe require of needed module * @param {Strin} pSrc diff --git a/lib/server/minify.js b/lib/server/minify.js index 477c407c..2f117471 100644 --- a/lib/server/minify.js +++ b/lib/server/minify.js @@ -1,14 +1,29 @@ -/* Обьект для сжатия скриптов и стилей по умолчанию - сжимаються */ +/* Обьект для сжатия скриптов и стилей */ (function(){ - "use strict"; + 'use strict'; - var main = global.cloudcmd.main, - DIR = main.DIR, - LIBDIR = main.LIBDIR, - HTMLDIR = main.HTMLDIR, - Util = main.util, - Minify = main.require('minify'); + if(!global.cloudcmd) + return console.log( + '# minify.js' + '\n' + + '# -----------' + '\n' + + '# Module is part of Cloud Commander,' + '\n' + + '# used for work with minification.' + '\n' + + '# If you wont to see at work set minify' + '\n' + + '# parameters in config.json or environment' + '\n' + + '# and start cloudcmd.js' + '\n' + + '# http://coderaiser.github.com/cloudcmd' + '\n'); + + var main = global.cloudcmd.main, + DIR = main.DIR, + LIBDIR = main.LIBDIR, + HTMLDIR = main.HTMLDIR, + Util = main.util, + Minify = main.require('minify'), + IsChanged = main.ischanged, + + COULD_NOT_MINIFY = 'Could not minify without minify module\n' + + 'npm i minify'; exports.Minify = { /* pathes to directories */ @@ -41,29 +56,32 @@ }), optimize: function(pName, pParams){ - var lResult; + var lRet; if(Minify){ if(!pParams) pParams = {}; - if(this.force) - pParams.force = this.force; + if( !Util.isObject(pName) ){ + pParams.name = Minify.getName(pName); + pParams.calback = function(){ + main.sendFile(pParams); + }; + } + + lRet = this._allowed.css || this._allowed.js || this._allowed.html; if(!this.MinFolder) this.MinFolder = Minify.MinFolder; - if(this._allowed.css || this._allowed.js || this._allowed.html){ - main.srvrequire("ischanged").isFileChanged(pName, false, function(pChanged){ + if(pParams.force) + Minify.optimize(pName, pParams); + else if(lRet) + IsChanged.isFileChanged(pName, false, function(pChanged){ if(pChanged) Minify.optimize(pName, pParams); - else{ - pParams.name = Minify.getName(pName); + else main.sendFile(pParams); - } }); - - lResult = true; - } } else{ this._allowed = { @@ -72,12 +90,10 @@ html : false }; - Util.log('Could not minify ' + - 'without minify module\n' + - 'npm i minify'); + Util.log(COULD_NOT_MINIFY); } - return lResult; + return lRet; }, /* minification folder name */ diff --git a/lib/util.js b/lib/util.js index 259cfcfd..2f4c31b9 100644 --- a/lib/util.js +++ b/lib/util.js @@ -538,6 +538,21 @@ Util = exports || {}; return lRet; }; + /** + * function gets file extension + * @param pFileName + * @return Ext + */ + Util.getExtension = function(pFileName){ + var lRet, lDot; + + if( Util.isString(pFileName) ) + lDot = pFileName.lastIndexOf('.'); + lRet = pFileName.substr(lDot); + + return lRet; + }; + /** * get values from Object Array name properties * or