diff options
Diffstat (limited to 'hooks')
| -rwxr-xr-x | hooks/after_prepare/uglify.js | 143 | ||||
| -rw-r--r-- | hooks/uglify-config.json | 21 |
2 files changed, 0 insertions, 164 deletions
diff --git a/hooks/after_prepare/uglify.js b/hooks/after_prepare/uglify.js deleted file mode 100755 index 9d18f563..00000000 --- a/hooks/after_prepare/uglify.js +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env node - -/*jshint latedef:nofunc, node:true*/ - -// Modules -var fs = require('fs'); -var path = require('path'); -var dependencyPath = path.join(process.cwd(), 'node_modules'); -// cordova-uglify module dependencies -var UglifyJS = require(path.join(dependencyPath, 'uglify-js')); -var CleanCSS = require(path.join(dependencyPath, 'clean-css')); -var ngAnnotate = require(path.join(dependencyPath, 'ng-annotate')); - -// Process -var rootDir = process.argv[2]; -var platformPath = path.join(rootDir, 'platforms'); -var platforms = process.env.CORDOVA_PLATFORMS.split(','); -var cliCommand = process.env.CORDOVA_CMDLINE; - -// Hook configuration -var configFilePath = path.join(rootDir, 'hooks/uglify-config.json'); -var hookConfig = JSON.parse(fs.readFileSync(configFilePath)); -var isRelease = hookConfig.alwaysRun || (cliCommand.indexOf('--release') > -1); -var recursiveFolderSearch = hookConfig.recursiveFolderSearch; // set this to false to manually indicate the folders to process -var foldersToProcess = hookConfig.foldersToProcess; // add other www folders in here if needed (ex. js/controllers) -var cssMinifier = new CleanCSS(hookConfig.cleanCssOptions); - -// Exit -if (!isRelease) { - return; -} - -// Run uglifier -run(); - -/** - * Run compression for all specified platforms. - * @return {undefined} - */ -function run() { - platforms.forEach(function(platform) { - var wwwPath; - - switch (platform) { - case 'android': - wwwPath = path.join(platformPath, platform, 'assets', 'www'); - break; - - case 'ios': - case 'browser': - case 'wp8': - case 'windows': - wwwPath = path.join(platformPath, platform, 'www'); - break; - - default: - console.log('this hook only supports android, ios, wp8, windows, and browser currently'); - return; - } - - processFolders(wwwPath); - }); -} - -/** - * Processes defined folders. - * @param {string} wwwPath - Path to www directory - * @return {undefined} - */ -function processFolders(wwwPath) { - foldersToProcess.forEach(function(folder) { - processFiles(path.join(wwwPath, folder)); - }); -} - -/** - * Processes files in directories. - * @param {string} dir - Directory path - * @return {undefined} - */ -function processFiles(dir) { - fs.readdir(dir, function(err, list) { - if (err) { - console.log('processFiles err: ' + err); - - return; - } - - list.forEach(function(file) { - file = path.join(dir, file); - - fs.stat(file, function(err, stat) { - if (stat.isFile()) { - compress(file); - - return; - } - - if (recursiveFolderSearch && stat.isDirectory()) { - processFiles(file); - - return; - } - }); - }); - }); -} - -/** - * Compresses file. - * @param {string} file - File path - * @return {undefined} - */ -function compress(file) { - var ext = path.extname(file), - res, - source, - result; - - switch (ext) { - case '.js': - console.log('uglifying js file ' + file); - - res = ngAnnotate(String(fs.readFileSync(file)), { - add: true - }); - result = UglifyJS.minify(res.src, hookConfig.uglifyJsOptions); - fs.writeFileSync(file, result.code, 'utf8'); // overwrite the original unminified file - break; - - case '.css': - console.log('minifying css file ' + file); - - source = fs.readFileSync(file, 'utf8'); - result = cssMinifier.minify(source); - fs.writeFileSync(file, result.styles, 'utf8'); // overwrite the original unminified file - break; - - default: - console.log('encountered a ' + ext + ' file, not compressing it'); - break; - } -} diff --git a/hooks/uglify-config.json b/hooks/uglify-config.json deleted file mode 100644 index e285cd2d..00000000 --- a/hooks/uglify-config.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "alwaysRun": false, - "recursiveFolderSearch": true, - "foldersToProcess": [ - "js", - "css", - "img", - "build" - ], - "uglifyJsOptions": { - "compress": { - "drop_console": true - }, - "fromString": true, - "mangle": false - }, - "cleanCssOptions": { - "noAdvanced": true, - "keepSpecialComments": 0 - } -} |
