UNPKG

rjs-optim

Version:
75 lines (65 loc) 2.06 kB
/* jshint forin:true, noarg:true, noempty:true, newcap:false, eqeqeq:true, loopfunc:true, bitwise:true, strict:true, undef:true, unused:true, curly:true, browser:true, indent:2, maxerr:50 */ /* global require, exports */ (function(){ "use strict"; var _ = require("underscore"); var path = require("path"); var Q = require("q"); var requirejs = require("requirejs"); // ロガー var logger = require( "./logger" ).get( "requirejs:" ); var logging_success = logger.success; var logging_error = logger.error; /** * requirejsのコンフィグを生成する * @param {Object} options 設定 */ exports.getConfig = function(options){ // default values if( _.isUndefined(options.minify) || _.isNull(options.minify) ){ options.minify = true; } var name = options.name; var baseUrl = options.baseUrl; var out = options.out; var minify = String(options.minify) === "true"; var ext = options.ext || ".js"; if( !out && options.outDir ){ out = path.join(options.outDir, name + ext); } var config = { baseUrl : baseUrl, name : name, out : out, almond : true, optimize : (minify ? "uglify2" : "none"), uglify2 : { warnings : true, mangle : true, output : { beautify : false }, compress : { sequences : false } } }; if( _.isObject(options) ){ _.extend( config, _.pick( options, "shim", "paths", "include", "preserveLicenseComments", "generateSourceMaps", "useSourceUrl" ) ); } return config; }; /** * 実際のoptimize処理 * @param {Object} config requirejsのコンフィグ */ exports.optimize = function(config){ var deferred = Q.defer(); try { requirejs.optimize( config, function(){ logging_success( config.name ); deferred.resolve(); }); } catch(e) { logging_error(e.message); deferred.reject(); } return deferred.promise; }; }());