You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/guide/rolldown.md
+104-1Lines changed: 104 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -90,4 +90,107 @@ Für Echtzeit-Diskussionen und Fehlerbehebung treten Sie bitte dem [Rolldown Dis
90
90
91
91
Das Paket `rolldown-vite` ist eine vorübergehende Lösung, um Feedback zu sammeln und die Rolldown-Integration zu stabilisieren. In Zukunft wird diese Funktionalität wieder in das Haupt-Repository von Vite integriert werden.
92
92
93
-
Wir ermutigen Sie, `rolldown-vite` auszuprobieren und durch Feedback und Fehlerberichte zur Entwicklung beizutragen.
93
+
Wir ermutigen Sie, `rolldown-vite` auszuprobieren und durch Feedback und Fehlerberichte zur Entwicklung beizutragen.
94
+
95
+
## Plugin- / Framework-Authoren Leitfaden
96
+
97
+
### Liste von großen Änderungen
98
+
99
+
- Rolldown wird für den Build genutzt (Rollup wurde zuvor verwendet)
100
+
- Rolldown wird für den Optimierer genutzt (esbuild wurde zuvor verwendet)
101
+
- CommonJS Unterstützung wird von Rollup bereitgestellt (@rollup/plugin-commonjs zuvor verwendet)
102
+
- Oxc wird zur Syntax-Reduktion genutzt (esbuild wurde zuvor verwendet)
103
+
- Lightning CSS wird standardmäßig zur Minifizierung von CSS genutzt (esbuild wurde zuvor verwendet)
104
+
- Oxc-Minifier wird standardmäßig zur Minifizierung von JS genutzt (esbuild wurde zuvor verwendet)
105
+
- Rolldown wird zum Bündeln der Konfiguration genutzt (esbuild wurde zuvor verwendet)
106
+
107
+
108
+
### Rolldown-Vite erkennen
109
+
110
+
Sie können es entweder erkennen durch
111
+
112
+
- Prüfen der Existenz von `this.meta.rolldownVersion`
113
+
114
+
```js
115
+
constplugin= {
116
+
resolveId() {
117
+
if (this.meta.rolldownVersion) {
118
+
// Logik für rolldown-vite
119
+
} else {
120
+
// Logik für rollup-vite
121
+
}
122
+
},
123
+
}
124
+
```
125
+
126
+
- Prüfen der Existenz des `rolldownVersion` Exports
127
+
128
+
```js
129
+
import*asvitefrom'vite'
130
+
131
+
if (vite.rolldownVersion) {
132
+
// Logik für rolldown-vite
133
+
} else {
134
+
// Logik für rollup-vite
135
+
}
136
+
```
137
+
138
+
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.
139
+
140
+
### Ignorieren von Optionsvalidierung in Rolldown
141
+
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:
143
+
144
+
> Error: Failed validate input options.
145
+
>
146
+
> - For the "preserveEntrySignatures". Invalid key: Expected never but received "preserveEntrySignatures".
147
+
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.
149
+
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.
151
+
152
+
### `transformWithEsbuild` benötigt eine seperate `esbuild` Installation
153
+
154
+
Eine ähnliche Funktion namens `transformWithOxc`, die Oxc anstelle von `esbuild` verwendet, wird von `rolldown-vite` exportiert.
155
+
156
+
### Kompatibilitätsschicht für `esbuild`-Optionen
157
+
158
+
Rolldown-Vite hat eine Kompatibilitätsschicht, um Optionen von `esbuild` für Oxc oder `rolldown` zu konvertieren. Getestet wurde in der [ecosystem-ci](https://github.com/vitejs/vite-ecosystem-ci/blob/rolldown-vite/README-temp.md) und funktioniert für viele Fälle, inklusive einfacher `esbuild`-Plugins.
159
+
In Zukunft **werden wir die Unterstützung für `esbuild`-Optionen entfernen** und Sie ermutigen, die entsprechenden Optionen von Oxc oder `rolldown` zu verwenden.
160
+
Sie können das Set an Optionen von der Kompatibilitätsschicht mit Hilfe der `configResolved`-Hook erhalten.
Rolldown hat eine [Hook-Filter](https://rolldown.rs/guide/plugin-development#plugin-hook-filters) Funktion eingeführt, um den Kommunikationsaufwand zwischen Rust und JavaScript Laufzeiten zu verringern. Durch die Verwendung dieser Funktion, können Sie Ihre Plugins performanter gestalten.
174
+
175
+
Dies wird auch von Rollup 4.38.0+ und Vite 6.3.0+ unterstützt. Um eine Rückwärtskompatibilität für ältere Versionen für Ihr Plugin zu gewährleisten, sollten Sie die Filter auch im Hook-Behandler ausführen.
176
+
177
+
### Inhalt zu JavaScript konvertieren in `load`- oder `transform`-Hooks
178
+
179
+
Wenn Sie den Inhalt von anderen Typen zu JavaScript konvertieren in `load`- oder `transform`-Hooks, müssen Sie möglicherweise `moduleType: 'js'` zur zurückgegebenen Variable hinzufügen.
180
+
181
+
```js
182
+
constplugin= {
183
+
name:'txt-loader',
184
+
load(id) {
185
+
if (id.endsWith('.txt')) {
186
+
constcontent=fs.readFile(id, 'utf-8')
187
+
return {
188
+
code:`export default ${JSON.stringify(content)}`,
189
+
moduleType:'js', // [!code ++]
190
+
}
191
+
}
192
+
},
193
+
}
194
+
```
195
+
196
+
Das liegt daran, dass [Rolldown unterstützt JavaScript-fremde Module](https://rolldown.rs/guide/in-depth/module-types) und leitet sich den Modultyp aus der Erweiterung ab, außer es wird spezifiziert. Beachten Sie, dass `rolldown-vite` keine ModuleTypes in dev unterstützt.
0 commit comments