nextdevkit
Version:
A Comprehensive CLI Toolkit for Next.js Development
20 lines (19 loc) • 623 B
JavaScript
import path from 'path';
import isNextJsRoot from './isNextJsRoot.js';
import memoize from './lib/memoize.js';
const findProjectRoot = memoize(async (directory) => {
let currentDir = path.resolve(directory);
const visitedDirs = new Set();
while (currentDir !== path.dirname(currentDir)) {
if (visitedDirs.has(currentDir)) {
return '';
}
visitedDirs.add(currentDir);
if (await isNextJsRoot(currentDir)) {
return currentDir;
}
currentDir = path.dirname(currentDir);
}
return '';
}, { maxSize: 500 });
export default findProjectRoot;