Как очищать монорепозиторий?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Структура и управление монорепозиторием
Монорепозиторий (monorepo) - это один репозиторий, содержащий несколько независимых проектов или пакетов. На примере Next.js приложения с фронтендом и бэкендом, очищение подразумевает управление зависимостями, кешем и артефактами сборки.
Основные инструменты для очищения
1. Очистка node_modules и кеша npm
// package.json скрипт
"clean": "rm -rf node_modules && npm cache clean --force",
"clean:all": "npm run clean && rm -rf .next dist build"
Это удаляет установленные зависимости и весь npm кеш, заставляя переустановить свежие версии.
2. Очистка артефактов сборки
// Удаление выходных директорий
"clean:build": "rm -rf .next dist out build .dist"
Это критично для Next.js приложений - .next директория может занимать 100+ МБ.
3. Использование инструментов типа Turborepo
// turborepo.json
{
"globalDependencies": ["tsconfig.json"],
"globalEnv": ["NODE_ENV"]
}
Если используешь Turborepo для управления зависимостями между пакетами, он предоставляет встроенные команды для синхронизации.
Стратегия очищения в CI/CD
// GitHub Actions
- name: Clean dependencies
run: |
npm ci --prefer-offline
npm run clean:build
npm run build
В CI pipeline используй npm ci вместо npm install для воспроизводимости.
Лучшие практики
- Версионирование зависимостей - используй package-lock.json для точной фиксации версий
- Регулярная очистка - добавь pre-commit hook для проверки неиспользуемых зависимостей
- Слой кеширования - в Docker используй multi-stage build
- Удаление типов - удаляй @types пакеты, которые больше не нужны
Для монорепо с несколькими workspace'ами рекомендуется использовать инструменты вроде pnpm с его встроенной поддержкой workspace и более эффективным кешированием.