split build code into two files
This commit is contained in:
parent
a278c982b2
commit
313f3d9ebe
69
Jakefile.js
69
Jakefile.js
@ -1,63 +1,4 @@
|
|||||||
var fs = require('fs'),
|
var build = require('./build/build.js');
|
||||||
uglify = require('uglify-js'),
|
|
||||||
//jshint = require('jshint'),
|
|
||||||
deps = require('./build/deps.js').deps;
|
|
||||||
|
|
||||||
function getFiles(compsBase32) {
|
|
||||||
var memo = {},
|
|
||||||
comps;
|
|
||||||
|
|
||||||
if (compsBase32) {
|
|
||||||
comps = parseInt(compsBase32, 32).toString(2).split('');
|
|
||||||
console.log('Managing dependencies...')
|
|
||||||
}
|
|
||||||
|
|
||||||
function addFiles(srcs) {
|
|
||||||
for (var j = 0, len = srcs.length; j < len; j++) {
|
|
||||||
memo[srcs[j]] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i in deps) {
|
|
||||||
if (comps) {
|
|
||||||
if (parseInt(comps.pop(), 2) === 1) {
|
|
||||||
console.log('\t* ' + i);
|
|
||||||
addFiles(deps[i].src);
|
|
||||||
} else {
|
|
||||||
console.log('\t ' + i);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
addFiles(deps[i].src);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var files = [];
|
|
||||||
|
|
||||||
for (var src in memo) {
|
|
||||||
files.push('src/' + src);
|
|
||||||
}
|
|
||||||
|
|
||||||
return files;
|
|
||||||
}
|
|
||||||
|
|
||||||
function myUglify(code) {
|
|
||||||
var pro = uglify.uglify;
|
|
||||||
|
|
||||||
var ast = uglify.parser.parse(code);
|
|
||||||
ast = pro.ast_mangle(ast);
|
|
||||||
ast = pro.ast_squeeze(ast, {keep_comps: false});
|
|
||||||
ast = pro.ast_squeeze_more(ast);
|
|
||||||
|
|
||||||
return pro.gen_code(ast);
|
|
||||||
}
|
|
||||||
|
|
||||||
function combineFiles(files) {
|
|
||||||
var content = '';
|
|
||||||
for (var i = 0, len = files.length; i < len; i++) {
|
|
||||||
content += fs.readFileSync(files[i], 'utf8') + '\n\n';
|
|
||||||
}
|
|
||||||
return content;
|
|
||||||
}
|
|
||||||
|
|
||||||
var COPYRIGHT = "/*\n Copyright (c) 2010-2011, CloudMade, Vladimir Agafonkin\n" +
|
var COPYRIGHT = "/*\n Copyright (c) 2010-2011, CloudMade, Vladimir Agafonkin\n" +
|
||||||
" Leaflet is a modern open source JavaScript library for interactive maps.\n" +
|
" Leaflet is a modern open source JavaScript library for interactive maps.\n" +
|
||||||
@ -67,20 +8,20 @@ task('build', function (compsBase32, buildName) {
|
|||||||
var name = buildName || 'custom',
|
var name = buildName || 'custom',
|
||||||
savePath = 'dist/leaflet' + (compsBase32 ? '-' + name : '') + '.js';
|
savePath = 'dist/leaflet' + (compsBase32 ? '-' + name : '') + '.js';
|
||||||
|
|
||||||
var files = getFiles(compsBase32);
|
var files = build.getFiles(compsBase32);
|
||||||
|
|
||||||
console.log('Concatenating ' + files.length + ' files...');
|
console.log('Concatenating ' + files.length + ' files...');
|
||||||
|
|
||||||
var content = combineFiles(files);
|
var content = build.combineFiles(files);
|
||||||
|
|
||||||
console.log('Uncompressed size: ' + content.length);
|
console.log('Uncompressed size: ' + content.length);
|
||||||
console.log('Compressing...');
|
console.log('Compressing...');
|
||||||
|
|
||||||
var compressed = COPYRIGHT + myUglify(content);
|
var compressed = COPYRIGHT + build.uglify(content);
|
||||||
|
|
||||||
console.log('Compressed size: ' + compressed.length);
|
console.log('Compressed size: ' + compressed.length);
|
||||||
|
|
||||||
fs.writeFileSync(savePath, compressed, 'utf8');
|
build.save(savePath, compressed);
|
||||||
|
|
||||||
console.log('Saved to ' + savePath);
|
console.log('Saved to ' + savePath);
|
||||||
});
|
});
|
||||||
|
63
build/build.js
Normal file
63
build/build.js
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
var fs = require('fs'),
|
||||||
|
uglifyjs = require('uglify-js'),
|
||||||
|
deps = require('./deps.js').deps;
|
||||||
|
|
||||||
|
exports.getFiles = function (compsBase32) {
|
||||||
|
var memo = {},
|
||||||
|
comps;
|
||||||
|
|
||||||
|
if (compsBase32) {
|
||||||
|
comps = parseInt(compsBase32, 32).toString(2).split('');
|
||||||
|
console.log('Managing dependencies...')
|
||||||
|
}
|
||||||
|
|
||||||
|
function addFiles(srcs) {
|
||||||
|
for (var j = 0, len = srcs.length; j < len; j++) {
|
||||||
|
memo[srcs[j]] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i in deps) {
|
||||||
|
if (comps) {
|
||||||
|
if (parseInt(comps.pop(), 2) === 1) {
|
||||||
|
console.log('\t* ' + i);
|
||||||
|
addFiles(deps[i].src);
|
||||||
|
} else {
|
||||||
|
console.log('\t ' + i);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
addFiles(deps[i].src);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var files = [];
|
||||||
|
|
||||||
|
for (var src in memo) {
|
||||||
|
files.push('src/' + src);
|
||||||
|
}
|
||||||
|
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.uglify = function (code) {
|
||||||
|
var pro = uglifyjs.uglify;
|
||||||
|
|
||||||
|
var ast = uglifyjs.parser.parse(code);
|
||||||
|
ast = pro.ast_mangle(ast);
|
||||||
|
ast = pro.ast_squeeze(ast, {keep_comps: false});
|
||||||
|
ast = pro.ast_squeeze_more(ast);
|
||||||
|
|
||||||
|
return pro.gen_code(ast);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.combineFiles = function (files) {
|
||||||
|
var content = '';
|
||||||
|
for (var i = 0, len = files.length; i < len; i++) {
|
||||||
|
content += fs.readFileSync(files[i], 'utf8') + '\n\n';
|
||||||
|
}
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.save = function (savePath, compressed) {
|
||||||
|
fs.writeFileSync(savePath, compressed, 'utf8');
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user