Closed chenjiahan closed 11 months ago
The goal of Rsbuild Server is to be lightweight, simple, and easy to expand:
Rsbuild Server uses a minimalist combination of http + connect
, with all built-in/extended logic added via middleware.
var connect = require('connect');
var http = require('http');
var app = connect();
app.use(function (req, res, next) {
// req is the Node.js http request object
// res is the Node.js http response object
// next is a function to call to invoke the next middleware
})
//create node.js http server and listen on port
http.createServer(app).listen(3000);
Rsbuild DevServer | Modern.js DevServer (old) | webpack-dev-server | |
---|---|---|---|
Middleware mode | connect | modern.js custom | express |
Relationship with prodServer | Shared Middleware | DevServer inherits prodServer | No prodServer |
depends on route.json | ❌ | ✔️ (depends on route.json and routing Middleware) | ❌ |
support custom middlewares | ✔️ | ✔️ | ✔️ |
support custom plugins | ❌ | ✔️ | ❌ |
support static directories | ❌ | ✔️ | ✔️ |
ssr support | ❌ | ✔️ | ❌ |
proxy support | ✔️ | ✔️ | ✔️ |
Compared to modern.js builder, breaking changes include:
/
, you need to ensure that the html output path is dist/index.html
tools.devServer.historyApiFallback
tools.devServer.before/after
configuration is not supported, you can use tools.devServer.setupMiddlewares
instead
Rsbuild should avoid depending on Modern.js packages, so we need to design a new dev server for Rsbuild, and allow Modern.js to replace the builtin dev server.