0Pricing
React Academy · Lektion

Mit Rollup und tsup für Bibliotheken bundlen

Rollup oder tsup konfigurieren, um React-Komponenten zu bundlen und React sowie ReactDOM korrekt als externe Abhängigkeiten zu behandeln

Mit Rollup und tsup für Bibliotheken bundlen ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Vite nicht für Bibliotheken verwenden

Die Standardkonfiguration von Vite ist für Anwendungen optimiert: Sie bündelt alles, verarbeitet Assets und erzeugt eine index.html. Für eine Komponentenbibliothek benötigen Sie eine andere Ausgabe: reine ESM-/CJS-JavaScript-Dateien ohne Laufzeit-Overhead, ohne gebündeltes React und mit ordnungsgemäßen TypeScript-Deklarationen. Der Bibliotheksmodus von Vite funktioniert zwar, aber Rollup und tsup sind dafür besser geeignet.

Rollup: Der Standard für Bibliotheken

Rollup ist seit Jahren der Standard-Bundler für JavaScript-Bibliotheken. Es erzeugt eine übersichtliche, effiziente Ausgabe mit ausgezeichnetem Tree-Shaking und unterstützt sowohl das ESM- als auch das CJS-Ausgabeformat. Rollups Scope Hoisting beseitigt den Overhead von Modul-Wrappern und erzeugt so die kleinstmöglichen Bibliotheks-Bundles.

tsup: Alternative ohne Konfiguration

tsup ist ein TypeScript-Bundler ohne Konfiguration, der von esbuild unterstützt wird. Er ist deutlich schneller als Rollup (esbuild kompiliert in Mikrosekunden statt in Millisekunden). Die minimale Konfiguration: { entry: ['src/index.ts'], format: ['esm', 'cjs'], dts: true } erzeugt automatisch beide Modulformate und TypeScript-Deklarationen.

Wichtige Konfigurationsoptionen von tsup

Die wichtigsten tsup-Optionen: entry ist das Array der Dateien mit den Einstiegspunkten. format legt die Ausgabeformate fest: ['esm', 'cjs']. dts: true erzeugt .d.ts-TypeScript-Deklarationsdateien neben der JS-Ausgabe. target legt die minimale JavaScript-Umgebung fest (esnext oder es2020). splitting: false hält die Ausgabe in einzelnen Dateien.

Abwägungen zwischen esbuild und Rollup

esbuild (über tsup) kompiliert 10- bis 100-mal schneller als Rollup. Rollup erzeugt eine etwas stärker optimierte Ausgabe mit einer feineren Tree-Shaking-Granularität und mehr Kontrolle über Chunk-Grenzen. Für die meisten Komponentenbibliotheken überwiegt beim Entwickeln die Geschwindigkeit von tsup. Für maximale Kontrolle über das Tree-Shaking oder komplexe Setups mit mehreren Einstiegspunkten wird Rollup bevorzugt.

React als extern markieren

Die wichtigste Bundler-Konfiguration für eine React-Bibliothek: React oder ReactDOM niemals bündeln. Markieren Sie beide als extern, damit sie aus Ihrer Ausgabe ausgeschlossen werden. Wenn Ihre Bibliothek React bündelt, haben Nutzer am Ende zwei Kopien von React — eine aus Ihrem Bundle und eine aus ihrer App. Dadurch funktionieren alle React-Hooks aufgrund mehrerer React-Instanzen nicht mehr.

Externe Abhängigkeiten in tsup konfigurieren

Verwenden Sie in der tsup-Konfiguration die Option external: external: ['react', 'react-dom']. Setzen Sie in der Rollup-Konfiguration external: ['react', 'react-dom', 'react/jsx-runtime']. Beziehen Sie react/jsx-runtime ein, wenn Ihre Bibliothek den JSX Transform verwendet. Machen Sie außerdem alle anderen Peer-Abhängigkeiten, die Ihre Bibliothek deklariert, extern.

Rollup-Plugins für TypeScript

Eine minimale Rollup-Konfiguration für eine TypeScript-Bibliothek benötigt drei Plugins: @rollup/plugin-typescript für die TypeScript-Kompilierung, @rollup/plugin-node-resolve zum Auflösen von Importen aus node_modules und @rollup/plugin-commonjs, um CommonJS-Abhängigkeiten für das Bundle in ESM umzuwandeln. Fügen Sie rollup-plugin-dts für Deklarationsdateien hinzu.

Struktur des Ausgabeverzeichnisses

Eine typische Ausgabe einer Bibliothek in zwei Formaten: dist/esm/index.js und dist/esm/index.d.ts für ESM-Nutzer sowie dist/cjs/index.js und dist/cjs/index.cjs für CJS-Nutzer. Das package.json-Feld exports ordnet diese Pfade den richtigen Umgebungen zu. TypeScript-Deklarationsdateien liegen neben ihren entsprechenden JS-Dateien.

Mehrere Einstiegspunkte

Große Bibliotheken profitieren von mehreren Einstiegspunkten, damit Nutzer nur das importieren, was sie benötigen. Beispiel: entry: ['src/index.ts', 'src/utils.ts', 'src/hooks.ts']. Für jeden Einstiegspunkt werden eigene Ausgabedateien erstellt. Das exports-Feld von package.json ordnet jeden öffentlichen Pfad seiner Ausgabe zu: './utils' → './dist/utils.js'.

Build-Skript in package.json

Fügen Sie den Build-Befehl den scripts in package.json hinzu: "build": "tsup". tsup liest seine Konfiguration aus tsup.config.ts im Stammverzeichnis. Das prepublish-Skript sollte den Build ausführen: "prepublishOnly": "npm run build" stellt sicher, dass Ihr Paket vor der Veröffentlichung bei npm immer gebaut wird.

React als externes Modul im Bibliotheks-Bundle

Warum muss React beim Bündeln einer React-Komponentenbibliothek als extern markiert werden?

Lektionsrückblick: Bibliotheks-Bundling

tsup (auf esbuild-Basis) bietet schnelles Bundling ohne Konfiguration mit format: ['esm', 'cjs'] und dts: true. Rollup ermöglicht mit @rollup/plugin-typescript eine feingranularere Kontrolle über das Tree-Shaking. Die wichtigste Regel: Markieren Sie react, react-dom und alle Peer-Abhängigkeiten immer als extern, damit sie nicht gebündelt werden. Geben Sie die Dateien in dist/esm/ und dist/cjs/ zusammen mit den entsprechenden TypeScript-Deklarationen aus. Mehrere Einstiegspunkte ermöglichen Nutzern ein feingranulares Tree-Shaking.

Häufig gestellte Fragen

Ist die Lektion „Mit Rollup und tsup für Bibliotheken bundlen“ kostenlos?

Ja — der vollständige Text von „Mit Rollup und tsup für Bibliotheken bundlen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Mit Rollup und tsup für Bibliotheken bundlen“?

Rollup oder tsup konfigurieren, um React-Komponenten zu bundlen und React sowie ReactDOM korrekt als externe Abhängigkeiten zu behandeln Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Mit Rollup und tsup für Bibliotheken bundlen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Mit Rollup und tsup für Bibliotheken bundlen
  2. ESM- und CJS-Ausgaben für Dual Packages
  3. Peer-Dependencies und Tree Shaking
  4. Auf npm veröffentlichen und semantische Versionierung
← Zurück zu React Academy