Skip to content

Réduction des vulnérabilités npm (outillage de build) - #518

Open
cedric07 wants to merge 3 commits into
masterfrom
fix/vulnerabilities
Open

cedric07 wants to merge 3 commits into
masterfrom
fix/vulnerabilities

Conversation

@cedric07

@cedric07 cedric07 commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Contexte

Un npm install sur la branche de base remontait 77 vulnérabilités (dont 4 critical) dans les devDependencies.
npm audit --omit=dev reste à 0 : rien de ce lot ne part en production côté dépendances npm (lazysizes, polices, etc.).

Les alertes concernent surtout la chaîne de build (Webpack, lint, optimisation d’images). L’objectif de cette PR est de traiter les points actionnables sans npm audit fix --force (changements breaking).

Résumé des changements

1. Suppression de concurrently

  • Avant : npm run lint lançait Stylelint et ESLint en parallèle via concurrently.
  • Après : npm run lint enchaîne lint:css puis lint:js avec && (même logique que bundle-report).
  • Pourquoi : dépendance transitive shell-quote (critical dans l’audit) uniquement via concurrently.
  • Impact usage : si le CSS échoue, le JS n’est pas linté ; acceptable en CI.

2. Remplacement d’imagemin par Sharp + SVGO

  • Avant : ImageMinimizerPlugin.imageminMinify avec imagemin-gifsicle, imagemin-jpegtran, imagemin-optipng, imagemin-svgo (binaires téléchargés + vieilles libs).
  • Après :
    • Raster (JPEG, PNG, GIF, WebP, AVIF, etc.) : ImageMinimizerPlugin.sharpMinify avec encodeOptions explicites (dont WebP/AVIF en lossless, aligné avec les assets du loader images).
    • SVG (assets émis par Webpack, hors pipeline icônes) : ImageMinimizerPlugin.svgoMinify + dépendance directe svgo.
  • Paquets retirés : imagemin et les quatre plugins imagemin-*.
  • Pourquoi : les 2 critical restants venaient de :
    • decompress (chaîne gifsicle / téléchargement de binaires),
    • fast-xml-parser (ancien imagemin-svgo → is-svg v4).
  • allowScripts : suppression des entrées gifsicle, jpegtran-bin, optipng-bin (plus installés).

3. Ajustement de config/svgo.config.js

  • But inchangé : conserver le viewBox (accessibilité / mise à l’échelle des SVG).
  • Changement : syntaxe SVGO v4 (removeViewBox désactivé via un plugin dédié, plus via preset-default.overrides), pour supprimer les warnings au build et aligner avec svgoMinify et postcss-svgo (cssnano).

Ce qui ne change pas pour les devs

  • Commandes habituelles : npm run build, npm run lint, npm start.
  • svgo-loader sur src/img/icons/ : toujours utilisé avec svg-sprite-loader pour optimiser les icônes av agrégation en sprites (complémentaire du minimizer Webpack sur les autres SVG / assets).

Bilan audit (après l’ensemble des changements, en local)

Indicateur Avant (réf.) Après (cible)
Total 77 44
Critical 4 0
Prod (--omit=dev) 0 0

Les high restantes viennent surtout de chaînes sans correctif npm (braces / micromatch via Stylelint, svg-sprite-loader, etc.) — hors scope de cette PR.

Plan de test

  • npm ci (ou npm install) sur la branche
  • npm run lint (CSS puis JS)
  • npm run build sans erreur
  • Vérifier visuellement quelques images dans dist/ (poids / qualité acceptables)
  • Vérifier les sprites d’icônes (dist/icons/) et un usage <use> / sprite côté front si le projet en a
  • npm audit : 0 critical
  • (Optionnel) npm audit --omit=dev : 0 vulnérabilité

Notes pour la revue

  • Pas de npm audit fix --force (risque de downgrade / breaking sur d’autres paquets).
  • Une montée de version Sharp pour d’autres advisories libvips peut être traitée dans une PR séparée si besoin.

…nd its shell-quote dependency reported by npm audit.
@cedric07
cedric07 force-pushed the fix/vulnerabilities branch from b09247e to 39220fd Compare October 7, 2026 13:00
… ImageMinimizerPlugin sharpMinify and svgoMinify, add svgo as a direct devDependency, and align svgo.config with SVGO v4.
@cedric07 cedric07 linked an issue Oct 7, 2026 that may be closed by this pull request
@cedric07 cedric07 changed the title Fix vulnerabilities Réduction des vulnérabilités npm (outillage de build) Oct 7, 2026
@cedric07
cedric07 marked this pull request as ready for review October 7, 2026 13:16
…ation

- Introduced lossless configuration options for both WebP and AVIF formats in the image optimization settings of webpack.common.js.
- This enhancement improves image quality while maintaining file size efficiency.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migration à svgo 4 ?

1 participant