Files
xk-admin/internal/node-utils/src/monorepo.ts

50 lines
1.1 KiB
TypeScript
Raw Normal View History

import type { Package } from '@manypkg/get-packages';
2024-05-19 21:20:42 +08:00
import { dirname } from 'node:path';
import * as manypkg from '@manypkg/get-packages';
import * as findUp from 'find-up';
const { getPackages: getPackagesFunc, getPackagesSync: getPackagesSyncFunc } =
manypkg;
const { findUpSync } = findUp;
2024-05-19 21:20:42 +08:00
/**
*
* @param cwd
*/
function findMonorepoRoot(cwd: string = process.cwd()) {
2024-10-20 22:30:20 +08:00
const lockFile = findUpSync('pnpm-lock.yaml', {
cwd,
type: 'file',
});
2024-05-19 21:20:42 +08:00
return dirname(lockFile || '');
}
/**
*
*/
function getPackagesSync() {
const root = findMonorepoRoot();
return getPackagesSyncFunc(root);
}
/**
*
*/
async function getPackages() {
const root = findMonorepoRoot();
return await getPackagesFunc(root);
}
/**
*
*/
async function getPackage(pkgName: string) {
const { packages } = await getPackages();
return packages.find((pkg: Package) => pkg.packageJson.name === pkgName);
2024-05-19 21:20:42 +08:00
}
export { findMonorepoRoot, getPackage, getPackages, getPackagesSync };