Created
May 15, 2015 03:59
-
-
Save zertosh/e66a3e96afc45228f02b to your computer and use it in GitHub Desktop.
b.require with recursive streams
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)) { |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I think
order
is going to be broken here. The code that runs on the second pass won't use therec.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 viaopts.entry
.