33// MODULES //
44
55var debug = require ( 'debug' ) ( 'bundle-pkg-list:main' ) ;
6+ var browserify = require ( 'browserify' ) ;
67var copy = require ( '@stdlib/utils/copy' ) ;
78var isStringArray = require ( '@stdlib/assert/is-string-array' ) . primitives ;
89var isFunction = require ( '@stdlib/assert/is-function' ) ;
@@ -52,10 +53,12 @@ var toTreeNamespace = require( './to_tree.js' );
5253* }
5354*/
5455function 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