Regrouper avec Rollup et tsup pour les bibliothèques
Configurez Rollup ou tsup pour regrouper des composants React en externalisant correctement React et ReactDOM
Regrouper avec Rollup et tsup pour les bibliothèques est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.
Pourquoi ne pas utiliser Vite pour les bibliothèques
La configuration par défaut de Vite est optimisée pour les applications : elle regroupe tout, gère les ressources et génère un index.html. Pour une bibliothèque de composants, vous avez besoin d’un résultat différent : des fichiers JavaScript ESM/CJS purs, sans surcharge à l’exécution, sans React regroupé et avec des déclarations TypeScript correctes. Le mode bibliothèque de Vite fonctionne, mais Rollup et tsup sont davantage conçus pour cela.
Rollup : la référence pour les bibliothèques
Rollup est depuis des années l’outil de regroupement de référence pour les bibliothèques JavaScript. Il produit un résultat propre et efficace, avec une excellente élimination des modules inutilisés, et prend en charge les formats de sortie ESM et CJS. La remontée de portée de Rollup élimine la surcharge des enveloppes de modules et produit les ensembles de fichiers de bibliothèque les plus petits possibles.
tsup : une alternative sans configuration
tsup est un outil de regroupement TypeScript sans configuration, propulsé par esbuild. Il est considérablement plus rapide que Rollup (esbuild compile en microsecondes, contre des millisecondes). La configuration minimale : { entry: ['src/index.ts'], format: ['esm', 'cjs'], dts: true } génère automatiquement les deux formats de modules et les déclarations TypeScript.
Principales options de configuration de tsup
Les principales options de tsup sont les suivantes : entrée est le tableau des fichiers de point d’entrée. format indique les formats de sortie : ['esm', 'cjs']. dts : vrai génère les fichiers de déclaration TypeScript .d.ts en parallèle de la sortie JS. cible définit l’environnement JavaScript minimal (esnext ou es2020). découpage : faux conserve la sortie dans des fichiers uniques.
Compromis entre esbuild et Rollup
esbuild (par l’intermédiaire de tsup) compile 10 à 100 fois plus vite que Rollup. Rollup produit une sortie légèrement mieux optimisée, avec une granularité plus fine de l’élimination du code inutilisé et davantage de contrôle sur les limites des fragments. Pour la plupart des bibliothèques de composants, la rapidité de tsup l’emporte en développement. Pour un contrôle maximal de l’élimination du code inutilisé ou des configurations complexes à plusieurs points d’entrée, Rollup est préférable.
Déclarer React comme externe
La configuration la plus importante de l’outil de regroupement pour une bibliothèque React est la suivante : ne regroupez jamais React ni ReactDOM. Déclarez-les comme externes afin de les exclure de votre sortie. Si votre bibliothèque regroupe React, les utilisateurs se retrouveront avec deux copies de React : une provenant de votre paquet et l’autre de leur application. Cela casse tous les points d’ancrage de React à cause de la présence de plusieurs instances de React.
Configurer les dépendances externes dans tsup
Dans la configuration de tsup, utilisez l’option external : external: ['react', 'react-dom']. Dans la configuration de Rollup, définissez external: ['react', 'react-dom', 'react/jsx-runtime']. Incluez react/jsx-runtime si votre bibliothèque utilise la transformation JSX. Déclarez également comme externes toutes les autres dépendances entre pairs déclarées par votre bibliothèque.
Modules complémentaires Rollup pour TypeScript
Une configuration Rollup minimale pour une bibliothèque TypeScript nécessite trois modules complémentaires : @rollup/plugin-typescript pour compiler TypeScript, @rollup/plugin-node-resolve pour résoudre les importations depuis node_modules et @rollup/plugin-commonjs pour convertir les dépendances CommonJS en ESM dans le paquet. Ajoutez rollup-plugin-dts pour les fichiers de déclaration.
Structure du répertoire de sortie
Une sortie typique pour une bibliothèque proposant deux formats : dist/esm/index.js et dist/esm/index.d.ts pour les utilisateurs d’ESM, dist/cjs/index.js et dist/cjs/index.cjs pour les utilisateurs de CJS. Le champ exports de package.json associe ces chemins aux environnements appropriés. Les fichiers de déclaration TypeScript se trouvent à côté de leurs équivalents JS.
Plusieurs points d’entrée
Les grandes bibliothèques ont intérêt à proposer plusieurs points d’entrée afin que les utilisateurs n’importent que ce dont ils ont besoin. Par exemple : entry: ['src/index.ts', 'src/utils.ts', 'src/hooks.ts']. Chaque point d’entrée produit ses propres fichiers de sortie. Le champ exports de package.json associe chaque chemin public à sa sortie : './utils' → './dist/utils.js'.
Script de compilation dans package.json
Ajoutez la commande de compilation aux scripts de package.json : "build": "tsup". tsup lit sa configuration dans tsup.config.ts à la racine. Le script de prépublication doit lancer la compilation : "prepublishOnly": "npm run build" garantit que votre paquet est toujours compilé avant sa publication sur npm.
React externe dans le paquet de la bibliothèque
Pourquoi React doit-il être déclaré comme externe lors du regroupement d’une bibliothèque de composants React ?
Récapitulatif de la leçon : regroupement de bibliothèques
tsup (propulsé par esbuild) fournit un regroupement rapide sans configuration, avec format: ['esm', 'cjs'] et dts: true. Rollup offre un contrôle plus fin de l’élimination du code inutilisé avec @rollup/plugin-typescript. La règle essentielle : déclarez toujours react, react-dom et toutes les dépendances entre pairs comme externes pour éviter de les regrouper. Produisez les sorties dans dist/esm/ et dist/cjs/ avec les déclarations TypeScript correspondantes. Plusieurs points d’entrée permettent aux utilisateurs une élimination plus fine du code inutilisé.
Questions Fréquemment Posées
La leçon « Regrouper avec Rollup et tsup pour les bibliothèques » est-elle gratuite ?
Oui — le texte complet de « Regrouper avec Rollup et tsup pour les bibliothèques » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Regrouper avec Rollup et tsup pour les bibliothèques » ?
Configurez Rollup ou tsup pour regrouper des composants React en externalisant correctement React et ReactDOM Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer React Academy ?
Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Regrouper avec Rollup et tsup pour les bibliothèques » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon React Academy ?
Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Regrouper avec Rollup et tsup pour les bibliothèques
- Sortie de paquet double ESM et CJS
- Dépendances homologues et élimination des branches mortes
- Publier sur npm et gérer le versionnage sémantique