Files
towercontrol/PNPM_MIGRATION.md

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 tailwindcss comme dépendance dev explicite (requis par pnpm)

3. Configuration

  • Création de .npmrc avec :
    • enable-pre-post-scripts=true
    • auto-install-peers=true
  • Rebuild des packages critiques : @prisma/client, prisma, esbuild, sharp, @tailwindcss/oxide

4. Scripts package.json

  • Remplacement de tous les npx par pnpm dans 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_HOME et PATH
  • Remplacement de package-lock.json par pnpm-lock.yaml
  • Remplacement de npm install par pnpm install --frozen-lockfile
  • Remplacement de tous les npx/npm par pnpm

6. docker-compose.yml

  • Mise à jour du service towercontrol-dev pour utiliser pnpm

7. Documentation

  • Mise à jour de README.md :
    • Prérequis : pnpm 9+ au lieu de npm ou yarn
    • Toutes les commandes d'installation et d'utilisation
    • Scripts disponibles

🧪 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 :

  1. Supprimer le lockfile parent si inutilisé
  2. 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

  1. Performance : Installation plus rapide (liens symboliques)
  2. Espace disque : Économie grâce au store global
  3. Sécurité : Structure node_modules stricte (pas d'accès aux dépendances non déclarées)
  4. Monorepo : Support natif des workspaces
  5. 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