Some checks failed
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Lint (ubuntu-latest) (push) Has been cancelled
CI / Lint (windows-latest) (push) Has been cancelled
CI / Check (ubuntu-latest) (push) Has been cancelled
CI / Check (windows-latest) (push) Has been cancelled
CI / CI OK (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Website on push / Deploy Push Playground Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Docs Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Antd Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Element Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Naive Ftp (push) Has been cancelled
Deploy Website on push / Rerun on failure (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
- 基于 Vben Admin 5.7.0,仅保留 web-antd 版本 - 删除多余 UI 版本(antdv-next/ele/naive/tdesign) - 删除 backend-mock(已对接真实 .NET 后端) - 删除 playground 和 docs - 添加 Jenkinsfile CI/CD
57 lines
1.2 KiB
TypeScript
57 lines
1.2 KiB
TypeScript
import type { Package } from '@manypkg/get-packages';
|
|
|
|
import { existsSync } from 'node:fs';
|
|
import { dirname, join, resolve } from 'node:path';
|
|
|
|
import * as manypkg from '@manypkg/get-packages';
|
|
const { getPackages: getPackagesFunc, getPackagesSync: getPackagesSyncFunc } =
|
|
manypkg;
|
|
|
|
/**
|
|
* 查找大仓的根目录
|
|
* @param cwd
|
|
*/
|
|
function findMonorepoRoot(cwd: string = process.cwd()) {
|
|
let currentDir = resolve(cwd);
|
|
|
|
while (true) {
|
|
if (existsSync(join(currentDir, 'pnpm-lock.yaml'))) {
|
|
return currentDir;
|
|
}
|
|
|
|
const parentDir = dirname(currentDir);
|
|
if (parentDir === currentDir) {
|
|
return '';
|
|
}
|
|
|
|
currentDir = parentDir;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取大仓的所有包
|
|
*/
|
|
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);
|
|
}
|
|
|
|
export { findMonorepoRoot, getPackage, getPackages, getPackagesSync };
|