73 lines
3.2 KiB
JavaScript
73 lines
3.2 KiB
JavaScript
|
|
/**
|
||
|
|
* Custom builder
|
||
|
|
* TODO: create a better builder that support building html templates which is not hard coded
|
||
|
|
* use sass
|
||
|
|
*/
|
||
|
|
var path = require('path');
|
||
|
|
var version = require('./package.json').version;
|
||
|
|
console.log('Build version ',version);
|
||
|
|
|
||
|
|
console.log('clean started...');
|
||
|
|
var rimraf = require('rimraf');
|
||
|
|
rimraf(path.join(__dirname, 'dist', '*'), build);
|
||
|
|
|
||
|
|
function build(){
|
||
|
|
console.log('build started...');
|
||
|
|
try{
|
||
|
|
var date = new Date().toLocaleDateString();
|
||
|
|
var fs = require('fs');
|
||
|
|
var jsp = require("uglify-js").parser;
|
||
|
|
var pro = require("uglify-js").uglify;
|
||
|
|
var htm = require('html-minifier').minify;
|
||
|
|
var CleanCSS = require('clean-css')
|
||
|
|
var htmlMinOpt = {
|
||
|
|
collapseInlineTagWhitespace: true,
|
||
|
|
collapseWhitespace: true,
|
||
|
|
caseSensitive: true,
|
||
|
|
quoteCharacter: '"',
|
||
|
|
removeComments: true
|
||
|
|
}
|
||
|
|
var appJsPath = path.join(__dirname, 'src', 'md-date-range-picker.js');
|
||
|
|
var appHtmlPath = path.join(__dirname, 'src', 'md-date-range-picker.html');
|
||
|
|
var appCssPath = path.join(__dirname, 'src', 'md-date-range-picker.css');
|
||
|
|
var appJsOut = path.join(__dirname, 'dist', 'md-date-range-picker.js');
|
||
|
|
var appCssOut = path.join(__dirname, 'dist', 'md-date-range-picker.css');
|
||
|
|
var appCssMinOut = path.join(__dirname, 'dist', 'md-date-range-picker.min.css');
|
||
|
|
var appJsMinOut = path.join(__dirname, 'dist', 'md-date-range-picker.min.js');
|
||
|
|
var jsTemplate = fs.readFileSync(appJsPath, 'utf8');
|
||
|
|
var htmlTemplate = fs.readFileSync(appHtmlPath, 'utf8');
|
||
|
|
var cssTemplate = fs.readFileSync(appCssPath, 'utf8');
|
||
|
|
var css = new CleanCSS().minify(cssTemplate);
|
||
|
|
var appjs = jsTemplate.replace('./md-date-range-picker.html', htm(htmlTemplate, htmlMinOpt).replace(/\'/g, '\\\'')).replace('templateUrl:','template:'); //extra carefull here
|
||
|
|
var ast = jsp.parse(appjs); // parse code and get the initial AST
|
||
|
|
|
||
|
|
ast = pro.ast_mangle(ast); // get a new AST with mangled names
|
||
|
|
ast = pro.ast_squeeze(ast); // get an AST with compression optimizations
|
||
|
|
final_code = pro.gen_code(ast); // compressed code here
|
||
|
|
console.log('writing file '+appJsOut+'...');
|
||
|
|
fs.writeFile(appJsOut, appjs.replace('${builddate}',date).replace('${version}',version),
|
||
|
|
function(){
|
||
|
|
console.log('writing file '+appJsMinOut+'...');
|
||
|
|
fs.writeFile(appJsMinOut, final_code,
|
||
|
|
function () {
|
||
|
|
console.log('writing file '+appCssOut+'...');
|
||
|
|
fs.writeFile(appCssOut, cssTemplate.replace('${builddate}',date).replace('${version}',version),
|
||
|
|
function() {
|
||
|
|
console.log('writing file '+appCssMinOut+'...');
|
||
|
|
fs.writeFile(appCssMinOut, css.styles,
|
||
|
|
function() {
|
||
|
|
console.log('build success...');
|
||
|
|
}
|
||
|
|
); //write min css
|
||
|
|
}
|
||
|
|
); //write css
|
||
|
|
}
|
||
|
|
); //write minifieds
|
||
|
|
}
|
||
|
|
); //write unminified
|
||
|
|
}catch(e){
|
||
|
|
console.error(e);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|