1 | const path = require('path');
|
2 |
|
3 | const {
|
4 | faillog,
|
5 | } = require('./log');
|
6 |
|
7 | const {
|
8 | yellow,
|
9 | } = require('./colorStr');
|
10 |
|
11 | const {
|
12 | hasFile,
|
13 | } = require('./fileOp');
|
14 |
|
15 | const getPkgJson = require('./getPkgJson');
|
16 |
|
17 | let cacheDir;
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | module.exports = () => {
|
23 | if (cacheDir) {
|
24 | return cacheDir;
|
25 | }
|
26 |
|
27 | let layer = 10;
|
28 | let curDir = __dirname;
|
29 | while (layer--) {
|
30 |
|
31 | if (hasFile(curDir, ['node_modules', 'package.json']) && getPkgJson(curDir).name !== '@new4/utils') {
|
32 | cacheDir = curDir;
|
33 | return curDir;
|
34 | }
|
35 | curDir = path.join(curDir, '..');
|
36 | }
|
37 | return faillog(`no directory ${yellow('node_modules')} found after searching ${yellow(layer)} layers`);
|
38 | };
|