Gerer les dependances avec Claude Code: npm, pnpm, Yarn et CI
Utilisez Claude Code pour gerer npm, pnpm et Yarn avec lockfiles, audits, PR de mise a jour et verification CI.
La gestion des dependances est une discipline d’exploitation
Dans un projet JavaScript ou TypeScript, les dependances bougent souvent plus vite que le code applicatif. React, Vite, TypeScript, ESLint, les outils de test, les SDK de paiement, les bibliotheques UI et les plugins de build peuvent transformer une petite application en arbre de plusieurs centaines de paquets directs et transitifs.
Claude Code peut aider, mais le bon usage n’est pas de lui demander de lancer npm install package@latest sans contexte. Le bon usage est de lui faire inspecter le depot, identifier le gestionnaire de paquets, proteger le lockfile, classer les mises a jour patch/minor/major, analyser les audits de securite et relire les PR Renovate ou Dependabot avec des preuves de verification.
Un lockfile fixe les versions exactes et les informations d’integrite installees. npm utilise package-lock.json, pnpm utilise pnpm-lock.yaml et Yarn utilise yarn.lock. package.json decrit des plages acceptables; le lockfile decrit le resultat reel. En CI, on doit verifier ce resultat, pas le regenerer silencieusement.
Pour le pipeline global, consultez aussi Claude Code CI/CD setup. Pour les depots en workspace, l’article pnpm workspace avec Claude Code complete directement ce guide.
Le flux de travail recommande
Decoupez le travail en inspection, plan, PR de mise a jour, CI et decision humaine.
flowchart LR
scan["Inspection\noutdated / audit"] --> plan["Plan\npatch / minor / major"]
plan --> pr["PR de mise a jour\nRenovate / Dependabot"]
pr --> ci["CI\ninstall / test / build"]
ci --> review["Relecture Claude Code\nrisques et preuves"]
review --> merge["Decision humaine\nmerge ou rejet"]
La premiere demande doit etre une inspection sans modification.
claude -p "
Inspect dependency management in this repository. Do not edit files yet.
Report package manager, lockfile, outdated direct dependencies,
security audit command, scripts that must pass, and risky major updates.
Return file paths and exact commands.
"
Cette consigne force Claude Code a comprendre le contexte avant d’agir. Pour un debutant, c’est l’equivalent d’un inventaire: on liste les pieces, puis seulement ensuite on decide quoi remplacer.
npm, pnpm et Yarn en pratique
Ne melangez pas les gestionnaires de paquets dans un meme depot. Chaque outil a son lockfile et son installation CI.
| Outil | Lockfile | Installation CI | Dependances obsoletes | Audit securite |
|---|---|---|---|---|
| npm | package-lock.json | npm ci | npm outdated | npm audit --audit-level=high |
| pnpm | pnpm-lock.yaml | pnpm install --frozen-lockfile | pnpm outdated --format table | pnpm audit --audit-level high |
| Yarn modern | yarn.lock | yarn install --immutable | yarn up -i ou yarn up <pattern> | yarn npm audit --recursive --severity high |
La documentation npm presente npm ci comme la commande adaptee aux environnements automatises et indique qu’elle echoue si package.json et le lockfile ne correspondent pas. pnpm applique la meme logique avec --frozen-lockfile; Yarn avec --immutable. Le PR met a jour le lockfile, la CI prouve qu’il est reproductible.
Script de verification pret a copier
Placez ce fichier dans scripts/verify-deps.mjs. Il detecte npm, pnpm ou Yarn, execute une installation verrouillee, un audit high, puis typecheck, test et build si ces scripts existent.
#!/usr/bin/env node
import { existsSync, readFileSync } from "node:fs";
import { spawnSync } from "node:child_process";
function readPackageJson() {
return JSON.parse(readFileSync("package.json", "utf8"));
}
function detectPackageManager(pkg) {
const declared = pkg.packageManager || "";
if (declared.startsWith("pnpm@")) return "pnpm";
if (declared.startsWith("yarn@")) return "yarn";
if (declared.startsWith("npm@")) return "npm";
if (existsSync("pnpm-lock.yaml")) return "pnpm";
if (existsSync("yarn.lock")) return "yarn";
if (existsSync("package-lock.json")) return "npm";
throw new Error("No package manager or lockfile detected.");
}
function run(command, args) {
const label = [command, ...args].join(" ");
console.log(`\n$ ${label}`);
const result = spawnSync(command, args, {
stdio: "inherit",
shell: process.platform === "win32",
});
if (result.status !== 0) throw new Error(`Command failed: ${label}`);
}
const pkg = readPackageJson();
const manager = detectPackageManager(pkg);
const installCommands = {
npm: ["npm", ["ci"]],
pnpm: ["pnpm", ["install", "--frozen-lockfile"]],
yarn: ["yarn", ["install", "--immutable"]],
};
const auditCommands = {
npm: ["npm", ["audit", "--audit-level=high"]],
pnpm: ["pnpm", ["audit", "--audit-level", "high"]],
yarn: ["yarn", ["npm", "audit", "--recursive", "--severity", "high"]],
};
const scriptCommands = {
npm: (name) => ["npm", ["run", name]],
pnpm: (name) => ["pnpm", ["run", name]],
yarn: (name) => ["yarn", ["run", name]],
};
run(...installCommands[manager]);
run(...auditCommands[manager]);
for (const name of ["typecheck", "test", "build"]) {
if (pkg.scripts?.[name]) run(...scriptCommands[manager](name));
else console.log(`\n- skip ${name}: script not found`);
}
console.log(`\nDependency verification passed with ${manager}.`);
Ajoutez-le aux scripts:
{
"scripts": {
"deps:verify": "node scripts/verify-deps.mjs"
}
}
Le script verifie, il ne met pas a jour. C’est volontaire: Claude Code, Renovate, Dependabot et les developpeurs passent tous par la meme porte de sortie.
Trois cas d’usage concrets
Premier cas: mettre a jour les outils de developpement d’une petite application. ESLint, Prettier, Vite, Vitest ou TypeScript peuvent etre groupes quand il s’agit de patch/minor. Les major doivent rester separes.
claude -p "
Prepare a dependency update plan for devDependencies only.
Group patch and minor updates for lint/test/build tools.
Do not update major versions.
Run the dependency verification script after changes.
"
Deuxieme cas: une alerte de securite. Ne commencez pas par audit fix --force. Lisez le rapport JSON et demandez a Claude Code de distinguer dependance directe, dependance transitive, version corrigee, correction lockfile-only et major obligatoire.
npm audit --json
pnpm audit --json
yarn npm audit --recursive --json
Troisieme cas: workspace ou monorepo. La gestion des dependances inclut les frontieres internes. packages/ui ne doit pas importer apps/web, et les paquets internes doivent utiliser workspace:*.
claude -p "
Inspect this workspace before dependency updates.
Find packages/* importing from apps/*, internal dependencies not using workspace:*,
duplicated versions of react/typescript/eslint, and scripts that should use filters.
Do not edit files.
"
Renovate et Dependabot
Renovate convient lorsque les regles doivent etre fines. Cette configuration garde les major pour une revue humaine et autorise l’automerge des outils de developpement patch/minor apres CI.
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"dependencyDashboard": true,
"lockFileMaintenance": {
"enabled": true,
"schedule": ["before 5am on monday"],
"automerge": true
},
"packageRules": [
{
"matchManagers": ["npm"],
"matchDepTypes": ["devDependencies"],
"matchUpdateTypes": ["patch", "minor"],
"automerge": true
},
{
"matchUpdateTypes": ["major"],
"labels": ["dependency", "major-update"],
"automerge": false
}
]
}
Dependabot est plus simple pour demarrer sur GitHub.
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
groups:
dev-tooling:
dependency-type: "development"
update-types:
- "minor"
- "patch"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
Incluez GitHub Actions. Des actions obsoletes peuvent rendre les PR de dependances difficiles a diagnostiquer.
CI de verification
name: dependency-check
on:
pull_request:
push:
branches: [main]
jobs:
verify-dependencies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: corepack enable
- run: node scripts/verify-deps.mjs
Ajoutez le cache seulement quand le flux de base est stable. En debug, un cache ancien peut masquer la vraie cause.
Pieges frequents
Le premier piege est d’utiliser npm install en CI au lieu de npm ci. Le deuxieme est de lancer audit fix --force avant d’analyser. Le troisieme est de melanger plusieurs major dans un seul PR. Le quatrieme est de ne relire que package.json et pas le lockfile. Le cinquieme est de traiter une mise a jour ESLint et une mise a jour d’un SDK d’authentification comme le meme risque. Le sixieme concerne les sites de contenu: un changement MDX, CSS ou build peut casser les blocs de code, les publicites ou les CTA. Le workflow de verification aide a cadrer cette derniere partie.
Prompt de revue PR
claude -p "
Review this dependency update PR.
Focus on package.json, lockfile, CI config, and test output.
Report updated packages, direct vs transitive changes, major updates,
peer dependency changes, commands that passed or failed, and manual checks.
Do not change files unless there is a blocking issue.
"
Une bonne revue de dependances donne des preuves: ce qui a change, ce qui a ete teste, ce qui a echoue et ce qu’un humain doit encore regarder.
References et suite
Consultez npm ci, npm audit, pnpm install, pnpm audit, yarn install, yarn npm audit, Claude Code CLI, Dependabot options et Renovate automerge.
Pour continuer, lisez audit de securite avec Claude Code et bonnes pratiques CLAUDE.md. Pour adapter ces regles a un depot reel, la page formation et conseil est le prochain pas logique.
Resultat apres essai
Le gain principal vient de la separation entre generation de mises a jour et verification. Claude Code peut planifier et relire, mais deps:verify et le diff du lockfile decident si le PR est pret. En excluant les major de l’automerge, les echecs deviennent aussi beaucoup plus faciles a comprendre.
PDF gratuit: cheatsheet Claude Code
Saisissez votre email et téléchargez une page avec commandes, habitudes de review et workflow sûr.
Nous protégeons vos données et n'envoyons pas de spam.
À propos de l'auteur
Masa
Ingénieur spécialisé dans les workflows pratiques avec Claude Code.
Articles liés
Échelle de sécurité des permissions Claude Code
Passer du read-only aux éditions limitées, preuves et checks de déploiement sans perdre le contrôle.
Claude Code Small PR Proof Pack : rendre les petits changements reviewables
Un pack de preuve pour PR Claude Code : diff, vérifications, URL publique, CTA et rollback.
Gate de review avant commit avec Claude Code
Review avant commit avec Claude Code : diff, build, URL publique, liens Gumroad, CTA consultation, tests manquants et fichiers hors scope.