Skip to content

Commit 3128654

Browse files
authored
docs: fix broken link to shared-plugins-during-build section (#700) (#1040)
Co-authored-by: Rush Ali <s0aPii.ra@googlemail.com> closes #700 #1040
1 parent 4eaf8d1 commit 3128654

File tree

7 files changed

+382
-0
lines changed

7 files changed

+382
-0
lines changed

docs/.vitepress/config.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,10 @@ export default defineConfig({
345345
text: 'Migration von v4',
346346
link: '/guide/migration',
347347
},
348+
{
349+
text: 'Grundlegende Änderungen',
350+
link: '/changes'
351+
}
348352
],
349353
},
350354
{
@@ -433,6 +437,45 @@ export default defineConfig({
433437
],
434438
},
435439
],
440+
'/changes/': [
441+
{
442+
text: 'Grundlegende Änderungen',
443+
link: '/changes/',
444+
},
445+
{
446+
text: 'Aktuelles',
447+
items: [],
448+
},
449+
{
450+
text: 'Zukünftiges',
451+
items: [
452+
{
453+
text: 'this.environment in Hooks',
454+
link: '/changes/this-environment-in-hooks',
455+
},
456+
{
457+
text: 'HMR hotUpdate Plugin Hook',
458+
link: '/changes/hotupdate-hook',
459+
},
460+
{
461+
text: 'Umstellung auf umgebungsbezogene APIs',
462+
link: '/changes/per-environment-apis',
463+
},
464+
{
465+
text: 'SSR verwendet die ModuleRunner API',
466+
link: '/changes/ssr-using-modulerunner',
467+
},
468+
{
469+
text: 'Gemeinsam genutzte Plugins während der Erstellung',
470+
link: '/changes/shared-plugins-during-build',
471+
},
472+
],
473+
},
474+
{
475+
text: 'Vergangenes',
476+
items: [],
477+
},
478+
],
436479
},
437480

