Les greffons dans Vite

Par gmousseaulangevin, 27 février, 2025
Logo Vite

Rebienvenue dans ma veille technologique sur le serveur de développement Vite. Aujourd'hui, nous verrons pourquoi utiliser des greffons, je donnerais quelques exemples de greffons qui pourraient vous être utiles et j'expliquerai comment créer son propre module d'extension.

Pourquoi utiliser des greffons

Les greffons dans Vite permettent principalement d'étendre ses fonctionnalités au moment de l'exécution du serveur de développement. Ceux-ci sont simplement des modules JavaScript qui peuvent être utilisés dans le code source à l'aide de « hooks ». Un « hook » est une manière de rendre disponibles certaines fonctions à plusieurs composants d'une application.

Quelques exemples de greffons

Parmi les greffons disponibles pour Vite, on peut compter @vitejs/plugin-vue, @vitejs/plug-in-react, @sveltejs/vite-plugin-svelte et plusieurs autres qui ont tous quelque chose en commun. Chacun de ces plug-ins sont utilisés pour assurer la compatibilité de Vite avec des cadres d'applications comme Vue.js, React et Svelte. Ceux-ci font aussi partie des modèles d'échafaudages qui permettent de créer rapidement une application Vite avec votre framework préféré. Pour rappel, on peut échafauder un projet avec la commande suivante :

$ npm create vite@latest mon-application -- --template LE-NOM-DU-MODÈLE

Si vous préférez coder en TypeScript pour avoir une meilleure sécurité et sureté du typage, vite-plugin-dts est ce qu'il vous faut. Ce greffon permet d'analyser votre code source écrit en TypeScript et de gérer le typage. Un autre greffon qui peut être très utile est vite-plugin-eslint. Celui-ci va procéder à une analyse statique du code source lors du démarrage du serveur de développement et va empêcher la compilation si des erreurs de « linting » sont présentes. Un autre exemple de greffon est vite-plugin-svgr qui cette fois-ci pourrait vous être utile si vous utilisez souvent des images vectorielles avec le framework React. Cette extension va convertir les fichiers de type « .svg » en composants React réutilisables optimisant ainsi le flux de travail pour les applications React multiplateformes.

Faire son propre greffon

Quand on crée un greffon pour Vite, plusieurs « hooks » sont mis à notre disposition pour effectuer diverses actions lors de l'exécution du serveur de développement. Il y a par exemple config() qui permet de modifier la configuration de Vite ou en retourner une différente. On peut utiliser load() pour définir une logique de chargement personnalisée pour un module ou buildStart() qui permet d'effectuer des actions lorsque Vite débute le processus de compilation. Pour cet exemple de greffon, le « hook » transform(code, id) va être utilisé afin d'effectuer une transformation du code avant qu'il soit empaqueté pour le navigateur.

Dans cet exemple, nous avons un greffon qui va remplacer automatiquement du code par une chaine de caractères de notre choix.

Tout d'abord, il faut définir une fonction avec le nom de notre greffon. Cette fonction va prendre deux paramètres, le premier est le code à chercher et le deuxième est le texte qui le remplacera. Ensuite, à l'intérieur du retour de la fonction, on y définit le nom de l'extension qui sera utilisé pour les messages d'erreurs et les journaux. Après, le « hook » transform(code, id) est appelé et la logique de remplacement du code est mise à l'intérieur.

export default function replaceTextPlugin(options = {}) {
  const { search, replace } = options;

  return {
    name: 'replace-text-plugin',
    transform(code, id) {
      if (id.endsWith('.js')) { // Target only JS files
        return code.replace(new RegExp(search, 'g'), replace);
      }
      return code;
    },
  };
}

Source. How To Write Vite Plugin?

Pour que le greffon soit utilisable par Vite, il faut lui spécifier certaines informations dans le fichier vite.config.js que je vais devoir créer dans mon cas, car il n'existe pas par défaut dans la version Vanilla de Vite.

D'abord, il faut importer le module qui contient l'extension. Puis, il faut appeler dans la section plugins la méthode principale du greffon et spécifier dans les paramètres le code à remplacer et par quoi le remplacer.

import replaceTextPlugin from './replace-text-plugin';

export default {
  plugins: [
    replaceTextPlugin({
      search: 'Bonjour',
      replace: 'Bonsoir',
    }),
  ],
};

Source. How To Write Vite Plugin?

Avant

Sur la page
Dans le code source du navigateur

Après

Sur la page
Dans le code source du navigateur

Comme on peut le voir ici, toutes les occurrences de « Bonjour » on étés remplacées dans les fichiers de code source JavaScript que l'on retrouve dans le navigateur.

Références

Medium. "How To Write Vite Plugin?". Consultée le 24 février 2025. https://medium.com/@turingvang/how-to-write-vite-plugin-d8580153ee97

Vite. "Using Plugins". Consultée le 24 février 2025. https://vite.dev/guide/using-plugins

Medium. « Best Vite Plugins to Supercharge Your Development Workflow ». Consultée le 27 février 2025. https://medium.com/@appvintechnologies/best-vite-plugins-to-supercharge-your-development-workflow-69680f37b7d7

Rollup. « Plugin Development ». Consultée le 27 février 2025. https://rollupjs.org/plugin-development/#conventions

Commentaires1

abnousinane

il y a 2 semaines 2 jours

C'est vraiment intéressant! J'ai une question : y a-t-il un ordre dans lequel Vite exécute les hooks d’un greffon lors du build? Ce serait sympa de savoir comment ça fonctionne.