@pnpm/read-modules-dir
Version:
Finds all direct packages in node_modules
36 lines • 1.4 kB
JavaScript
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
;