Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import type { MonorepoInfo } from './detect'
import fs from 'node:fs'
import path from 'node:path'
import { glob as globby } from 'tinyglobby'
import { normalizePath } from '../utils/path'
export interface PackageInfo {
path: string
name: string
version?: string
private: boolean
manifest: Record<string, any>
}
export async function findPackages(monorepo: MonorepoInfo): Promise<PackageInfo[]> {
const patterns = monorepo.packages.map(p =>
normalizePath(path.join(monorepo.root, p, 'package.json')),
)
const results = await globby(patterns, {
absolute: true,
cwd: monorepo.root,
expandDirectories: false,
ignore: ['**/node_modules/**'],
})
return Promise.all(
results.map(async (pkgPath) => {
const content = fs.readFileSync(pkgPath, 'utf8')
const manifest = JSON.parse(content)
return {
path: path.dirname(pkgPath),
name: manifest.name,
version: manifest.version,
private: !!manifest.private,
manifest,
}
}),
)
}
|