UNPKG

gulp-crometrics

Version:

Predefined Gulp Tasks for CROmetrics (fork of gulp-clearhead)

40 lines (28 loc) 1.17 kB
'use strict'; 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;