8.4.1 黑名单第一条——依赖与构建产物
node_modules 是 .gitignore 的头号目标——它太大、能重建、每个人的都可能不同。
依赖目录
node_modules
gitignore
# 任何位置的 node_modules
**/node_modules/
# pnpm 存储(如果使用)
.pnpm-store/为什么不提交:
- 体积巨大(几百 MB 到几 GB)
- 可通过
pnpm install完全恢复 - 不同系统可能有平台相关的二进制文件
正确做法:
- 提交
package.json和pnpm-lock.yaml - 通过锁文件确保依赖版本一致
其他依赖目录
gitignore
# Python
__pycache__/
*.pyc
venv/
.venv/
# Go
vendor/
# Ruby
.bundle/构建产物
Next.js 构建
gitignore
# Next.js 开发和生产构建
.next/
# 静态导出
out/
# 独立部署
.next/standalone/通用构建目录
gitignore
# 常见构建输出
dist/
build/
output/
# TypeScript 编译
*.tsbuildinfo
# Webpack/Vite
.cache/打包工具产物
gitignore
# Turbo
.turbo/
# Storybook
storybook-static/
# Bundle 分析
.next/analyze/
stats.html日志文件
gitignore
# npm/pnpm 日志
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
# 应用日志
*.log
logs/
*.log.*
# PM2 日志
.pm2/logs/测试与覆盖率
gitignore
# Jest/Vitest
coverage/
.nyc_output/
# Playwright
test-results/
playwright-report/
playwright/.cache/
# Cypress
cypress/screenshots/
cypress/videos/完整示例
gitignore
# =========================================
# 依赖
# =========================================
node_modules/
.pnpm-store/
# =========================================
# 构建产物
# =========================================
.next/
out/
dist/
build/
*.tsbuildinfo
# =========================================
# 日志
# =========================================
*.log
npm-debug.log*
pnpm-debug.log*
# =========================================
# 测试
# =========================================
coverage/
test-results/
playwright-report/
# =========================================
# 缓存
# =========================================
.cache/
.turbo/
.eslintcache已提交的文件如何处理
如果不小心提交了 node_modules:
bash
# 1. 添加到 .gitignore
echo "node_modules/" >> .gitignore
# 2. 从 Git 历史中移除(但保留本地文件)
git rm -r --cached node_modules/
# 3. 提交变更
git commit -m "chore: 移除 node_modules 并添加到 gitignore"
# 4. 如果已推送,需要强制推送(谨慎使用)
git push --force-with-leaseAI 协作指南
示例 Prompt:
"我的 Next.js 项目用 pnpm 和 Prisma,请帮我生成完整的 .gitignore,包含依赖、构建产物、日志等。"
验收清单
- [ ] 理解 node_modules 不该提交的原因
- [ ] 能配置构建产物的忽略规则
- [ ] 知道如何处理意外提交的文件
- [ ] 理解日志和测试产物的忽略
