-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.js
74 lines (67 loc) · 2.12 KB
/
build.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
var browserify = require( 'browserify' );
var fs = require( 'fs' );
var through = require('through');
var glob = require( 'glob' ).sync;
var all = fs.readdirSync( 'src' );
var options = {};
var removeList = [
'global',
'utils',
'namespace'
];
var removeKeys = function ( key ) {
return removeList.indexOf( key ) === -1;
};
var removeExtension = function ( key ) {
return key.replace( '.js', '' );
};
var allKeys = all.map( removeExtension )
.filter( removeKeys );
var keys = process.argv.slice( 2 ).filter(function ( val ) {
var split = val.split( '=' );
if ( split[1] ) {
options[split[0]] = split[1];
return false;
}
return allKeys.indexOf( val ) > -1;
});
var b = browserify();
if ( !keys.length ) {
keys = allKeys;
glob( './src/*.js' ).map( function ( filename ) {
b.add( filename );
} );
} else {
['utils'].concat( keys ).map( function ( key ) {
console.log( __dirname + '/src/' + key + '.js' );
b.add( __dirname + '/src/' + key + '.js' );
} );
}
b.transform(function (file/*, options*/) {
var source = '';
function read( chunk ) {
source += chunk;
}
function end() {
var filename = file.split( /[\\\/]/ ).slice( -1 )[0];
if ( filename === 'utils.js' ) {
console.log( keys );
keys.forEach( function ( key, i ) {
if ( options.namespace ) {
if ( i === 0 ) {
source += '/** @module ' + options.namespace + ' */\n';
source += 'var ' + options.namespace + '= {};\n';
source += 'global.' + options.namespace + ' = ' + options.namespace + ';\n';
}
source += options.namespace + '.' + key + ' = require( "./' + key + '" );\n';
} else {
source += 'global.' + key + ' = require( "./' + key + '" );\n';
}
} );
}
this.queue( source );
this.queue( null );
}
return through( read, end );
});
b.bundle().pipe( fs.createWriteStream( options.output || 'utils.js' ) );