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.
		
		
		
		
		
			
		
			
				
					32 lines
				
				659 B
			
		
		
			
		
	
	
					32 lines
				
				659 B
			| 
											3 years ago
										 | 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 |