import { existsSync, readdirSync } from "node:fs"; import { join } from "node:path"; const SKIPPED_DIRECTORIES = new Set(["dist", "node_modules"]); export function findPackageDirectories(root = "packages") { const packageDirectories = []; function visit(directory) { if (existsSync(join(directory, "package.json"))) { packageDirectories.push(directory); } for (const entry of readdirSync(directory, { withFileTypes: true })) { if (!entry.isDirectory() || SKIPPED_DIRECTORIES.has(entry.name)) { continue; } visit(join(directory, entry.name)); } } visit(root); return packageDirectories.sort(); }