用途:meta-repo 技能面向多仓库(polyrepo)编排场景,借助 meta 工具在多个独立子仓库间批量执行操作。meta 仓库是一个轻量 git 仓库,内含 .meta 配置文件列出子仓库,命令会一次性分发到所有子仓库。与 git submodule 或 subtree 不同,子仓库保持独立的一等 git 仓库,团队可只克隆自己需要的部分。
主要能力:一条命令克隆整个多仓库项目;在所有子仓库运行 git 命令(status、checkout、pull);用 meta exec 运行任意 shell 命令;用 meta npm/yarn 批量安装或运行脚本;用 meta project create/import 添加子仓库;用 meta project migrate 将 monorepo 拆分为多仓库;用 --include-only 和 --exclude 过滤目标仓库。
使用方式:先全局安装 npm i -g meta。初始化新 meta 仓库:mkdir my-meta-repo && cd my-meta-repo && git init,再执行 meta init。添加子仓库:meta project create services/api git@github.com:yourorg/api.git 或 meta project import packages/ui git@github.com:yourorg/ui.git。克隆已有 meta 仓库:meta git clone git@github.com:yourorg/my-meta-repo.git。批量执行:meta git status、meta exec "npm ci"、meta exec "npm run build" --parallel、meta npm install。拉取新配置后运行 meta git update 克隆新增子仓库。
适用场景:多仓库项目的新成员入职、跨仓库 git 操作、批量安装与构建、monorepo 迁移、按团队或变更范围筛选仓库。
限制:不适用于用 Turborepo 或 Nx 管理的单仓库构建,也不用于 Docker/容器编排。.meta 为 JSON 格式,仅含 projects 映射;子目录会自动加入 .gitignore,不应提交。命令在 meta 根目录而非子仓库执行时,需检查 .meta 内容与路径。shell 变量需转义,如 meta exec "echo $(pwd)"。若提示 meta: command not found,需全局安装。具体标志与完整子命令见 references/commands.md。