Skip to content

Commit 9afb4d6

Browse files
authored
docs: add migration guide for v2 (#125)
1 parent 7ccf6a4 commit 9afb4d6

1 file changed

Lines changed: 155 additions & 0 deletions

File tree

docs/migrate-v1-to-v2.md

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
# @rspack/dev-server Migration Guide (v1 -> v2)
2+
3+
This guide covers breaking changes you need to handle when upgrading `@rspack/dev-server` from v1 to v2.
4+
5+
## Breaking Changes
6+
7+
### Drop Node 18 Support
8+
9+
Node.js 18 is no longer supported in v2.
10+
11+
The minimum supported Node.js version is now `^20.19.0 || >=22.12.0`.
12+
13+
### Drop Rspack v1 Support
14+
15+
`@rspack/dev-server` v2 is designed to work with Rspack v2. Rspack v1 is no longer supported in v2.
16+
17+
### Upgraded `http-proxy-middleware` to v3
18+
19+
`http-proxy-middleware` has been updated to v3, which has some breaking changes:
20+
21+
- `proxy[].path` is removed. Use `pathFilter` (or `context`) instead.
22+
23+
```diff
24+
{
25+
- path: '/api',
26+
+ pathFilter: '/api',
27+
}
28+
```
29+
30+
- `logLevel` / `logProvider` are replaced by `logger`.
31+
32+
```diff
33+
- logLevel: 'warn',
34+
+ logger: console,
35+
```
36+
37+
- `onProxyReq` / `onProxyRes` / `onProxyReqWs` are moved to `on: { ... }`.
38+
39+
```diff
40+
- onProxyReq(proxyReq) {
41+
- proxyReq.setHeader('x-from', 'dev-server');
42+
- },
43+
+ on: {
44+
+ proxyReq(proxyReq) {
45+
+ proxyReq.setHeader('x-from', 'dev-server');
46+
+ },
47+
+ },
48+
```
49+
50+
- `proxy[].bypass` is removed, use `pathFilter` or `router` instead.
51+
- When `bypass` was used and that function returned a boolean, it would automatically result in a 404 request. This can’t be achieved in a similar way now, or, if it returned a string, you can do what was done in the example above.
52+
- `bypass` also allowed sending data; this can no longer be done. If you really need to do it, you’d have to create a new route in the proxy that sends the same data, or alternatively create a new route on the main server and, following the example above, send the data you wanted.
53+
54+
> Refer to the [http-proxy-middleware v3 migration guide](https://github.com/chimurai/http-proxy-middleware/blob/master/MIGRATION.md) for details.
55+
56+
### Upgraded Express to v5
57+
58+
`express`` has been updated to v5, see [Introducing Express v5: A New Era for the Node.js Framework](https://expressjs.com/2024/10/15/v5-release.html) for details.
59+
60+
### Removed `spdy` support
61+
62+
- `server.type: "spdy"` is no longer supported.
63+
- `server.options.spdy` is no longer supported.
64+
65+
You can switch to `server.type: "http2"` or `"https"` instead.
66+
67+
```js
68+
// Before
69+
export default {
70+
devServer: {
71+
server: {
72+
type: 'spdy',
73+
options: {
74+
spdy: { protocols: ['h2', 'http/1.1'] },
75+
},
76+
},
77+
},
78+
};
79+
80+
// After
81+
export default {
82+
devServer: {
83+
server: {
84+
type: 'http2', // or 'https'
85+
options: {},
86+
},
87+
},
88+
};
89+
```
90+
91+
### Removed SockJS support (`ws` only)
92+
93+
In v2, the following SockJS options are no longer available:
94+
95+
- `webSocketServer: "sockjs"`
96+
- `webSocketServer: { type: "sockjs" }`
97+
- `client.webSocketTransport: "sockjs"`
98+
- `webSocketServer.options.prefix` (use `path`)
99+
100+
Also, SockJS bundle routes were removed.
101+
102+
```js
103+
// Before
104+
export default {
105+
devServer: {
106+
webSocketServer: 'sockjs',
107+
client: {
108+
webSocketTransport: 'sockjs',
109+
},
110+
},
111+
};
112+
113+
// After
114+
export default {
115+
devServer: {
116+
webSocketServer: 'ws',
117+
client: {
118+
webSocketTransport: 'ws',
119+
},
120+
},
121+
};
122+
```
123+
124+
If you need a non-default transport/server, you can provide a custom implementation path instead of `'sockjs'`.
125+
126+
### Removed `bonjour`
127+
128+
Built-in Bonjour support is removed in v2.
129+
130+
If Bonjour/ZeroConf broadcasting is still important for your workflow, consider integrating `bonjour-service` directly in your app code.
131+
132+
### Renamed `webpack-dev-server-*` to `rspack-dev-server-*`
133+
134+
If your setup still uses the legacy names, you can update them as follows:
135+
136+
- Environment variables
137+
- `WEBPACK_DEV_SERVER_BASE_PORT` -> `RSPACK_DEV_SERVER_BASE_PORT`
138+
- `WEBPACK_DEV_SERVER_PORT_RETRY` -> `RSPACK_DEV_SERVER_PORT_RETRY`
139+
- URL query flags
140+
- `webpack-dev-server-hot=false` -> `rspack-dev-server-hot=false`
141+
- `webpack-dev-server-live-reload=false` -> `rspack-dev-server-live-reload=false`
142+
- Built-in routes
143+
- `/webpack-dev-server/*` -> `/rspack-dev-server/*`
144+
145+
```txt
146+
# Before
147+
http://localhost:8080/?webpack-dev-server-hot=false&webpack-dev-server-live-reload=false
148+
GET /webpack-dev-server/invalidate
149+
GET /webpack-dev-server/open-editor?fileName=...
150+
151+
# After
152+
http://localhost:8080/?rspack-dev-server-hot=false&rspack-dev-server-live-reload=false
153+
GET /rspack-dev-server/invalidate
154+
GET /rspack-dev-server/open-editor?fileName=...
155+
```

0 commit comments

Comments
 (0)