438481
outline: {

docs/changes/hotupdate-hook.md

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# HMR `hotUpdate` Plugin Hook
2+
3+
::: tip Feedback
4+
Geben Sie uns Rückmeldungen in der ["Environment API Feedback"-Diskussion](https://github.com/vitejs/vite/discussions/16358)
5+
:::
6+
7+
Wir planen, den Plugin-Hook `handleHotUpdate` zugunsten des Hooks `hotUpdate` zu verwerfen, um Environment API-kompatibel zu sein und zusätzliche Überwachungsereignisse mit `create` und `delete` zu verarbeiten.
8+
9+
Betroffener Bereich: `Vite Plugin-Authoren`
10+
11+
12+
13+
::: warning Future Deprecation
14+
`hotUpdate` wurde zum ersten Mal in `v6.0` eingeführt. Die Veraltung von `handleHotUpdate` ist für eine zukünftige Hauptversion geplant. Wir empfehlen, vorerst noch nicht von `handleHotUpdate` abzuweichen. Wenn Sie herumexperimentieren möchten, können Sie gerne die `future.removePluginHookHandleHotUpdate` in Ihrer Vite-Konfiguration auf `"warn"` setzen und uns Feedback geben.
15+
:::
16+
17+
## Motivation
18+
19+
Die [`handleHotUpdate`-Hook](/guide/api-plugin.md#handlehotupdate) erlaubt eine benutzerdefinierte Behandlung von HMR Updates. Eine Liste der zu aktualisierenden Module wird im `HmrContext` angegeben.
20+
21+
```ts
22+
interface HmrContext {
23+
file: string
24+
timestamp: number
25+
modules: Array<ModuleNode>
26+
read: () => string | Promise<string>
27+
server: ViteDevServer
28+
}
29+
```
30+
31+
Dieser Hook wird einmal für alle Umgebungen aufgerufen, und die übergebenen Module enthalten ausschließlich gemischte Informationen aus der Client- und der SSR-Umgebung. Sobald Frameworks zu benutzerdefinierten Umgebungen wechseln, wird für jede von ihnen eine neue Hook benötigt.
32+
33+
Die neue `hotUpdate`-Hook funktioniert gleichartig wie `handleHotUpdate`, aber sie wird für jede Umgebung aufgerufen und erhält eine neue `HotUpdateOptions`-Instanz:
34+
35+
```ts
36+
interface HotUpdateOptions {
37+
type: 'create' | 'update' | 'delete'
38+
file: string
39+
timestamp: number
40+
modules: Array<EnvironmentModuleNode>
41+
read: () => string | Promise<string>
42+
server: ViteDevServer
43+
}
44+
```
45+
46+
Auf die aktuelle Entwicklungsumgebung kann, wie in anderen Plugin-Hooks, mit `this.environment` zugegriffen werden. Die `modules`-Liste wird von nun an nur noch Modulknoten aus der aktuellen Umgebung enthalten. Jedes Umgebungsupdate kann unterschiedliche Strategien zur Aktualisierung festlegen.
47+
48+
Diese Hook wird nun auch für zusätzliche "watch"-Events aufgerufen und nicht nur für `'update'`. Verwenden Sie `type`, um zwischen ihnen zu unterscheiden.
49+
50+
## Migrationsleitfaden
51+
52+
Filtern und Einschränken der Liste der betroffenen Module, damit HMR präziser ist.
53+
54+
```js
55+
handleHotUpdate({ modules }) {
56+
return modules.filter(condition)
57+
}
58+
59+
// Migration zu:
60+
61+
hotUpdate({ modules }) {
62+
return modules.filter(condition)
63+
}
64+
```
65+
66+
Zurückgeben eines leeren Arrays, damit ein komplettes Neuladen stattfindet:
67+
68+
```js
69+
handleHotUpdate({ server, modules, timestamp }) {
70+
// Module manuell ungültig machen
71+
const invalidatedModules = new Set()
72+
for (const mod of modules) {
73+
server.moduleGraph.invalidateModule(
74+
mod,
75+
invalidatedModules,
76+
timestamp,
77+
true
78+
)
79+
}
80+
server.ws.send({ type: 'full-reload' })
81+
return []
82+
}
83+
84+
// Migration zu:
85+
86+
hotUpdate({ modules, timestamp }) {
87+
// Invalidate modules manually
88+
const invalidatedModules = new Set()
89+
for (const mod of modules) {
90+
this.environment.moduleGraph.invalidateModule(
91+
mod,
92+
invalidatedModules,
93+
timestamp,
94+
true
95+
)
96+
}
97+
this.environment.hot.send({ type: 'full-reload' })
98+
return []
99+
}
100+
```
101+
102+
Zurückgeben eines leeren Arrays und durchführen einer kompletten, benutzerdefinierten HMR-Behandlung durch das Versenden von benutzerdefinierten Events zum Client:
103+
104+
```js
105+
handleHotUpdate({ server }) {
106+
server.ws.send({
107+
type: 'custom',
108+
event: 'special-update',
109+
data: {}
110+
})
111+
return []
112+
}
113+
114+
// Migration zu...
115+
116+
hotUpdate() {
117+
this.environment.hot.send({
118+
type: 'custom',
119+
event: 'special-update',
120+
data: {}
121+
})
122+
return []
123+
}
124+
```

docs/changes/index.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Grundlegende Änderungen
2+
3+
Eine Liste der wesentlichen Änderungen in Vite, einschließlich API-Veraltungen, Entfernungen und Änderungen. Der Großteils der unten genannten Änderungen kann durch das Angeben der [`future`-Option](/config/shared-options.html#future) in der Vite-Konfiugration verwendet werden.
4+
5+
## Geplant
6+
7+
Die Änderungen sind für die nächste Hauptversion von Vite geplant. Die Verwendungswarnungen und Hinweise zur Abkündigung werden Ihnen, soweit möglich, als Orientierung dienen. Wir wenden uns auch an Framework- und Plugin-Autoren sowie an Nutzer, um diese Änderungen umzusetzen.
8+
9+
- [`this.environment` in Hooks](/changes/this-environment-in-hooks)
10+
- [HMR `hotUpdate` Plugin Hook](/changes/hotupdate-hook)
11+
- [SSR verwendet die `ModuleRunner` API](/changes/ssr-using-modulerunner)
12+
13+
## In Prüfung
14+
15+
Diese Änderungen werden derzeit noch geprüft und sind oft experimentelle APIs, die zukünftige Nutzungsmustern verbessern sollen. Schauen Sie bitte in die [Vite GitHub Diskussionen mit dem "Experimental"-Label](https://github.com/vitejs/vite/discussions/categories/feedback?discussions_q=label%3Aexperimental+category%3AFeedback), da nicht alle Änderungen hier gelistet werden.
16+
17+
Wir empfehlen es noch nicht, zu diesen APIs zu wechseln. Sie sind nur in Vite enthalten, um Rückmeldungen zu sammeln. Schauen Sie sich gern diese Vorschläge an und teilen Sie uns in den jeweiligen GitHub-Diskussionen mit, wie sie sich für Ihren Anwendungsfall eignen.
18+
19+
- [Umstellung auf umgebungsbezogene APIs](/changes/per-environment-apis)
20+
- [Gemeinsam genutzte Plugins während der Erstellung](/changes/shared-plugins-during-build)
21+
22+
## Vergangen
23+
24+
Die unten gelisteten Änderungen wurden in der Vergangenheit implementiert oder zurückgesetzt. Für die aktuelle Hauptversion sind sie nicht länger relevant.
25+
26+
- _Noch keine vergangenen Änderungen_
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Umstellung auf umgebungsbezogene APIs
2+
3+
::: tip Feedback
4+
Geben Sie uns Rückmeldungen in der ["Environment API Feedback"-Diskussion](https://github.com/vitejs/vite/discussions/16358)
5+
:::
6+
7+
Mehrere APIs von `ViteDevServer` bezogen auf den Modulgraph und Modultransformationen wurden in die `DevEnvironment`-Instanzen verschoben.
8+
9+
Betroffener Bereich: `Vite Plugin-Authoren`
10+
11+
::: warning Zukünftige Veraltungen
12+
Die `Environment`-Instanz wurde in `v6.0` eingeführt. Die Veraltung von `server.moduleGraph` und anderen Methoden, die sich jetzt in Umgebungen befinden, sind für eine zukünftige Hauptversion geplant. Wir empfehlen, vorerst bei den Server-Methoden zu bleiben. Um die Nutzung in Ihren Projekten zu identifizieren, setzen Sie diese Optionen in Ihrer Vite-Konfiguration.
13+
14+
```ts
15+
future: {
16+
removeServerModuleGraph: 'warn',
17+
removeServerReloadModule: 'warn',
18+
removeServerPluginContainer: 'warn',
19+
removeServerHot: 'warn',
20+
removeServerTransformRequest: 'warn',
21+
removeServerWarmupRequest: 'warn',
22+
}
23+
```
24+
25+
:::
26+
27+
## Motivation
28+
29+
In Vite v5 und früheren Versionen hatte ein einzelner Vite-Entwicklungsserver immer zwei Umgebungen (`client` und `ssr`). Die Option `server.moduleGraph` enthielt gemischte Module aus beiden Umgebungen. Die Knoten wurden über die Listen `clientImportedModules` und `ssrImportedModules` verbunden (für jede Umgebung wurde jedoch eine einzelne Liste `importers` verwaltet). Ein transformiertes Modul wurde durch eine `id` und einen `ssr`-booleschen Wert dargestellt. Dieser boolesche Wert musste an APIs übergeben werden, zum Beispiel `server.moduleGraph.getModuleByUrl(url, ssr)` und `server.transformRequest(url, { ssr })`.
30+
31+
In Vite v6 ist es nun möglich, eine beliebige Anzahl von benutzerdefinierten Umgebungen (`client`, `ssr`, `edge`, etc.) zu erstellen. Ein einzelner boolescher Wert `ssr` reicht nicht mehr aus. Anstatt die APIs in die Form `server.transformRequest(url, { environment })` zu ändern, haben wir diese Methoden in die Umgebungsinstanz verschoben, sodass sie ohne einen Vite-Entwicklungsserver aufgerufen werden können.
32+
33+
## Migrationsleitfaden
34+
35+
- `server.moduleGraph` -> [`environment.moduleGraph`](/guide/api-environment-instances#separate-module-graphs)
36+
- `server.reloadModule(module)` -> `environment.reloadModule(module)`
37+
- `server.pluginContainer` -> `environment.pluginContainer`
38+
- `server.transformRequest(url, ssr)` -> `environment.transformRequest(url)`
39+
- `server.warmupRequest(url, ssr)` -> `environment.warmupRequest(url)`
40+
- `server.hot` -> `server.client.environment.hot`
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Gemeinsam genutzte Plugins während der Erstellung
2+
3+
::: tip Feedback
4+
Geben Sie uns Rückmeldungen in der ["Environment API Feedback"-Diskussion](https://github.com/vitejs/vite/discussions/16358)
5+
:::
6+
7+
Siehe [Gemeinsam genutzte Plugins während der Erstellung](/guide/api-environment-plugins.md#shared-plugins-during-build).
8+
9+
Betroffener Bereich: `Vite Plugin-Authoren`
10+
11+
::: warning Zukünftige Standardanpassungen
12+
`builder.sharedConfigBuild` wurde eingeführt in `v6.0`. Sie können den Wert auf `true` setzen, um zu prüfen wie Ihre Plugins mit einer gemeinsamen Konfiguration funktionieren. Wir suchen nach
13+
14+
Wir suchen Feedback zur Änderung der Standardeinstellung in einer zukünftigen Hauptversion, sobald das Plugin-Ökosystem bereit ist.
15+
:::
16+
17+
## Motivation
18+
19+
Entwicklungs- und Build-Plugin-Pipelines ausrichten.
20+
21+
## Migrationsleitfaden
22+
23+
Um Plugins über verschiedene Umgebungen hinweg gemeinsam nutzen zu können, muss der Plugin-Status anhand der aktuellen Umgebung verschlüsselt werden. Ein Plugin der folgenden Form zählt die Anzahl der transformierten Module über alle Umgebungen hinweg.
24+
25+
```js
26+
function CountTransformedModulesPlugin() {
27+
let transformedModules
28+
return {
29+
name: 'count-transformed-modules',
30+
buildStart() {
31+
transformedModules = 0
32+
},
33+
transform(id) {
34+
transformedModules++
35+
},
36+
buildEnd() {
37+
console.log(transformedModules)
38+
},
39+
}
40+
}
41+
```
42+
43+
Wenn wir stattdessen die Anzahl der transformierten Module für jede Umgebung zählen möchten, müssen wir eine Zuordnung speichern:
44+
45+
```js
46+
function PerEnvironmentCountTransformedModulesPlugin() {
47+
const state = new Map<Environment, { count: number }>()
48+
return {
49+
name: 'count-transformed-modules',
50+
perEnvironmentStartEndDuringDev: true,
51+
buildStart() {
52+
state.set(this.environment, { count: 0 })
53+
}
54+
transform(id) {
55+
state.get(this.environment).count++
56+
},
57+
buildEnd() {
58+
console.log(this.environment.name, state.get(this.environment).count)
59+
}
60+
}
61+
}
62+
```
63+
64+
Zur Vereinfachung dieses Musters exportiert Vite einen `perEnvironmentState`-Helfer:
65+
66+
```js
67+
function PerEnvironmentCountTransformedModulesPlugin() {
68+
const state = perEnvironmentState<{ count: number }>(() => ({ count: 0 }))
69+
return {
70+
name: 'count-transformed-modules',
71+
perEnvironmentStartEndDuringDev: true,
72+
buildStart() {
73+
state(this).count = 0
74+
}
75+
transform(id) {
76+
state(this).count++
77+
},
78+
buildEnd() {
79+
console.log(this.environment.name, state(this).count)
80+
}
81+
}
82+
}
83+
```
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# SSR verwendet die `ModuleRunner` API
2+
3+
::: tip Feedback
4+
Geben Sie uns Rückmeldungen in der ["Environment API Feedback"-Diskussion](https://github.com/vitejs/vite/discussions/16358)
5+
:::
6+
7+
`server.ssrLoadModule` wurde durch die Importierung eines [Module Runners](/guide/api-environment#modulerunner) ersetzt.
8+
9+
Betroffener Bereich: `Vite Plugin-Authoren`
10+
11+
::: warning Zukünftige Veraltungen
12+
`ModuleRunner` wurde eingeführt in `v6.0`. Die Veraltung von `server.ssrLoadModule` ist für eine zukünftige Hauptversion geplant. Um eine mögliche Nutzung zu identifizieren, können Sie `future.removeSsrLoadModule` in Ihrer Vite-Konfiguration auf `"warn"` setzen.
13+
:::
14+
15+
## Motivation
16+
17+
`server.ssrLoadModule(url)` erlaubt nur die Importierung von Modulen in der `ssr`-Umgebung und kann nur die Module ausführen, die sich im Gleichen Prozess wie der Vite-Entwicklungsserver befinden. Für Anwendungen mit benutzerdefinierten Umgebungen, wird jede mit einem `ModulRunner` versehen, der in einem seperaten Thread oder Prozess laufen darf. Module können nun mit Hilfe von `moduleRunner.import(url)` importiert werden.
18+
19+
## Migration Guide
20+
21+
Schauen Sie sich den [Environment API für Frameworks Leitfaden](../guide/api-environment-frameworks.md) an.
22+
23+
`server.ssrFixStacktrace` und `server.ssrRewriteStacktrace` müssen nicht aufgerufen werden, wenn die Module Runner APIs verwendet werden. Die Stapelverfolgungen werden aktualisiert, außer `sourcemapInterceptor` wird auf `false` gesetzt.

0 commit comments

Comments
 (0)