pi-mono/scripts/package-workspaces.mjs

24 lines
629 B
JavaScript

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();
}