From aa1511d95c24039f197bf755abdb9ca3447621bb Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Thu, 13 Mar 2014 14:24:51 -0300 Subject: [PATCH] modularize browser build.js --- browser/build.js | 146 +++++++++++++++++++++++++++-------------------- 1 file changed, 83 insertions(+), 63 deletions(-) diff --git a/browser/build.js b/browser/build.js index 4deae0085..cf94cdf5d 100644 --- a/browser/build.js +++ b/browser/build.js @@ -1,18 +1,8 @@ 'use strict'; -/* - * - * The key parameter 'pack' - * The supplied 'custom_prelude.js' file is needed for - * .load function of soop. - */ - var fs = require('fs'); var browserify = require('browserify'); var browserPack = require('browser-pack'); -var program = require('commander'); - -// concat browser vendor files var exec = require('child_process').exec; var sys = require('sys'); var puts = function(error, stdout, stderr) { @@ -21,26 +11,8 @@ var puts = function(error, stdout, stderr) { sys.puts(stderr); }; -exec('cd browser; sh concat.sh', puts); - -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 ', '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'; +var pack = function(params) { + var preludePath = 'node_modules/soop/example/custom_prelude.js'; params.raw = true; params.sourceMapPrefix = '//#'; params.prelude = fs.readFileSync(preludePath, 'utf8'); @@ -80,40 +52,88 @@ var modules = [ 'util/VersionedData', ]; -var opts = {}; -opts.pack = pack; -opts.debug = true; -opts.standalone = 'bitcore'; -opts.insertGlobals = true; +var createBitcore = function(opts) { -var b = browserify(opts); -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 (program.includeall || program.submodules.indexOf(m) > -1) { - console.log('Including '+m+' in the browser bundle'); - b.require('./' + m + '.js' , {expose: './'+m} ); + // concat browser vendor files + exec('cd browser; sh concat.sh', puts); + + if (!opts.includeall && (!opts.submodules || opts.submodules.length === 0)) { + console.log('Must use either -s or -a option. For more info use the --help option'); + process.exit(1); } -}); -if (!program.dontminify) { - b.transform({ - global: true - }, 'uglifyify'); + var bopts = { + pack : pack, + debug : true, + 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(); + return bundle; +}; + +var createTestData = function() { + var bopts = { + pack : pack, + debug : true, + standalone : 'testdata', + insertGlobals: true + }; + var tb = browserify(bopts); + tb.require('./test/testdata', { + expose: 'testdata' + }); + tb.transform('brfs'); + + return tb.bundle(); +}; + + + +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 ', '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')); + } - -var bundle = b.bundle(); -bundle = bundle.pipe(fs.createWriteStream('browser/bundle.js')); - -opts.standalone = 'testdata'; -var tb = browserify(opts); -tb.require('./test/testdata', {expose: 'testdata'}); -tb.transform('brfs'); - -tb.bundle().pipe(fs.createWriteStream('browser/testdata.js')); - - - -