frontend/infra/utils/monorepo-kits/README.md
一个用于管理 monorepo 项目的工具包,提供了基于 Rush 框架的项目查找、依赖分析和配置管理功能。
@coze-arch/monorepo-kits 是专为 monorepo 项目设计的工具库,提供了一套完整的包管理、依赖分析和配置查询解决方案。通过统一的 API 接口,帮助开发者更高效地管理复杂的 monorepo 项目结构。
lookupSubPackages(packageName: string): string[]递归查找指定包的所有子依赖包。
import { lookupSubPackages } from '@coze-arch/monorepo-kits';
const deps = lookupSubPackages('@coze/ui-components');
console.log(deps); // ['@coze/icons', '@coze/themes', ...]
getPackageLocation(packageName: string): string获取指定包的文件系统路径。
import { getPackageLocation } from '@coze-arch/monorepo-kits';
const location = getPackageLocation('@coze/ui-components');
console.log(location); // '/path/to/packages/ui-components'
getPackageJson(packageName: string): RushConfigurationProject['packageJson']获取指定包的 package.json 配置信息。
import { getPackageJson } from '@coze-arch/monorepo-kits';
const pkg = getPackageJson('@coze/ui-components');
console.log(pkg.version); // '1.0.0'
getRushConfiguration(): RushConfiguration获取 Rush 配置实例(单例模式)。
import { getRushConfiguration } from '@coze-arch/monorepo-kits';
const rushConfig = getRushConfiguration();
console.log(rushConfig.projects.length); // 项目总数
lookupTo(to: string): string[]查找指定包的直接依赖项。
import { lookupTo } from '@coze-arch/monorepo-kits';
const dependencies = lookupTo('@coze/ui-components');
console.log(dependencies); // 依赖的包名数组
lookupOnly(packageName: string): RushConfigurationProject查找并返回指定包的完整项目配置对象。
import { lookupOnly } from '@coze-arch/monorepo-kits';
const project = lookupOnly('@coze/ui-components');
console.log(project.projectFolder); // 项目文件夹路径
# 在 monorepo 内部作为工具库使用
npm install @coze-arch/monorepo-kits
import {
lookupSubPackages,
getPackageLocation,
getRushConfiguration,
lookupOnly
} from '@coze-arch/monorepo-kits';
// 查找包的所有依赖
const allDeps = lookupSubPackages('your-package');
// 获取包的位置
const location = getPackageLocation('your-package');
// 获取项目配置
const project = lookupOnly('your-package');
// 获取 Rush 配置
const rushConfig = getRushConfiguration();
src/
├── index.ts # 主入口文件,导出所有公共 API
├── sub-packages.ts # 子包管理和依赖查找功能
├── rush-config.ts # Rush 配置管理
└── lookup.ts # 项目查找相关功能
// 分析包的依赖关系
const analyzeDependencies = (packageName: string) => {
const allDeps = lookupSubPackages(packageName);
const directDeps = lookupTo(packageName);
return {
total: allDeps.length,
direct: directDeps.length,
indirect: allDeps.length - directDeps.length
};
};
// 在构建脚本中获取包信息
const buildPackage = (packageName: string) => {
const location = getPackageLocation(packageName);
const pkg = getPackageJson(packageName);
console.log(`Building ${pkg.name}@${pkg.version} at ${location}`);
// ... 执行构建逻辑
};
// 为自动化工具提供项目信息
const getProjectInfo = (packageName: string) => {
const project = lookupOnly(packageName);
const dependencies = lookupSubPackages(packageName);
return {
name: project.packageName,
path: project.projectFolder,
dependencies,
config: project.packageJson
};
};
@rushstack/[email protected]欢迎提交 Issue 和 Pull Request 来改进这个项目。
Apache-2.0 License
如需了解更多信息,请查看项目文档或联系维护团队。