Skip to content
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: 0 additions & 2 deletions packages/core/src/createRsbuild.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import { pluginExternals } from './plugins/externals';
import { pluginFileSize } from './plugins/fileSize';
import { pluginHtml } from './plugins/html';
import { pluginInlineChunk } from './plugins/inlineChunk';
import { pluginLazyCompilation } from './plugins/lazyCompilation';
import { pluginManifest } from './plugins/manifest';
import { pluginMinimize } from './plugins/minimize';
import { pluginModuleFederation } from './plugins/moduleFederation';
Expand Down Expand Up @@ -111,7 +110,6 @@ async function applyDefaultPlugins(
pluginManifest(),
pluginModuleFederation(),
pluginRspackProfile(),
pluginLazyCompilation(),
pluginSri(),
pluginNonce(),
]);
Expand Down
25 changes: 0 additions & 25 deletions packages/core/src/plugins/lazyCompilation.ts

This file was deleted.

2 changes: 1 addition & 1 deletion packages/core/src/server/compilationManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export class CompilationManager {

private serverConfig: ServerConfig;

private compiler: Rspack.Compiler | Rspack.MultiCompiler;
public compiler: Rspack.Compiler | Rspack.MultiCompiler;

private publicPaths: string[];

Expand Down
35 changes: 25 additions & 10 deletions packages/core/src/server/devMiddlewares.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import { isAbsolute, join } from 'node:path';
import rspack from '@rspack/core';
import { normalizePublicDirs } from '../config';
import { isMultiCompiler } from '../helpers';
import { logger } from '../logger';
import type {
DevConfig,
EnvironmentAPI,
InternalContext,
RequestHandler,
ServerConfig,
SetupMiddlewaresServer,
Expand All @@ -25,11 +28,9 @@ export type RsbuildDevMiddlewareOptions = {
pwd: string;
dev: DevConfig;
server: ServerConfig;
context: InternalContext;
environments: EnvironmentAPI;
compilationManager?: CompilationManager;
output: {
distPath: string;
};
/**
* Callbacks returned by the `onBeforeStartDevServer` hook.
*/
Expand Down Expand Up @@ -71,10 +72,11 @@ const applySetupMiddlewares = (
export type Middlewares = Array<RequestHandler | [string, RequestHandler]>;

const applyDefaultMiddlewares = async ({
dev,
middlewares,
server,
compilationManager,
output,
context,
pwd,
environments,
postCallbacks,
Expand Down Expand Up @@ -110,6 +112,23 @@ const applyDefaultMiddlewares = async ({
);
}

if (
context.action === 'dev' &&
context.bundlerType === 'rspack' &&
dev.lazyCompilation &&
compilationManager
) {
const { compiler } = compilationManager;

middlewares.push(
rspack.experiments.lazyCompilationMiddleware(
// TODO: support for multi compiler
isMultiCompiler(compiler) ? compiler.compilers[0] : compiler,
dev.lazyCompilation,
),
);
}

// dev proxy handler, each proxy has own handler
if (server.proxy) {
const { middlewares: proxyMiddlewares, upgrade } =
Expand Down Expand Up @@ -149,15 +168,11 @@ const applyDefaultMiddlewares = async ({
});
}

const distPath = isAbsolute(output.distPath)
? output.distPath
: join(pwd, output.distPath);

if (compilationManager) {
middlewares.push(
getHtmlCompletionMiddleware({
distPath,
compilationManager,
distPath: context.distPath,
}),
);
}
Expand Down Expand Up @@ -188,8 +203,8 @@ const applyDefaultMiddlewares = async ({
if (compilationManager) {
middlewares.push(
getHtmlFallbackMiddleware({
distPath,
compilationManager,
distPath: context.distPath,
htmlFallback: server.htmlFallback,
}),
);
Expand Down
50 changes: 23 additions & 27 deletions packages/core/src/server/devServer.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import type { Server } from 'node:http';
import type { Http2SecureServer } from 'node:http2';
import type Connect from '../../compiled/connect/index.js';
import { ROOT_DIST_DIR } from '../constants';
import { getPublicPathFromCompiler, isMultiCompiler } from '../helpers';
import { logger } from '../logger';
import { onBeforeRestartServer, restartDevServer } from '../restart';
Expand Down Expand Up @@ -132,11 +131,12 @@ export async function createDevServer<
config,
});
const { middlewareMode } = config.server;
const { context } = options;
const devConfig = formatDevConfig(config.dev, port);
const routes = getRoutes(options.context);
const root = options.context.rootPath;
const routes = getRoutes(context);
const root = context.rootPath;

options.context.devServer = {
context.devServer = {
hostname: host,
port,
https,
Expand All @@ -147,16 +147,14 @@ export async function createDevServer<
// should register onDevCompileDone hook before startCompile
const waitFirstCompileDone = runCompile
? new Promise<void>((resolve) => {
options.context.hooks.onDevCompileDone.tap(
({ stats, isFirstCompile }) => {
lastStats = 'stats' in stats ? stats.stats : [stats];

if (!isFirstCompile) {
return;
}
resolve();
},
);
context.hooks.onDevCompileDone.tap(({ stats, isFirstCompile }) => {
lastStats = 'stats' in stats ? stats.stats : [stats];

if (!isFirstCompile) {
return;
}
resolve();
});
})
: Promise.resolve();

Expand All @@ -180,7 +178,7 @@ export async function createDevServer<
},
publicPaths: publicPaths,
compiler,
environments: options.context.environments,
environments: context.environments,
});

await compilationManager.init();
Expand Down Expand Up @@ -225,7 +223,7 @@ export async function createDevServer<
// ensure closeServer is only called once
removeCleanup(closeServer);
cleanupGracefulShutdown?.();
await options.context.hooks.onCloseDevServer.callBatch();
await context.hooks.onCloseDevServer.callBatch();
await Promise.all([devMiddlewares?.close(), fileWatcher?.close()]);
};

Expand All @@ -250,7 +248,7 @@ export async function createDevServer<
help: shortcutsOptions.help,
customShortcuts: shortcutsOptions.custom,
});
options.context.hooks.onCloseDevServer.tap(cleanup);
context.hooks.onCloseDevServer.tap(cleanup);
}

if (!getPortSilently && portTip) {
Expand All @@ -264,7 +262,7 @@ export async function createDevServer<
);

const environmentAPI = Object.fromEntries(
Object.entries(options.context.environments).map(([name, environment]) => {
Object.entries(context.environments).map(([name, environment]) => {
return [
name,
{
Expand Down Expand Up @@ -339,7 +337,7 @@ export async function createDevServer<
const serverTerminator = getServerTerminator(httpServer);
logger.debug('listen dev server');

options.context.hooks.onCloseDevServer.tap(serverTerminator);
context.hooks.onCloseDevServer.tap(serverTerminator);

return new Promise<StartServerResult>((resolve) => {
httpServer.listen(
Expand Down Expand Up @@ -382,10 +380,10 @@ export async function createDevServer<
});
},
afterListen: async () => {
await options.context.hooks.onAfterStartDevServer.callBatch({
await context.hooks.onAfterStartDevServer.callBatch({
port,
routes,
environments: options.context.environments,
environments: context.environments,
});
},
connectWebSocket: ({ server }: { server: HTTPServer }) => {
Expand All @@ -399,15 +397,15 @@ export async function createDevServer<
};

const postCallbacks = (
await options.context.hooks.onBeforeStartDevServer.callBatch({
await context.hooks.onBeforeStartDevServer.callBatch({
server: devServerAPI,
environments: options.context.environments,
environments: context.environments,
})
).filter((item) => typeof item === 'function');

if (runCompile) {
// print server url should between listen and beforeCompile
options.context.hooks.onBeforeCreateCompiler.tap(beforeCreateCompiler);
context.hooks.onBeforeCreateCompiler.tap(beforeCreateCompiler);
} else {
beforeCreateCompiler();
}
Expand All @@ -425,11 +423,9 @@ export async function createDevServer<
pwd: root,
compilationManager,
dev: devConfig,
context,
server: config.server,
environments: environmentAPI,
output: {
distPath: options.context.distPath || ROOT_DIST_DIR,
},
postCallbacks,
});

Expand Down
Loading