用途:meta 用于多仓库(multi-repo)编排,解决 monorepo 与多仓库之争。meta 仓库本身是一个普通 git 仓库,只存放编排产物(.meta 配置、可选的根 package.json、docker-compose.yml、Makefile 等);子仓库按 .meta 中列出的路径独立存在,各自拥有远程、分支与历史,meta 仓库不跟踪子仓库文件。
主要能力:一条命令克隆整个多仓库项目;在所有子仓库上批量执行 git 命令(status、checkout、pull);用 meta exec 运行任意 shell 命令并支持 --parallel;批量运行 npm/yarn 命令;用 meta project create/import 添加或导入子仓库;用 meta project migrate 把 monorepo 拆分为多个仓库;通过 loop 提供的 --include-only 与 --exclude 过滤目标子仓库。插件架构(commander.js、meta-* npm 包)可扩展以包装任意 CLI 工具。
使用方式:全局安装 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 为 JSON,仅含 projects 映射(本地路径到 git 远程 URL),由 meta project 命令自动维护并同步更新 .gitignore。
适用场景:新开发者一键拉取全部子仓库;跨仓库批量 git 操作;批量安装依赖或构建;monorepo 迁移;按团队或变更范围过滤执行。
限制与注意:子仓库目录会被加入 .gitignore,若手动编辑 .meta 而未用 meta project 命令,路径不会写入 .gitignore,子仓库内容会泄漏到 meta 仓库的 git status;meta git clone 需要对该 .meta 中每个子仓库都有 SSH 访问权限,任一失败在并行输出中不易察觉;meta exec 中的 shell 变量会在 meta 上下文展开,需转义如 meta exec "echo $PWD";meta git update 只克隆缺失仓库、不执行 pull;插件需全局安装,仅放在 devDependencies 中可能找不到。不适用于用 Turborepo 或 Nx 管理的单仓库构建,也不适用于 Docker/容器编排。首次激活时会检查配套技能,缺失时可用 npx skills add AbsolutelySkilled/AbsolutelySkilled --skill <name> 安装。