Skip to content

Instantly share code, notes, and snippets.

@zertosh
Created May 15, 2015 03:59
Show Gist options
  • Save zertosh/e66a3e96afc45228f02b to your computer and use it in GitHub Desktop.
Save zertosh/e66a3e96afc45228f02b to your computer and use it in GitHub Desktop.
b.require with recursive streams
diff --git a/index.js b/index.js
index 1ebb1749..cb1d46c5 100644
--- a/index.js
+++ b/index.js
@@ -111,51 +111,43 @@ Browserify.prototype.require = function (file, opts) {
return this;
}
if (!opts) opts = {};
var basedir = defined(opts.basedir, self._options.basedir, process.cwd());
- var expose = opts.expose;
- if (file === expose && /^[\.]/.test(expose)) {
- expose = '/' + path.relative(basedir, expose);
- }
- if (expose === undefined && this._options.exposeAll) {
- expose = true;
- }
- if (expose === true) {
- expose = '/' + path.relative(basedir, file);
- }
if (isStream(file)) {
self._pending ++;
var order = self._entryOrder ++;
file.pipe(concat(function (buf) {
var filename = opts.file || file.file || path.join(
basedir,
'_stream_' + order + '.js'
);
- var id = file.id || expose || filename;
- if (expose || opts.entry === false) {
- self._expose[id] = filename;
- }
- if (!opts.entry && self._options.exports === undefined) {
- self._bpack.hasExports = true;
- }
var rec = {
source: buf.toString('utf8'),
entry: defined(opts.entry, false),
file: filename,
- id: id
+ id: file.id || opts.expose || filename
};
- if (rec.entry) rec.order = order;
- if (rec.transform === false) rec.transform = false;
- self.pipeline.write(rec);
-
+ if (opts.entry) rec.order = order;
+ self.require(rec, opts);
if (-- self._pending === 0) self.emit('_ready');
}));
return this;
}
+ var expose = opts.expose;
+ if (file === expose && /^[\.]/.test(expose)) {
+ expose = '/' + path.relative(basedir, expose);
+ }
+ if (expose === undefined && this._options.exposeAll) {
+ expose = true;
+ }
+ if (expose === true) {
+ expose = '/' + path.relative(basedir, file);
+ }
+
var row;
if (typeof file === 'object') {
row = xtend(file, opts);
}
else if (isExternalModule(file)) {
@jmm
Copy link

jmm commented May 18, 2015

I think order is going to be broken here. The code that runs on the second pass won't use the rec.order value, it'll just overwrite it.

I don't think it's necessary to set rec.entry. It'll be taken care of on the second pass via opts.entry.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment