module-deps
Advanced tools
Comparing version 1.2.0 to 1.2.1
72
index.js
@@ -10,2 +10,3 @@ var fs = require('fs'); | ||
var concat = require('concat-stream'); | ||
var parents = require('parents'); | ||
@@ -52,7 +53,5 @@ module.exports = function (mains, opts) { | ||
var pkgfile = path.join(path.dirname(main), 'package.json'); | ||
fs.readFile(pkgfile, function (err, src) { | ||
if (err) return done(); | ||
try { var pkg = JSON.parse(src) } | ||
catch (err) { return done() } | ||
lookupPkg(main, function (err, pkg) { | ||
if (!pkg) pkg = {}; | ||
if (!pkg.__dirname) pkg.__dirname = path.dirname(id); | ||
pkgCache[id] = pkg; | ||
@@ -112,7 +111,12 @@ done(); | ||
if (opts.packageFilter) parent.packageFilter = opts.packageFilter; | ||
var pkgdir; | ||
parent.packageFilter = function (p, x) { | ||
pkgdir = x; | ||
if (opts.packageFilter) return opts.packageFilter(p, x); | ||
else return p; | ||
}; | ||
if (opts.extensions) parent.extensions = opts.extensions; | ||
if (opts.modules) parent.modules = opts.modules; | ||
resolver(id, parent, function (err, file, pkg) { | ||
resolver(id, parent, function f (err, file, pkg) { | ||
if (err) return output.emit('error', err); | ||
@@ -124,2 +128,13 @@ if (!file) return output.emit('error', new Error([ | ||
if (pkg && pkgdir) pkg.__dirname = pkgdir; | ||
if (!pkg || !pkg.__dirname) { | ||
lookupPkg(file, function (err, p) { | ||
if (!p) p = {}; | ||
if (!p.__dirname) p.__dirname = path.dirname(file); | ||
pkgCache[file] = p; | ||
f(err, file, p); | ||
}); | ||
return; | ||
} | ||
if (cb) cb(file); | ||
@@ -159,6 +174,10 @@ if (visited[file]) { | ||
var n = pkg; | ||
opts.transformKey.forEach(function (key) { | ||
if (n && typeof n === 'object') n = n[key]; | ||
}); | ||
trx = [].concat(n).filter(Boolean); | ||
var keys = opts.transformKey; | ||
for (var i = 0; i < keys.length; i++) { | ||
if (n && typeof n === 'object') n = n[keys[i]]; | ||
else break; | ||
} | ||
if (i === keys.length) { | ||
trx = [].concat(n).filter(Boolean); | ||
} | ||
} | ||
@@ -178,3 +197,10 @@ return trx.concat(opts.globalTransform || []); | ||
if (trs.length === 0) return done(); | ||
makeTransform(file, trs[0], function (err, s) { | ||
makeTransform(file, trs[0], function f (err, s) { | ||
if (err && pkg && pkg.__dirname) { | ||
var t = path.resolve(pkg.__dirname, trs[0]); | ||
return makeTransform(file, t, function (e, s_) { | ||
if (e) output.emit('error', e); | ||
else f(null, s_); | ||
}); | ||
} | ||
if (err) return output.emit('error', err); | ||
@@ -268,5 +294,25 @@ | ||
cb(null, require(res)(file)); | ||
var r = require(res); | ||
if (typeof r !== 'function') { | ||
cb(new Error('transform not a function')); | ||
} | ||
else cb(null, r(file)); | ||
}); | ||
} | ||
}; | ||
function lookupPkg (file, cb) { | ||
var dirs = parents(path.dirname(file)); | ||
(function next () { | ||
if (dirs.length === 0) return cb(null, undefined); | ||
var dir = dirs.shift(); | ||
var pkgfile = path.join(dir, 'package.json'); | ||
fs.readFile(pkgfile, function (err, src) { | ||
if (err) return next(); | ||
try { var pkg = JSON.parse(src) } | ||
catch (err) { return cb(err) } | ||
pkg.__dirname = dir; | ||
cb(null, pkg); | ||
}); | ||
})(); | ||
} |
{ | ||
"name": "module-deps", | ||
"version": "1.2.0", | ||
"version": "1.2.1", | ||
"description": "walk the dependency graph to generate json output that can be fed into browser-pack", | ||
@@ -12,7 +12,8 @@ "main": "index.js", | ||
"JSONStream": "~0.7.1", | ||
"browser-resolve": "~1.2.1", | ||
"browser-resolve": "~1.2.2", | ||
"resolve": "~0.6.0", | ||
"detective": "~2.1.2", | ||
"concat-stream": "~1.3.1", | ||
"minimist": "~0.0.5" | ||
"minimist": "~0.0.5", | ||
"parents": "0.0.2" | ||
}, | ||
@@ -19,0 +20,0 @@ "devDependencies": { |
@@ -8,1 +8,2 @@ var f = require('./f.js'); | ||
t.equal(typeof GGG, 'undefined', 'GGG leak'); | ||
t.equal(XXX, 123, 'XXX'); |
@@ -7,3 +7,3 @@ var mdeps = require('../'); | ||
test('transform', function (t) { | ||
t.plan(3); | ||
t.plan(4); | ||
var p = mdeps(__dirname + '/files/tr_module/main.js', { | ||
@@ -10,0 +10,0 @@ transform: [ 'insert-aaa', 'insert-bbb' ], |
31363
772
8
16
+ Addedparents@0.0.2
+ Addedparents@0.0.2(transitive)
Updatedbrowser-resolve@~1.2.2