gulp-crometrics
Version:
Predefined Gulp Tasks for CROmetrics (fork of gulp-clearhead)
40 lines (28 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _uglifyJs = require('uglify-js');
var _uglifyJs2 = _interopRequireDefault(_uglifyJs);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var concat = String.prototype.concat.bind('');
function optimizelify(code) {
var forceDirective = '/* _optimizely_evaluate=force */';
var jshint = {
start: '\n\/*jshint ignore:start*\/\n',
end: '\n\/*jshint ignore:end*\/'
};
var safeLoop = parseSafeLoop(code);
var regex = /\/\*\s?_optimizely_evaluate\=force\s?\*\/\n*/i;
var forceLoop = code.replace(regex, '').replace(safeLoop, '');
var uglified = _uglifyJs2.default.minify(forceLoop, { fromString: true });
return concat(forceDirective, jshint.start, uglified.code, jshint.end, safeLoop);
}
function parseSafeLoop(code) {
var regex = /\n\/\*\s?_optimizely_evaluate\=safe\s?\*\/([\S\s]{0,})/i;
var safeLoop = (code.match(regex) || [])[0] || '';
var begIdx = code.indexOf(safeLoop);
var endIdx = begIdx + safeLoop.indexOf('\n},{');
return code.substring(begIdx, endIdx);
}
exports.default = optimizelify;