UNPKG

@pnpm/read-modules-dir

Version:

Finds all direct packages in node_modules

36 lines 1.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.readModulesDir = readModulesDir; const path_1 = __importDefault(require("path")); const util_1 = __importDefault(require("util")); const graceful_fs_1 = __importDefault(require("graceful-fs")); const readdir = util_1.default.promisify(graceful_fs_1.default.readdir); async function readModulesDir(modulesDir) { try { return await _readModulesDir(modulesDir); } catch (err) { if (util_1.default.types.isNativeError(err) && 'code' in err && err.code === 'ENOENT') return null; throw err; } } async function _readModulesDir(modulesDir, scope) { const pkgNames = []; const parentDir = scope ? path_1.default.join(modulesDir, scope) : modulesDir; await Promise.all((await readdir(parentDir, { withFileTypes: true })).map(async (dir) => { if (dir.isFile() || dir.name[0] === '.') return; if (!scope && dir.name[0] === '@') { pkgNames.push(...await _readModulesDir(modulesDir, dir.name)); return; } const pkgName = scope ? `${scope}/${dir.name}` : dir.name; pkgNames.push(pkgName); })); return pkgNames; } //# sourceMappingURL=index.js.map