4.1 KiB
4.1 KiB
Migration vers pnpm
✅ Changements effectués
1. Nettoyage npm
- ✅ Suppression de
node_modules/ - ✅ Suppression de
package-lock.json
2. Installation pnpm
- ✅ Installation des dépendances avec
pnpm install - ✅ Création de
pnpm-lock.yaml - ✅ Ajout de
tailwindcsscomme dépendance dev explicite (requis par pnpm)
3. Configuration
- ✅ Création de
.npmrcavec :enable-pre-post-scripts=trueauto-install-peers=true
- ✅ Rebuild des packages critiques :
@prisma/client,prisma,esbuild,sharp,@tailwindcss/oxide
4. Scripts package.json
- ✅ Remplacement de tous les
npxparpnpmdans les scripts - Scripts modifiés :
backup:*(create, list, verify, config, start, stop, status)cache:*(monitor, stats, cleanup, clear)test:*(story-points, jira-fields)
5. Dockerfile
- ✅ Installation de pnpm via
corepack enable - ✅ Variables d'environnement
PNPM_HOMEetPATH - ✅ Remplacement de
package-lock.jsonparpnpm-lock.yaml - ✅ Remplacement de
npm installparpnpm install --frozen-lockfile - ✅ Remplacement de tous les
npx/npmparpnpm
6. docker-compose.yml
- ✅ Mise à jour du service
towercontrol-devpour utiliser pnpm
7. Documentation
- ✅ Mise à jour de
README.md:- Prérequis :
pnpm 9+au lieu denpmouyarn - Toutes les commandes d'installation et d'utilisation
- Scripts disponibles
- Prérequis :
🧪 Tests effectués
- ✅
pnpm install- Installation réussie - ✅
pnpm prisma generate- Génération du client Prisma OK - ✅
pnpm run lint- Linting réussi - ✅
pnpm run build- Build de production réussi
📦 Nouvelles dépendances ajoutées
tailwindcss(devDependencies) - Requis explicitement pour l'import CSS avec pnpm
⚠️ Points d'attention
Warning workspace root
Un warning apparaît lors du build :
Warning: Next.js inferred your workspace root, but it may not be correct.
We detected multiple lockfiles and selected the directory of /Users/julien.froidefond/package-lock.json
Cause : Un package-lock.json existe dans /Users/julien.froidefond/
Solutions :
- Supprimer le lockfile parent si inutilisé
- Ou ajouter dans
next.config.ts:turbopack: { root: process.cwd(), }
Peer dependency warning
@emoji-mart/react 1.1.1 requires peer react@"^16.8 || ^17 || ^18" but found 19.1.0
Impact : Aucun pour le moment, le projet fonctionne avec React 19
Action : À surveiller lors des mises à jour de @emoji-mart/react
🚀 Commandes usuelles
Développement
pnpm install # Installer les dépendances
pnpm run dev # Mode développement
pnpm run build # Build de production
pnpm run start # Démarrer en production
Base de données
pnpm prisma studio # Interface graphique
pnpm prisma generate # Regénérer le client
pnpm prisma db push # Appliquer le schéma
Qualité
pnpm run lint # ESLint
pnpm run prettier:format # Formatter
pnpm run prettier:check # Vérifier le formatage
Docker
docker compose up -d # Production (port 3006)
docker compose --profile dev up -d # Développement (port 3005)
docker compose down # Arrêter
docker compose build --no-cache # Rebuild complet
📝 Avantages de pnpm
- Performance : Installation plus rapide (liens symboliques)
- Espace disque : Économie grâce au store global
- Sécurité : Structure node_modules stricte (pas d'accès aux dépendances non déclarées)
- Monorepo : Support natif des workspaces
- Déterminisme : Lockfile plus fiable
🔄 Rollback vers npm
Si besoin de revenir à npm :
# Supprimer pnpm
rm -rf node_modules pnpm-lock.yaml .npmrc
# Restaurer les anciens scripts dans package.json
# Restaurer l'ancien Dockerfile
# Restaurer l'ancien docker-compose.yml
# Réinstaller avec npm
npm install --legacy-peer-deps
Date de migration : 16 octobre 2025 Version pnpm : 10.15.1 Version Node : 20