Skip to content

Commit f39464c

Browse files
authored
docs(rolldown): add further insights (#714) (#1046)
Co-authored-by: Rush Ali <s0aPii.ra@googlemail.com> closes #714 #1046
1 parent df41f64 commit f39464c

File tree

1 file changed

+60
-14
lines changed

1 file changed

+60
-14
lines changed

docs/guide/rolldown.md

Lines changed: 60 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,16 @@ Rolldown konzentriert sich auf drei Grundprinzipien:
1010

1111
- **Geschwindigkeit**: Mit Rust für maximale Leistung entwickelt
1212
- **Kompatibilität**: Funktioniert mit bestehenden Rollup-Plugins
13-
- **Entwicklererfahrung**: Vertraute API für Rollup-Benutzer
13+
- **Optimierung**: Liefert fortschrittlichere Funktionen, im Vergleich zu esbuild und Rollup
1414

1515
## Warum Vite zu Rolldown migriert
1616

1717
1. **Vereinheitlichung**: Vite verwendet derzeit esbuild für die Vorab-Bündelung von Abhängigkeiten und Rollup für Produktions-Builds. Rolldown zielt darauf ab, diese zu einem einzigen, leistungsstarken Bündler zu vereinen, der für beide Zwecke verwendet werden kann, wodurch die Komplexität reduziert wird.
1818

1919
2. **Leistung**: Die Rust-basierte Implementierung von Rolldown bietet gegenüber JavaScript-basierten Bundlern erhebliche Leistungsverbesserungen. Auch wenn spezifische Benchmarks je nach Projektgröße und Komplexität variieren können, zeigen erste Tests vielversprechende Geschwindigkeitssteigerungen im Vergleich zu Rollup.
2020

21+
3. **Zusätzliche Funktionen**: Rolldown führt Funktionen ein, die nicht in Rollup oder esbuild vorhanden sind, wie beispielsweise die erweiterte Steuerung der Chunk-Aufteilung, eingebautes HMR und Modulverbünde.
22+
2123
Weitere Einblicke in die Beweggründe für Rolldown finden Sie unter [Gründe für die Entwicklung von Rolldown](https://rolldown.rs/guide/#why-rolldown).
2224

2325
## Vorteile des Ausprobierens von `rolldown-vite`
@@ -74,11 +76,27 @@ Nachdem Sie diese Überschreibungen hinzugefügt haben, installieren Sie Ihre Ab
7476

7577
Rolldown soll zwar ein direkter Ersatz für Rollup sein, es gibt jedoch Funktionen, die noch implementiert werden, sowie geringfügige beabsichtigte Unterschiede im Verhalten. Eine umfassende Liste finden Sie in [diesem GitHub PR](https://github.com/vitejs/rolldown-vite/pull/84#issue-2903144667), der regelmäßig aktualisiert wird.
7678

79+
### Fehler bei der Validierung von Optionen
80+
81+
Rolldown wirft einen Fehler, wenn unbekannte oder ungültige Optionen angegeben werden. Da manche Optionen, die in Rollup verfügbar sind, in Rolldown nicht zur Verfügung stehen, kann es zu Fehlern kommen. Im Folgenden sehen Sie ein Beispiel für solch eine Fehlermeldung:
82+
83+
> Error: Failed validate input options.
84+
>
85+
> - For the "preserveEntrySignatures". Invalid key: Expected never but received "preserveEntrySignatures".
86+
87+
Wenn Sie die Optione nicht selbst angeben, muss der Fehler durch das verwendete Framework behoben werden. Sie können den Fehler unterdrücken, in dem Sie die Umgebungsvariable `ROLLDOWN_OPTIONS_VALIDATION=loose` setzen.
88+
89+
## Aktivieren nativer Plugins
90+
91+
Dank Rolldown und Oxc wurden verschiedene interne Vite-Plugins, wie beispielsweise das Alias- oder Resolve-Plugin, nach Rust portiert. Zum Zeitpunkt der Erstellung dieses Artikels ist die Verwendung dieser Plugins standardmäßig nicht aktiviert, da ihr Verhalten von den JavaScript-Versionen abweichen kann.
92+
93+
Um sie zu testen, können Sie die `experimental.enableNativePlugin`-Option in Ihrer Vite-Konfiguration auf `true` setzen.
94+
7795
## Probleme melden
7896

7997
Da es sich um eine experimentelle Integration handelt, können Probleme auftreten. Wenn dies der Fall ist, melden Sie diese bitte im Repository [`vitejs/rolldown-vite`](https://github.com/vitejs/rolldown-vite) und **nicht im Haupt-Repository von Vite**.
8098

81-
Wenn Sie [Probleme melden](https://github.com/vitejs/rolldown-vite/issues/new), befolgen Sie bitte die Vorlage für Probleme und geben Sie Folgendes an:
99+
Wenn Sie [Probleme melden](https://github.com/vitejs/rolldown-vite/issues/new), befolgen Sie bitte die geeignete Vorlage für Probleme und geben Sie bitte an, was von Ihnen gefordert wird. Üblicherweise enthalten sind:
82100

83101
- Eine minimale Reproduktion des Problems
84102
- Details zu Ihrer Umgebung (Betriebssystem, Node-Version, Paketmanager)
@@ -92,9 +110,34 @@ Das Paket `rolldown-vite` ist eine vorübergehende Lösung, um Feedback zu samme
92110

93111
Wir ermutigen Sie, `rolldown-vite` auszuprobieren und durch Feedback und Fehlerberichte zur Entwicklung beizutragen.
94112

113+
In der Zukunft werden wir auch noch einen vollständigen Bündelmodus für Vite einführen, der gebündelte Dateien sowohl im Produktions-Modus, als auch im _Entwicklungs-Modus_ bereitstellt.
114+
115+
### Wozu die Einführung eines vollständigen Bündelmodus?
116+
117+
Vite ist für seinen Ansatz mit einem ungebündelten Entwicklungs-Server bekannt, was der Hauptgrund für Vites Geschwindigkeit und Bekanntheit war, als es veröffentlicht wurde. Dieser Ansatz war inital ein Experiment, um zu testen, wie weit man die Grenzen der Performanz von Entwicklungs-Servern ausreizen kann, ohne traditionelles Bündeln zu nutzen.
118+
119+
Mit zunehmender Größe und Komplexität der Projekte sind jedoch zwei wesentliche Herausforderungen entstanden:
120+
121+
1. **Inkonsistenz zwischen Entwicklung und Produktion**: Das in der Entwicklung bereitgestellte ungebündelte JavaScript und das gebündelte Produktions-Build führen zu unterschiedlichen Laufzeitverhalten. Dies kann zu Problemen führen, die nur in der Produktion auftreten und die Fehlersuche erschweren.
122+
123+
2. **Leistungsabfall während der Entwicklung**: Der ungebündelte Ansatz führt dazu, dass jedes Modul separat abgerufen wird, was eine große Anzahl von Netzwerkanfragen verursacht. Dies hat zwar _keine Auswirkungen auf die Produktion_, verursacht jedoch einen erheblichen Mehraufwand beim Start des Entwicklungsservers und beim Aktualisieren der Seite während der Entwicklung. Die Auswirkungen sind besonders bei großen Anwendungen spürbar, bei denen Hunderte oder sogar Tausende von separaten Anfragen verarbeitet werden müssen. Diese Engpässe werden noch gravierender, wenn Entwickler einen Netzwerk-Proxy verwenden, was zu langsameren Aktualisierungszeiten und einer verschlechterten Entwicklererfahrung führt.
124+
125+
Mit der Rolldown-Integration besteht die Möglichkeit, die Entwicklungs- und Produktionserfahrungen zu vereinen und gleichzeitig die Performanz von Vite aufrecht zu erhalten. Ein vollständiger Bündelungsmodus ermöglicht das Bereitstellen von gebündelten Dateien in der Produktion, sowie in der Entwicklung. Dadurch werden die Vorteile beider Welten kombiniert:
126+
127+
- Kurze Startzeiten, auch für große Anwendungen
128+
- Konsistentes Verhalten von Entwicklung und Produktion
129+
- Reduzierter Netzwerkaufwand beim Neuladen von Seiten
130+
- Aufrechterhaltung einer effizienten HMR zusätzlich zur ESM-Ausgabe
131+
132+
Wenn der vollständige Bündelungsmodus eingeführt wird, besteht erstmal die Möglichkeit ihn per opt-in zu verwenden. Ähnlich zu Rolldown zielen wir darauf ab, ihn zum Standard werden zu lassen, nachdem wir Feedback gesammelt haben und Stabilität gewährleisten können.
133+
95134
## Plugin- / Framework-Authoren Leitfaden
96135

97-
### Liste von großen Änderungen
136+
::: tip
137+
Dieser Bereich ist primär relevant für Plugin- und Framework-Authoren. Falls Sie ein Nutzer sind, können Sie diesen Bereich überspringen.
138+
:::
139+
140+
### Übersicht von großen Änderungen
98141

99142
- Rolldown wird für den Build genutzt (Rollup wurde zuvor verwendet)
100143
- Rolldown wird für den Optimierer genutzt (esbuild wurde zuvor verwendet)
@@ -104,12 +147,15 @@ Wir ermutigen Sie, `rolldown-vite` auszuprobieren und durch Feedback und Fehlerb
104147
- Oxc-Minifier wird standardmäßig zur Minifizierung von JS genutzt (esbuild wurde zuvor verwendet)
105148
- Rolldown wird zum Bündeln der Konfiguration genutzt (esbuild wurde zuvor verwendet)
106149

150+
### `rolldown-vite` erkennen
107151

108-
### Rolldown-Vite erkennen
152+
::: warning
153+
In den meisten Fällen müssen sie nicht prüfen, ob ihr Plugin mit `rolldown-vite` oder `vite` läuft. Sie sollten eher darauf abzielen, ein konsistentes Verhalten zwischen beiden zu erreichen, ohne bedingte Verzweigungen.
154+
:::
109155

110-
Sie können es entweder erkennen durch
156+
Für den Fall, dass Sie ein unterschiedliches Verhalten mit `rolldown-vite` benötigen, gibt es zwei Möglichkeiten zu erkennen, ob `rolldown-vite` verwendet wird.
111157

112-
- Prüfen der Existenz von `this.meta.rolldownVersion`
158+
Prüfen der Existenz von `this.meta.rolldownVersion`:
113159

114160
```js
115161
const plugin = {
@@ -123,7 +169,9 @@ const plugin = {
123169
}
124170
```
125171

126-
- Prüfen der Existenz des `rolldownVersion` Exports
172+
<br>
173+
174+
Prüfen der Existenz des `rolldownVersion` Exports:
127175

128176
```js
129177
import * as vite from 'vite'
@@ -137,17 +185,15 @@ if (vite.rolldownVersion) {
137185

138186
Wenn sie `vite` als Abhängigkeit (nicht als Peer-Abhängigkeit) haben, bietet sich der `rolldownVersion`-Export an, da er überall in Ihrem Code verwendet werden kann.
139187

140-
### Ignorieren von Optionsvalidierung in Rolldown
188+
### Ignorieren der Optionsvalidierung in Rolldown
141189

142-
Rolldown wirft einen Fehler, wenn unbekannte oder ungültige Optionen angegeben werden. Da manche Optionen, die in Rollup verfügbar sind, in Rolldown nicht zur Verfügung stehen, kann es zu Fehlern kommen. Im Folgenden sehen Sie ein Beispiel für solch eine Fehlermeldung:
190+
Wie [oben erwähnt](#option-validation-errors), wirft Rolldown einen Fehler wenn unbekannte oder ungültige Optionen übergeben werden.
143191

144-
> Error: Failed validate input options.
145-
>
146-
> - For the "preserveEntrySignatures". Invalid key: Expected never but received "preserveEntrySignatures".
192+
Dieser Fehler kann behoben werden, in dem die Option nur unter bestimmten Bedingungen angegeben wird. Wie [oben gezeigt](#detecting-rolldown-vite), muss dann in der Bedingung geprüft werden, ob das Programm mit rolldown-vite ausgeführt wird.
147193

148-
Dieser Fehler kann behoben werden, in dem die Option nur unter bestimmten Bedingungen angegeben wird. Wie oben gezeigt, muss dann in der Bedingung geprüft werden, ob das Programm mit `rolldown-vite` ausgeführt wird.
194+
Das Unterdrücken der Fehlermeldung durch das Setzen der Umgebungsvariable `ROLLDOWN_OPTIONS_VALIDATION=loose` funktioniert in diesem Fall auch.
149195

150-
Wenn Sie den Fehler vorerst unterdrücken möchten, können Sie die Umgebungsvariable `ROLLDOWN_OPTIONS_VALIDATION=loose` setzen. Beachten Sie allerdings, dass Sie irgendwann aufhören müssen, Optionen anzugeben, die nicht von Rolldown unterstützt werden.
196+
Beachten Sie allerdings, dass Sie irgendwann aufhören müssen, Optionen anzugeben, die nicht von Rolldown unterstützt werden.
151197

152198
### `transformWithEsbuild` benötigt eine seperate `esbuild` Installation
153199

0 commit comments

Comments
 (0)