dev.setupMiddlewares
type SetupMiddlewaresServer = {
sockWrite: (
type: string,
data?: string | boolean | Record<string, any>,
) => void;
environments: EnvironmentAPI;
};
type SetupMiddlewares = Array<
(
middlewares: {
unshift: (...handlers: RequestHandler[]) => void;
push: (...handlers: RequestHandler[]) => void;
},
server: SetupMiddlewaresServer,
) => void
>;
Provides the ability to execute a custom function and apply custom middleware.
See Dev Server - Middleware for more information.
Execution order
The order among several different types of middleware is: unshift
=> internal middleware => push
.
rsbuild.config.ts
export default {
dev: {
setupMiddlewares: [
(middlewares, server) => {
middlewares.unshift((req, res, next) => {
console.log('first');
next();
});
middlewares.push((req, res, next) => {
console.log('last');
next();
});
},
],
},
};
Server API
In the setupMiddlewares
function, you can access the server
object, which provides some server APIs.
environments
Provides Rsbuild's environment API, see Dev server API - environments for more details.
rsbuild.config.ts
export default {
dev: {
setupMiddlewares: [
(middlewares, { environments }) => {
middlewares.unshift(async (req, _res, next) => {
const webStats = await environments.web.getStats();
console.log(webStats.toJson({ all: false }));
next();
});
},
],
},
};
sockWrite
Sends some message to HMR client, see Dev server API - sockWrite for more details.
For example, if you send a 'static-changed'
message, the page will reload.
rsbuild.config.ts
export default {
dev: {
setupMiddlewares: [
(middlewares, { sockWrite }) => {
if (someCondition) {
sockWrite('static-changed');
}
},
],
},
};