Browse Source

modularize browser build.js

patch-2
Manuel Araoz 11 years ago
parent
commit
aa1511d95c
  1. 136
      browser/build.js

136
browser/build.js

@ -1,18 +1,8 @@
'use strict'; 'use strict';
/*
*
* The key parameter 'pack'
* The supplied 'custom_prelude.js' file is needed for
* .load function of soop.
*/
var fs = require('fs'); var fs = require('fs');
var browserify = require('browserify'); var browserify = require('browserify');
var browserPack = require('browser-pack'); var browserPack = require('browser-pack');
var program = require('commander');
// concat browser vendor files
var exec = require('child_process').exec; var exec = require('child_process').exec;
var sys = require('sys'); var sys = require('sys');
var puts = function(error, stdout, stderr) { var puts = function(error, stdout, stderr) {
@ -21,26 +11,8 @@ var puts = function(error, stdout, stderr) {
sys.puts(stderr); sys.puts(stderr);
}; };
exec('cd browser; sh concat.sh', puts); var pack = function(params) {
var preludePath = 'node_modules/soop/example/custom_prelude.js';
var list = function(val) {
return val.split(',');
};
program
.version('0.0.1')
.option('-a, --includeall', 'Include all submodules.')
.option('-d, --dontminify', 'Don\'t minify the code.')
.option('-s, --submodules <items>', 'Include the listed comma-separated submodules.', list)
.parse(process.argv);
if (!program.includeall && (!program.submodules || program.submodules.length === 0)) {
console.log('Must use either -s or -a option. For more info use the --help option');
process.exit(1);
}
var pack = function (params) {
var preludePath = 'node_modules/soop/example/custom_prelude.js';
params.raw = true; params.raw = true;
params.sourceMapPrefix = '//#'; params.sourceMapPrefix = '//#';
params.prelude = fs.readFileSync(preludePath, 'utf8'); params.prelude = fs.readFileSync(preludePath, 'utf8');
@ -80,40 +52,88 @@ var modules = [
'util/VersionedData', 'util/VersionedData',
]; ];
var opts = {}; var createBitcore = function(opts) {
opts.pack = pack;
opts.debug = true; // concat browser vendor files
opts.standalone = 'bitcore'; exec('cd browser; sh concat.sh', puts);
opts.insertGlobals = true;
if (!opts.includeall && (!opts.submodules || opts.submodules.length === 0)) {
var b = browserify(opts); console.log('Must use either -s or -a option. For more info use the --help option');
b.require('browserify-bignum/bignumber.js', {expose: 'bignum'} ); process.exit(1);
b.require('browserify-buffertools/buffertools.js', {expose:'buffertools'});
b.require('base58-native', {expose: 'base58-native'});
b.require('./bitcore', {expose: 'bitcore'});
modules.forEach(function(m) {
if (program.includeall || program.submodules.indexOf(m) > -1) {
console.log('Including '+m+' in the browser bundle');
b.require('./' + m + '.js' , {expose: './'+m} );
} }
});
if (!program.dontminify) { var bopts = {
b.transform({ pack : pack,
global: true debug : true,
}, 'uglifyify'); standalone : 'bitcore',
} insertGlobals: true
};
var b = browserify(bopts);
b.require('browserify-bignum/bignumber.js', {
expose: 'bignum'
});
b.require('browserify-buffertools/buffertools.js', {
expose: 'buffertools'
});
b.require('base58-native', {
expose: 'base58-native'
});
b.require('./bitcore', {
expose: 'bitcore'
});
modules.forEach(function(m) {
if (opts.includeall || opts.submodules.indexOf(m) > -1) {
console.log('Including ' + m + ' in the browser bundle');
b.require('./' + m + '.js', {
expose: './' + m
});
}
});
if (!opts.dontminify) {
b.transform({
global: true
}, 'uglifyify');
}
var bundle = b.bundle(); var bundle = b.bundle();
bundle = bundle.pipe(fs.createWriteStream('browser/bundle.js')); return bundle;
};
opts.standalone = 'testdata'; var createTestData = function() {
var tb = browserify(opts); var bopts = {
tb.require('./test/testdata', {expose: 'testdata'}); pack : pack,
tb.transform('brfs'); debug : true,
standalone : 'testdata',
insertGlobals: true
};
var tb = browserify(bopts);
tb.require('./test/testdata', {
expose: 'testdata'
});
tb.transform('brfs');
return tb.bundle();
};
tb.bundle().pipe(fs.createWriteStream('browser/testdata.js'));
if (require.main === module) {
var list = function(val) {
return val.split(',');
};
var program = require('commander');
program
.version('0.0.1')
.option('-a, --includeall', 'Include all submodules.')
.option('-d, --dontminify', 'Don\'t minify the code.')
.option('-s, --submodules <items>', 'Include the listed comma-separated submodules.', list)
.parse(process.argv);
var bitcoreBundle = createBitcore(program);
var testBundle = createTestData(program);
testBundle.pipe(fs.createWriteStream('browser/testdata.js'));
bitcoreBundle.pipe(fs.createWriteStream('browser/bundle.js'));
}

Loading…
Cancel
Save