Skip to content

Commit 27081fe

Browse files
committed
Add support for generating a browserify bundle using external requires
1 parent 7f7d2d3 commit 27081fe

1 file changed

Lines changed: 33 additions & 2 deletions

File tree

  • lib/node_modules/@stdlib/_tools/bundle/pkg-list/lib

lib/node_modules/@stdlib/_tools/bundle/pkg-list/lib/main.js

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// MODULES //
44

55
var debug = require( 'debug' )( 'bundle-pkg-list:main' );
6+
var browserify = require( 'browserify' );
67
var copy = require( '@stdlib/utils/copy' );
78
var isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;
89
var isFunction = require( '@stdlib/assert/is-function' );
@@ -52,10 +53,12 @@ var toTreeNamespace = require( './to_tree.js' );
5253
* }
5354
*/
5455
function bundle( pkgs, options, clbk ) {
56+
var bopts;
5557
var opts;
5658
var err;
5759
var out;
5860
var cb;
61+
var b;
5962

6063
if ( !isStringArray( pkgs ) ) {
6164
throw new TypeError( 'invalid input argument. First argument must be an array of strings. Value: `'+pkgs+'`.' );
@@ -81,8 +84,17 @@ function bundle( pkgs, options, clbk ) {
8184
// Remove duplicates:
8285
pkgs = unique( pkgs );
8386

84-
// TODO: if namespace if "none" and bundler is "browserify", pursue a bundle which exposes an external `require`
87+
// If we do not need to generate a namespace for a browserify bundle, we will generate a bundle which allows a bundle consumer to `require` each package individually...
88+
if ( opts.namespace === 'none' && opts.bundler === 'browserify' ) {
89+
bopts = {
90+
'externalRequireName': opts.requireName,
91+
'require': pkgs
92+
};
93+
b = browserify( bopts );
94+
return b.bundle( onBundle );
95+
}
8596

97+
// Generate a namespace...
8698
if ( opts.namespace === 'flat' ) {
8799
debug( 'Generating a flat namespace...' );
88100

@@ -98,18 +110,37 @@ function bundle( pkgs, options, clbk ) {
98110

99111
out = toTreeNamespace( pkgs );
100112
}
113+
debug( 'Finished generating a namespace.' );
114+
101115
return done( null, out );
102116
// TODO: generate temporary file
103117
// TODO: bundle the file
104118
// TODO: delete temporary file
105119
// TODO: return the bundle
106120

121+
/**
122+
* Callback invoked upon generating a browserify bundle.
123+
*
124+
* @private
125+
* @param {(Error|null)} error - error object
126+
* @param {(string|Buffer)} bundle - bundle
127+
* @returns {void}
128+
*/
129+
function onBundle( error, bundle ) {
130+
if ( error ) {
131+
debug( 'Encountered an error when generating a browserify bundle: %s', error.message );
132+
return done( error );
133+
}
134+
debug( 'Successfully generated a browserify bundle.' );
135+
done( null, bundle );
136+
} // end FUNCTION onBundle()
137+
107138
/**
108139
* Callback invoked upon completion.
109140
*
110141
* @private
111142
* @param {(Error|null)} error - error object
112-
* @param {string} bundle - bundle
143+
* @param {(string|Buffer)} bundle - bundle
113144
* @returns {void}
114145
*/
115146
function done( error, bundle ) {

0 commit comments

Comments
 (0)