You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
659 B
31 lines
659 B
var path = require('path') |
|
var fs = require('fs') |
|
|
|
function defaultCheck (dir) { |
|
return fs.existsSync(path.join(dir, 'package.json')) |
|
} |
|
|
|
function findRoot (start, check) { |
|
start = start || module.parent.filename |
|
check = check || defaultCheck |
|
|
|
if (typeof start === 'string') { |
|
if (start[start.length - 1] !== path.sep) { |
|
start += path.sep |
|
} |
|
start = start.split(path.sep) |
|
} |
|
if (!start.length) { |
|
throw new Error('package.json not found in path') |
|
} |
|
start.pop() |
|
var dir = start.join(path.sep) |
|
try { |
|
if (check(dir)) { |
|
return dir |
|
} |
|
} catch (e) {} |
|
return findRoot(start, check) |
|
} |
|
|
|
module.exports = findRoot
|
|
|