Fixed uglifying for asm-code. Added dist-task for building distribution-files
parent
24ceb3480c
commit
594aeb2fc0
File diff suppressed because one or more lines are too long
@ -0,0 +1,56 @@
|
|||||||
|
/**
|
||||||
|
* Idea taken from https://github.com/fpirsch/twin-bcrypt/blob/master/Gearfile.js
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var fs = require('fs');
|
||||||
|
|
||||||
|
module.exports = function(grunt) {
|
||||||
|
grunt.registerTask('uglyasm', function() {
|
||||||
|
var code = fs.readFileSync('dist/quagga.js', 'utf-8'),
|
||||||
|
minifiedCode = fs.readFileSync('dist/quagga.min.js', 'utf-8'),
|
||||||
|
commentEnd = '/* @preserve ASM END */',
|
||||||
|
asmStartIdx = code.indexOf('/* @preserve ASM BEGIN */'),
|
||||||
|
asmEndIdx = code.indexOf(commentEnd),
|
||||||
|
asmCode = code.substring(asmStartIdx, asmEndIdx + commentEnd.length),
|
||||||
|
asmFunctionRegex = /function (\w+)\(\w+,\s*\w+,\s*\w+\)\s*\{\s*"use asm";/,
|
||||||
|
asmModule,
|
||||||
|
asmModuleName,
|
||||||
|
asmCodeMinified,
|
||||||
|
asmMinifiedModuleName;
|
||||||
|
|
||||||
|
asmCodeMinified = asmCode
|
||||||
|
.replace(/\s*\/\/.*/g, '') // remove single-line comments
|
||||||
|
.replace(/\s*\/\*[^]*?\*\//g, '') // remove multi-line comments
|
||||||
|
.replace(/\n\s*/g, '') // remove indentation
|
||||||
|
.replace(/ ([+=^|&]|>+|<+) /g, '$1') // remove spaces around operators
|
||||||
|
.replace(/[\r\n/]/g, ''); // remove new lines
|
||||||
|
|
||||||
|
grunt.log.debug(asmCodeMinified);
|
||||||
|
|
||||||
|
asmModule = asmCode.match(asmFunctionRegex);
|
||||||
|
if (!asmModule) {
|
||||||
|
grunt.log.error("No ASM module found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
asmModuleName = asmModule[1];
|
||||||
|
grunt.log.debug(asmModuleName);
|
||||||
|
|
||||||
|
asmModule = minifiedCode.match(asmFunctionRegex);
|
||||||
|
if (!asmModule) {
|
||||||
|
grunt.log.error("No ASM module found in minified file");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
asmMinifiedModuleName = asmModule[1];
|
||||||
|
grunt.log.debug(asmMinifiedModuleName);
|
||||||
|
|
||||||
|
asmCodeMinified = asmCodeMinified.replace(asmModuleName, asmMinifiedModuleName);
|
||||||
|
|
||||||
|
minifiedCode = minifiedCode.replace(/\/\* @preserve ASM BEGIN \*\/[^]*?\/\* @preserve ASM END \*\//, asmCodeMinified);
|
||||||
|
fs.writeFileSync('dist/quagga.min.js', minifiedCode);
|
||||||
|
grunt.log.ok('dist/quagga.min.js written');
|
||||||
|
});
|
||||||
|
};
|
Loading…
Reference in New Issue