Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf: replace dev middleware with a lightweight version #3257

Merged
merged 2 commits into from
Aug 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@
"typescript": "^5.5.2",
"webpack": "^5.93.0",
"webpack-bundle-analyzer": "^4.10.2",
"webpack-dev-middleware": "7.2.1",
"rsbuild-dev-middleware": "0.1.0",
"webpack-merge": "6.0.1",
"ws": "^8.18.0"
},
Expand Down
8 changes: 3 additions & 5 deletions packages/core/prebundle.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ export default {
'rspack-manifest-plugin',
'webpack-merge',
'html-rspack-plugin',
'mrmime',
{
name: 'chokidar',
externals: {
Expand Down Expand Up @@ -138,14 +139,11 @@ export default {
name: 'webpack-bundle-analyzer',
},
{
name: 'webpack-dev-middleware',
name: 'rsbuild-dev-middleware',
externals: {
'schema-utils': './schema-utils',
'schema-utils/declarations/validate':
'schema-utils/declarations/validate',
mrmime: '../mrmime',
},
ignoreDts: true,
afterBundle: writeEmptySchemaUtils,
},
{
name: 'style-loader',
Expand Down
4 changes: 2 additions & 2 deletions packages/core/src/server/compilerDevMiddleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ function getClientPaths(devConfig: DevConfig) {

/**
* Setup compiler-related logic:
* 1. setup webpack-dev-middleware
* 1. setup rsbuild-dev-middleware
* 2. establish webSocket connect
*/
export class CompilerDevMiddleware {
Expand Down Expand Up @@ -152,7 +152,7 @@ export class CompilerDevMiddleware {

warp.close = middleware.close;

// warp webpack-dev-middleware to handle html file(without publicPath)
// warp rsbuild-dev-middleware to handle html file(without publicPath)
// maybe we should serve html file by sirv
return warp;
}
Expand Down
8 changes: 4 additions & 4 deletions packages/core/src/server/devMiddleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ export type DevMiddlewareAPI = Middleware & {

/**
* The rsbuild/server do nothing about compiler, the devMiddleware need do such things to ensure dev works well:
* - Call compiler.watch (normally did by webpack-dev-middleware).
* - Call compiler.watch (normally did by rsbuild-dev-middleware).
* - Inject the hmr client path into page (the hmr client rsbuild/server already provide).
* - Notify server when compiler hooks are triggered.
*/
Expand All @@ -107,8 +107,8 @@ export type DevMiddleware = (options: DevMiddlewareOptions) => DevMiddlewareAPI;
export const getDevMiddleware = async (
multiCompiler: Compiler | MultiCompiler,
): Promise<NonNullable<DevMiddleware>> => {
const { default: webpackDevMiddleware } = await import(
'webpack-dev-middleware'
const { default: rsbuildDevMiddleware } = await import(
'rsbuild-dev-middleware'
);
return (options) => {
const { clientPaths, clientConfig, callbacks, liveReload, ...restOptions } =
Expand All @@ -129,6 +129,6 @@ export const getDevMiddleware = async (

applyToCompiler(multiCompiler, setupCompiler);

return webpackDevMiddleware(multiCompiler, restOptions);
return rsbuildDevMiddleware(multiCompiler, restOptions);
};
};
2 changes: 1 addition & 1 deletion packages/core/src/server/getDevMiddlewares.ts
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ const applyDefaultMiddlewares = async ({

middlewares.push(historyApiFallbackMiddleware);

// ensure fallback request can be handled by webpack-dev-middleware
// ensure fallback request can be handled by rsbuild-dev-middleware
compileMiddlewareAPI?.middleware &&
middlewares.push(compileMiddlewareAPI.middleware);
}
Expand Down
3 changes: 2 additions & 1 deletion packages/core/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"jiti": ["./compiled/jiti"],
"rslog": ["./compiled/rslog"],
"dotenv": ["./compiled/dotenv"],
"mrmime": ["./compiled/mrmime"],
"semver": ["./compiled/semver"],
"connect": ["./compiled/connect"],
"chokidar": ["./compiled/chokidar"],
Expand All @@ -30,7 +31,7 @@
"webpack-bundle-analyzer": ["./compiled/webpack-bundle-analyzer"],
"postcss-load-config": ["./compiled/postcss-load-config"],
"rspack-manifest-plugin": ["./compiled/rspack-manifest-plugin"],
"webpack-dev-middleware": ["./compiled/webpack-dev-middleware"],
"rsbuild-dev-middleware": ["./compiled/rsbuild-dev-middleware"],
"launch-editor-middleware": ["./compiled/launch-editor-middleware"],
"browserslist-to-es-version": ["./compiled/browserslist-to-es-version"],
"connect-history-api-fallback": [
Expand Down
49 changes: 21 additions & 28 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion website/docs/en/guide/basic/server.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ export default {

## Rspack Dev Server

The built-in dev server of Rspack CLI is [@rspack/dev-server](https://www.npmjs.com/package/@rspack/dev-server). Rsbuild does not use `@rspack/dev-server`, but implements a lighter version based on [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware).
The built-in dev server of Rspack CLI is [@rspack/dev-server](https://www.npmjs.com/package/@rspack/dev-server). Rsbuild does not use `@rspack/dev-server`, but instead implemented its own more lightweight version.

### Comparison

Expand Down
2 changes: 1 addition & 1 deletion website/docs/zh/guide/basic/server.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ export default {

## Rspack Dev Server

Rspack CLI 内置的开发服务器是 [@rspack/dev-server](https://www.npmjs.com/package/@rspack/dev-server),Rsbuild 没有使用 `@rspack/dev-server`,而是基于 [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) 实现了一个更轻量的版本
Rspack CLI 内置的开发服务器是 [@rspack/dev-server](https://www.npmjs.com/package/@rspack/dev-server),Rsbuild 没有使用 `@rspack/dev-server`,而是自行实现了一个更轻量的版本

### 对比

Expand Down
Loading