Files
2025-11-30 08:26:47 +08:00

160 lines
3.5 KiB
Markdown

---
name: managing-dependencies
description: Manages npm dependencies (audit, updates, breaking changes, lockfile). Use before releases, after adding packages, or monthly for maintenance
allowed-tools: Read, Grep, Glob, Bash
---
# Gestion des Dépendances
Gère dépendances npm de manière sécurisée (audit, mises à jour, lockfile).
## Table des matières
- [Quand utiliser](#quand-utiliser)
- [Scripts npm](#scripts-npm)
- [Workflows essentiels](#workflows-essentiels)
- [Gestion vulnérabilités](#gestion-vulnérabilités)
- [Migrations majeures](#migrations-majeures)
- [Bonnes pratiques](#bonnes-pratiques)
- [Checklist](#checklist)
- [En cas de doute](#en-cas-de-doute)
## Quand utiliser
- Avant chaque release production
- Après ajout nouvelles dépendances
- Mensuellement maintenance proactive
- Quand vulnérabilités signalées
- Migrations versions majeures
## Scripts npm
- `npm audit` - Vue d'ensemble sécurité
- `npm audit --json` - Rapport détaillé
- `npm audit fix` - Fix auto (patch/minor)
- `npm outdated` - Packages à mettre à jour
- `npm update` - Update patches/minors
- `npm ls` / `npm ls --depth=0` - Arbre dépendances
## Workflows essentiels
**Audit sécurité :**
- CRITICAL/HIGH → Corriger immédiatement
- MODERATE → Corriger avant release
- LOW → Corriger quand possible
**Types mises à jour (SemVer) :**
- Patch (1.0.x) → Bugs, sécurisé
- Minor (1.x.0) → Features, rétrocompatible
- Major (x.0.0) → Breaking, nécessite tests
**Stratégie :**
- Patches → Auto si tests passent
- Minors → Manuel vérification
- Majors → Manuel migration plan
**Lockfile :**
- Garantit versions exactes
- Commit toujours avec package.json
- Désynchronisé → `npm install`
- Conflit merge → Résoudre + `npm install`
## Gestion vulnérabilités
**Critiques/Hautes :** Fix immédiat, tester, déployer rapidement
**Sans fix :** Package alternatif, fork + patch, monitorer, désactiver si possible
**Packages deprecated :** Chercher alternatives maintenues, planifier migration
## Migrations majeures
**Préparation :**
1. Lire CHANGELOG (breaking changes)
2. Estimer impact code
3. Créer branche dédiée
**Exécution :**
1. Update package.json
2. Adapter code aux breaking changes
3. Corriger erreurs TS/ESLint
4. Tests exhaustifs
**Validation :**
- Tests passent
- Lighthouse score OK
- Performance stable
- Pas régressions visuelles
## Bonnes pratiques
**Do's :**
- Commit lockfile toujours
- Audit hebdomadaire minimum
- Tests après update
- Un update à la fois
- Lire CHANGELOG majors
- Respecter SemVer
**Don'ts :**
- Pas `npm install --force` (sauf urgence)
- Pas updates aveugles
- Pas lockfile .gitignore
- Pas updates avant release
- Pas dépendances non maintenues
## Checklist
- [ ] `npm audit` sans CRITICAL/HIGH
- [ ] `npm outdated` vérifié
- [ ] Lockfile synchronisé
- [ ] Tests passent après update
- [ ] Build OK
- [ ] Performance stable
- [ ] Pas deprecated packages
- [ ] CHANGELOG lu (majors)
- [ ] Lockfile committé
## En cas de doute
**Règles absolues :**
1. `npm audit` AVANT release obligatoire
2. Tester APRÈS mise à jour
3. Jamais ignorer lockfile
4. CHANGELOG pour majors
5. CRITICAL/HIGH fix immédiat
**Workflow mensuel :**
```bash
npm outdated
npm audit
npm update
npm test
```
**Workflow avant release :**
```bash
npm audit --audit-level=moderate
npm outdated
npm test
npm run build
```
**Références :**
- package.json - Versions actuelles
- package-lock.json - Lockfile
- npm docs - Documentation