UNPKG

851 BJavaScriptView Raw
1var path = require('path');
2var exec = require('child_process').exec;
3
4// use git rev-parse to find the .git directory
5exports.findGitRoot = function (callback) {
6 exec('git rev-parse --show-toplevel', function (err, stderr) {
7 if (err) {
8 return callback(err);
9 }
10
11 callback(null, stderr.trim());
12 });
13};
14
15// traverse from this module's directory upwards until you find
16// the project root, which is the first directory
17// *not* named node_modules
18exports.findProjectRoot = function (base) {
19 base = base || __dirname;
20 var dir = path.resolve(base, '..');
21
22 if (path.basename(dir) !== 'node_modules') {
23 return dir;
24 }
25
26 return exports.findProjectRoot(dir);
27};
28
29exports.findPackageJson = function () {
30 var dir = exports.findProjectRoot();
31
32 return path.join(dir, 'package.json');
33};