Skip to content

Instantly share code, notes, and snippets.

@imskojs
Created March 18, 2016 11:43
Show Gist options
  • Save imskojs/4cb8ef9e946dd4488417 to your computer and use it in GitHub Desktop.
Save imskojs/4cb8ef9e946dd4488417 to your computer and use it in GitHub Desktop.
Minifying Ionic app
/* jshint ignore:start */
var Promise = require('bluebird');
/* jshint ignore:end */
var purify = require('purify-css');
var glob = require('glob');
var uglify = require('uglify-js');
var fs = require('fs');
var sh = require('shelljs');
var del = require('del');
if ('android' && 'release') {
// gulp then
prepareAndroid();
// then cordova build --release android
// jarsign
// zipalign
// slackcat
// rm .apk in applicatKeyStore
} else {
// prepareIos();
}
// After gulp
function prepareAndroid() {
var doneStates = [];
var deferred = Promise.pending();
// purify css
glob('codes/**/*.{html,js}', function(err, files) {
if (err) {
return deferred.reject(err);
}
console.log("files :::\n", files);
console.log('purifying above files, this may take a while, like 2~3 mins');
var css = ['www/css/ionic.app.all.min.css'];
var content = files;
var cssOptions = {
minify: true,
output: 'www/css/pissoff.css',
rejected: true
};
purify(content, css, cssOptions);
deferred.resolve('cssPurificationDone');
});
return deferred.promise
.then(function(message) {
console.log("message :::\n", message);
doneStates.push(message);
// cordova, lib, view, app js uglify
var deferred = Promise.pending();
console.log('uglifying js files(cordova,lib,ngTemplate,app), this may take a while, like 1~2 mins');
var minified = uglify.minify([
'www/lib/lib.all.min.js',
'platforms/android/assets/www/cordova.js',
'www/view/ngTemplates.js',
'www/js/app.all.min.js',
]);
fs.writeFile('www/js/pissoff.js', minified.code, 'utf8', function(err) {
if (err) {
deferred.reject(err);
} else {
deferred.resolve('jsUglificationDone');
}
});
return deferred.promise;
})
.then(function(message) {
console.log("message :::\n", message);
doneStates.push(message);
// change index.html
releaseCode();
return 'indexViewDone';
})
.then(function(message) {
console.log("message :::\n", message);
doneStates.push(message);
del.sync([
'www/css/ionic.app.all.min.css',
'www/js/app.all.min.js',
'www/lib/lib.all.min.js',
'www/view/ngTemplates.js',
]);
return 'fileDeleteDone';
})
.then(function(message) {
console.log("message :::\n", message);
doneStates.push(message);
return 'done';
})
.catch(function(err) {
console.log("err :::\n", err);
if (doneStates.indexOf('indexViewDone') !== -1) {
devCode();
}
return Promise.reject(err);
});
}
function releaseCode() {
sh.sed(
'-i',
/ <script src="cordova\.js"><\/script>/,
' <!-- <script src="cordova.js"></script> -->',
'www/index.html'
);
sh.sed(
'-i',
/ <script src="lib\/lib\.all\.min\.js"><\/script>/,
' <!-- <script src="lib/lib.all.min.js"></script> -->',
'www/index.html'
);
sh.sed(
'-i',
/ <script src="view\/ngTemplates.js"><\/script>/,
' <!-- <script src="view/ngTemplates.js"></script> -->',
'www/index.html'
);
sh.sed(
'-i',
/ <script src="js\/app\.all\.min\.js"><\/script>/,
' <!-- <script src="js/app.all.min.js"></script> -->',
'www/index.html'
);
sh.sed(
'-i',
/ <!-- <script src="js\/pissoff\.js"><\/script> -->/,
' <script src="js/pissoff.js"></script>',
'www/index.html'
);
sh.sed(
'-i',
/ <link href="css\/ionic\.app\.all\.min\.css" rel="stylesheet">/,
' <!-- <link href="css/ionic.app.all.min.css" rel="stylesheet"> -->',
'www/index.html'
);
sh.sed(
'-i',
/ <!-- <link href="css\/pissoff\.css" rel="stylesheet"> -->/,
' <link href="css/pissoff.css" rel="stylesheet">',
'www/index.html'
);
}
function devCode() {
sh.sed(
'-i',
/ <!-- <script src="cordova\.js"><\/script> -->/,
' <script src="cordova.js"></script>',
'www/index.html'
);
sh.sed(
'-i',
/ <!-- <script src="lib\/lib\.all\.min\.js"><\/script> -->/,
' <script src="lib/lib.all.min.js"></script>',
'www/index.html'
);
sh.sed(
'-i',
/ <!-- <script src="view\/ngTemplates.js"><\/script> -->/,
' <script src="view/ngTemplates.js"></script>',
'www/index.html'
);
sh.sed(
'-i',
/ <!-- <script src="js\/app\.all\.min\.js"><\/script> -->/,
' <script src="js/app.all.min.js"></script>',
'www/index.html'
);
sh.sed(
'-i',
/ <script src="js\/pissoff\.js"><\/script>/,
' <!-- <script src="js/pissoff.js"></script> -->',
'www/index.html'
);
sh.sed(
'-i',
/ <!-- <link href="css\/ionic\.app\.all\.min\.css" rel="stylesheet"> -->/,
' <link href="css/ionic.app.all.min.css" rel="stylesheet">',
'www/index.html'
);
sh.sed(
'-i',
/ <link href="css\/pissoff\.css" rel="stylesheet">/,
' <!-- <link href="css/pissoff.css" rel="stylesheet"> -->',
'www/index.html'
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment