GitIgnore for Teams
跨小组协作时如何制定包级规则和审核流程。
Explore resourceProfessional .gitignore tools
高质量的 Monorepo 不只靠代码规范,更要通过分层 .gitignore 保证每个包、工作区与环境的产物井然有序。本指南介绍如何规划多层忽略规则、与构建系统联动,并用自动化校验保持几十甚至上百个包的整洁。
Monorepo 的核心挑战在于「横向规则」与「纵向差异」的平衡。推荐使用「仓库级 + 包级 + 工具级」的三层结构:
.DS_Store, .idea/).turbo/, .nx/cache/, coverage/)logs/, .cache/).next/, storybook-static/, playwright-report/prisma/migrations/.zip, tmp/, logs/dist/, types/generated/以下结构可适配 Turborepo / Nx / pnpm workspace 等主流方案,关键是将包特有的构建产物留在包内 `.gitignore`。
.
├── package.json          # 顶层 workspace 声明
├── .gitignore            # 全局横向规则(IDE、操作系统、通用 build 产物)
├── packages/
│   ├── web/
│   │   ├── .gitignore   # web 专属:.next/、storybook-static/、cypress/
│   │   └── package.json
│   ├── api/
│   │   ├── .gitignore   # 后端:prisma/migrations/, tmp/, logs/
│   │   └── package.json
│   └── shared/
│       ├── .gitignore   # 库模块:dist/, coverage/
│       └── package.json
└── tools/
    └── scripts/         # 运行脚本(配合 repo 级 .gitignore 排除临时文件)💡 对「可共享」的构建结果(如公共组件库的 `dist/`)应使用 CI job 生成后发布到包管理器,而非提交到仓库。
.pnpm-store/ 建议使用仓库级 `.gitignore` 排除.turbo/ 需要在顶层忽略,否则会不断堆积dist/.nx/cache/ 同理使用 ESLint + 自定义插件或简单的 Node.js 脚本,校验每个包是否存在 `.gitignore`,且包含对应语言/框架的关键目录。
脚本输出可以配合 GitHub Actions 的 ::error 语法,直接打断 PR。
将检查逻辑串接在 Git hooks(Husky)或者 Turborepo pre-task 中,确保开发者在提交前就能修复。
#!/usr/bin/env bash # .husky/pre-commit set -e echo "Validating package-level .gitignore..." yarn lint:gitignore # 若 repo 使用 Turborepo/Nx,可触发缓存清理或 diff 校验 yarn turbo run lint --filter=\"./packages/*\"
.env.local、.next/,后端使用 tmp/、storage/rimraf dist/ .turbo/)bin/,Node 使用 dist/.dvc/ 或 mlruns/ 分区管理packages/*/.gitignore,检查必需模式package.json 是否声明 clean 命令git status --ignored 查看是否有异常被记录优先在根目录以通用规则兜底,再在各包中使用 `!` 反选关键文件。Analyzer 可帮助发现重复或互斥的模式。
将 `.pnpm-store/`、`.turbo/` 等放入根目录 .gitignore,并在 CI 中通过缓存机制持久化,避免提交到仓库。
为每种语言创建独立包目录,使用对应模板(例如 /templates/go、React 模板),并在根目录统一忽略 IDE、操作系统文件。
跨小组协作时如何制定包级规则和审核流程。
Explore resource通过高级模式减少包之间的冲突与重复配置。
Explore resource为各语言/框架的子包挑选专属模板。
Explore resource组合语言、框架、工具级忽略规则,输出一份可复用的仓库模板。