Supprimer le code inutilisé

Les registres tels que npm ont amélioré l'univers JavaScript en permettant à chacun de télécharger et d'utiliser plus d'un demi-million de packages publics. Cependant, nous incluons souvent des bibliothèques que nous n'utilisons pas pleinement. Pour résoudre ce problème, analysez votre bundle afin de détecter le code inutilisé, puis supprimez les bibliothèques inutilisées et inutiles.

En supprimant le code inutilisé, vous pouvez améliorer les métriques Core Web Vitals de votre site Web. Par exemple, Largest Contentful Paint peut être affecté par du code inutilisé lorsque des éléments de grande taille inutiles se disputent la bande passante avec d'autres ressources. Le LCP peut également être affecté si de grands composants JavaScript qui ne génèrent du balisage que sur le client contiennent des références à des candidats au LCP en retardant le moment où ces ressources peuvent se charger.

Le code inutilisé peut également affecter l'interaction avec le prochain rendu (INP), car même le code JavaScript inutilisé doit être téléchargé, analysé, compilé, puis exécuté. Le code inutilisé peut entraîner des retards inutiles dans le temps de chargement des ressources, l'utilisation de la mémoire et l'activité du thread principal, ce qui contribue à une mauvaise réactivité des pages.

Ce guide explique comment analyser le code de base de votre projet pour détecter le code inutilisé et propose des stratégies pour supprimer le code inutilisé des composants JavaScript que vous envoyez à vos utilisateurs en production.

Analyser votre lot

DevTools peut vous indiquer la taille de toutes les requêtes réseau :

  1. Appuyez sur Ctrl+Maj+J (ou Cmd+Option+J sur Mac) pour ouvrir les outils de développement.
  2. Cliquez sur l'onglet Réseau.
  3. Cochez la case Disable cache (Désactiver le cache).
  4. Actualisez la page.
Panneau "Network" (Réseau) avec requête de bundle
Outils de développement affichant la taille d'un fichier JavaScript.

L'onglet Couverture de DevTools vous indique également la quantité de code CSS et JS de votre application qui n'est pas utilisé.

Couverture de code dans les outils de développement
Onglet "Couverture".

En spécifiant une configuration complète de Lighthouse via sa CLI Node, vous pouvez exécuter l'audit "Réduire le code JavaScript inutilisé" pour suivre la quantité de code inutilisé fournie avec votre application.

Rapport Lighthouse "Réduire les ressources JavaScript inutilisées"
Réduisez les rapports JavaScript inutilisés.

Si vous utilisez webpack comme outil d'empaquetage, Webpack Bundle Analyzer peut vous aider à examiner la composition du bundle. Incluez le plug-in dans le fichier de configuration de votre webpack comme n'importe quel autre plug-in:

module.exports = {
  //...
  plugins: [
    //...
    new BundleAnalyzerPlugin()
  ]
}

Bien que webpack soit couramment utilisé pour créer des applications monopages, d'autres outils de compilation, tels que Parcel et Rollup, disposent également d'outils de visualisation que vous pouvez utiliser pour analyser votre bundle.

Si vous actualisez l'application avec ce plug-in inclus, un diagramme en camembert entièrement zoomable s'affiche.

Webpack Bundle Analyzer
Carte proportionnelle de l'analyseur de bundle Webpack.

Cette visualisation montre quelles parties de votre bundle sont plus volumineuses que d'autres, ce qui vous permet de mieux comprendre le nombre et la taille des bibliothèques importées par votre application. Cela peut vous aider à identifier si vous utilisez des bibliothèques inutilisées ou inutiles.

Supprimer les bibliothèques inutilisées

Dans l'image de la carte proportionnelle précédente, il existe de nombreux packages dans un seul domaine @firebase. Si votre site Web n'a besoin que du composant de base de données Firebase, mettez à jour les importations pour récupérer cette bibliothèque:

import firebase from 'firebase';
import firebase from 'firebase/app';
import 'firebase/database';

Concernant le package mystérieux dont vous êtes certain qu'il n'est pas utilisé nulle part, prenez du recul et examinez les dépendances de niveau supérieur qui l'utilisent. Essayez de trouver un moyen d'importer uniquement les composants dont vous avez besoin. Si vous n'utilisez pas de bibliothèque, supprimez-la. Si la bibliothèque n'est pas requise pour le chargement initial de la page, envisagez de la charger en différé.

Si vous utilisez webpack, consultez la liste des plug-ins qui suppriment automatiquement le code inutilisé des bibliothèques populaires.

Supprimer les bibliothèques inutiles

Toutes les bibliothèques ne peuvent pas être divisées en parties et importées de manière sélective. Dans ces cas, demandez-vous si vous pouvez supprimer complètement la bibliothèque. La création d'une solution personnalisée ou l'utilisation d'une alternative plus légère doivent toujours être des options à envisager. Toutefois, il est important de peser la complexité et l'effort requis pour l'une de ces stratégies avant de supprimer complètement une bibliothèque de votre application.