scripts/downlevel-dts/getWorkspaces.mjs (12 lines of code) (raw):
import { readdirSync, readFileSync } from "fs";
import { join } from "path";
export const getWorkspaces = (rootDir) => {
const { packages } = JSON.parse(readFileSync(join(rootDir, "package.json")).toString()).workspaces;
return packages
.map((dir) => dir.replace("/*", ""))
.flatMap((workspacesDir) =>
readdirSync(join(rootDir, workspacesDir), { withFileTypes: true })
.filter((dirent) => dirent.isDirectory())
.map((dirent) => ({ workspacesDir, workspaceName: dirent.name }))
);
};