chore(minify): minify web worker

This commit is contained in:
Adam Bradley
2016-12-06 13:44:02 -06:00
parent a237253dda
commit 0b4e8cee53
3 changed files with 47 additions and 5 deletions

View File

@ -7,8 +7,9 @@ import { Replacer } from 'strip-function';
import * as commonjs from 'rollup-plugin-commonjs';
import * as multiEntry from 'rollup-plugin-multi-entry';
import * as nodeResolve from 'rollup-plugin-node-resolve';
import * as uglify from 'rollup-plugin-uglify';
import * as through from 'through2';
import * as uglifyJS from 'uglify-js';
import * as uglifyPlugin from 'rollup-plugin-uglify';
export function mergeObjects(obj1: any, obj2: any ) {
if (! obj1) {
@ -60,7 +61,44 @@ function removeDebugStatements() {
file.contents = new Buffer(cleanedJs, 'utf8');
callback(null, file);
});
};
}
function minifyInlineStrings() {
// used to manually minify the inline web workers
// which are strings of code and not actual code
const start = '/** minify-start **/';
const end = '/** minify-end **/';
return through.obj(function (file, encoding, callback) {
let content: string = file.contents.toString();
const startIndex = content.indexOf(start);
const endIndex = content.indexOf(end);
if (startIndex > -1 && endIndex > startIndex) {
let startContent = content.substring(0, startIndex);
let minifyContent = content.substring(startIndex, endIndex + end.length);
let endContent = content.substring(endIndex + end.length);
minifyContent = uglifyJS.minify(minifyContent, {
fromString: true,
compress: {
dead_code: true,
global_defs: {
DEBUG: false
}
}
}).code;
content = startContent + minifyContent + endContent;
file.contents = new Buffer(content, 'utf8');
}
callback(null, file);
});
}
export function copySourceToDest(destinationPath: string, excludeSpecs: boolean, excludeE2e: boolean, stripDebug: boolean) {
let glob = [`${SRC_ROOT}/**/*.ts`];
@ -74,9 +112,12 @@ export function copySourceToDest(destinationPath: string, excludeSpecs: boolean,
}
let stream = src(glob);
if (stripDebug) {
console.log('Removing debug statements ', destinationPath);
console.log('Removing debug statements:', destinationPath);
stream = stream.pipe(removeDebugStatements());
}
console.log('Minifying inline web-worker strings:', destinationPath);
stream = stream.pipe(minifyInlineStrings());
return stream.pipe(dest(destinationPath));
}
@ -246,7 +287,7 @@ function bundlePolyfill(pathsToIncludeInPolyfill: string[], outputPath: string)
main: true
}),
commonjs(),
uglify()
uglifyPlugin()
]
}).then((bundle) => {
return bundle.write({