0Pricing
React Academy · Lektion

Peer-Dependencies und Tree Shaking

React als Peer-Dependency deklarieren, Tree Shaking ohne Seiteneffekte aktivieren und das veröffentlichte Paket testen

Peer-Dependencies und Tree Shaking ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.

Was sind Peer-Abhängigkeiten?

Peer-Abhängigkeiten deklarieren Pakete, die Ihre Bibliothek benötigt, deren Bereitstellung sie aber vom Nutzer erwartet. In der package.json Ihrer Bibliothek gehört React in peerDependencies, nicht in dependencies. Wenn ein Nutzer Ihre Bibliothek installiert, installiert npm/yarn React nicht automatisch — die App des Nutzers verfügt bereits über React, und Ihre Bibliothek verwendet dieselbe Instanz.

Warum gehört React nicht in dependencies?

Wenn React in den dependencies Ihrer Bibliothek steht, installiert npm möglicherweise eine zweite Kopie von React neben der React-Instanz des Nutzers. Zwei React-Instanzen in derselben App führen bei allen Hooks zum Fehler "Invalid hook call". Indem Sie React als peerDependency deklarieren, teilen Sie npm mit: „Ich benötige React, aber verwenden Sie die Instanz, die der Nutzer bereits hat.“

peerDependenciesMeta für optionale Peer-Abhängigkeiten

Einige Peers können optional sein — zum Beispiel eine Bibliothek, die sowohl styled-components als auch CSS Modules unterstützt. Markieren Sie optionale Peers mit peerDependenciesMeta: { 'styled-components': { optional: true } }. npm warnt Nutzer dann nicht vor fehlenden optionalen Peers, aber TypeScript-Typen können weiterhin bereitgestellt werden, wenn das optionale Paket installiert ist.

Das sideEffects-Feld

Das Feld sideEffects in package.json teilt Bundlern mit, ob Ihre Bibliothek sicher per Tree-Shaking reduziert werden kann. Mit "sideEffects": false teilen Sie webpack, Rollup und ähnlichen Tools mit, dass das Importieren eines beliebigen Moduls aus Ihrer Bibliothek keine Nebenwirkungen verursacht — alle nicht verwendeten Exporte können sicher aus dem Bundle des Nutzers entfernt werden.

sideEffects bei CSS-Importen

CSS-Importe sind eine häufige Nebenwirkung — sie injizieren beim Import als Nebeneffekt Stile in die Seite. Wenn Ihre Bibliothek CSS-Dateien importiert, setzen Sie "sideEffects": ["*.css", "*.scss"], um Bundlern mitzuteilen, dass JS-Dateien sicher per Tree-Shaking reduziert werden können, CSS-Dateien beim Import jedoch immer eingeschlossen werden müssen.

Feingranulares Tree-Shaking mit benannten Exporten

Für maximales Tree-Shaking exportieren Sie jede Komponente als benannten Export aus einer eigenen Datei. Exportieren Sie in Ihrer index.ts alles erneut: export { Button } from './Button'. Wenn ein Nutzer nur Button importiert, kann der Bundler alle anderen Komponenten entfernen. Barrel-Dateien mit Re-Exports ermöglichen dieses Muster.

Tree-Shaking-Wirksamkeit testen

Verwenden Sie bundlejs.com, um Tree-Shaking zu testen: Fügen Sie Ihre Import-Anweisung ein, und die tatsächliche Bundle-Größe wird angezeigt. Mit dem npm-Paket size-limit können Sie in Ihrer package.json Größenbudgets definieren und CI fehlschlagen lassen, wenn die Importgröße das Limit überschreitet: "size-limit": [{ "path": "dist/index.js", "limit": "10 KB" }].

Größenbudget für die Veröffentlichung

Legen Sie ein Größenbudget für die Importe Ihrer Bibliothek fest. Führen Sie npx size-limit in CI aus, um es durchzusetzen. Wenn die Auswirkungen des Bundles im Laufe der Zeit zunehmen, deutet das auf eine Ausweitung des Umfangs hin. Eine fokussierte Komponentenbibliothek sollte einzelne Komponentenimporte unter einigen Kilobyte halten. Melden Sie Regressionen, bevor sie die Nutzer erreichen.

CSS-in-JS-Bibliotheken in Komponentenbibliotheken

Vermeiden Sie styled-components und Emotion in Komponentenbibliotheken, die Sie verteilen möchten. Diese CSS-in-JS-Lösungen zur Laufzeit erfordern, dass Nutzer dieselbe Bibliothek und Version installieren, was zu Konflikten bei Peer-Abhängigkeiten führt. Auch wenn der Nutzer Tailwind oder einfaches CSS verwendet, muss er die CSS-in-JS-Laufzeitumgebung weiterhin bündeln. Bevorzugen Sie CSS Modules, die zur Build-Zeit in einfaches CSS kompiliert werden.

CSS Modules in Bibliotheken

CSS Modules funktionieren gut in Bibliotheken, wenn sie mit einem Bundler kombiniert werden, der sie verarbeitet. tsup und Rollup können die Ausgabe von CSS Modules als bereichsbezogene Klassennamen inline einbinden. Nutzer müssen nichts konfigurieren — die Stile sind bereits eingeschränkt und im JS-Bundle enthalten oder werden als separate CSS-Datei importiert.

devDependencies vs peerDependencies

Ihre eigenen Entwicklungswerkzeuge (tsup, TypeScript, Testbibliotheken, Storybook) gehören in devDependencies — sie werden nur während der Entwicklung benötigt und bei npm install für Nutzer nicht installiert. React gehört sowohl in peerDependencies (Anforderung zur Laufzeit) als auch in devDependencies (zum lokalen Kompilieren und Testen Ihrer Bibliothek).

Bedeutung des sideEffects-Felds

Was teilen Sie Bundlern mit, wenn Sie "sideEffects": false in der package.json einer Bibliothek festlegen?

Lektionsrückblick: Peer-Abhängigkeiten und Tree-Shaking

Deklarieren Sie React in peerDependencies (nicht dependencies), damit Nutzer die React-Instanz ihrer App gemeinsam verwenden. sideEffects: false ermöglicht vollständiges Tree-Shaking Ihrer Bibliothek. Verwenden Sie sideEffects: ['*.css'], um CSS-Importe vor dem Entfernen zu schützen. Benannte Exporte aus einzelnen Dateien maximieren die Tree-Shaking-Granularität. Setzen Sie mit size-limit in CI ein Größenbudget durch. Bevorzugen Sie in Bibliotheken CSS Modules gegenüber CSS-in-JS, um Konflikte bei Peer-Abhängigkeiten zu vermeiden.

Häufig gestellte Fragen

Ist die Lektion „Peer-Dependencies und Tree Shaking“ kostenlos?

Ja — der vollständige Text von „Peer-Dependencies und Tree Shaking“ 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 „Peer-Dependencies und Tree Shaking“?

React als Peer-Dependency deklarieren, Tree Shaking ohne Seiteneffekte aktivieren und das veröffentlichte Paket testen 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 3 von 4.

Wie lange dauert die Lektion „Peer-Dependencies und Tree Shaking“?

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