From 1e71a4c6031fffb0a2209ac25663af7b84675946 Mon Sep 17 00:00:00 2001 From: neverland Date: Mon, 16 Mar 2026 09:56:45 +0800 Subject: [PATCH] refactor: bundle serve-static --- package.json | 2 +- pnpm-lock.yaml | 6 +++--- rslib.config.ts | 1 - src/server.ts | 30 +++++------------------------- 4 files changed, 9 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index e159c08..e071e1b 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,6 @@ "connect-next": "^4.0.0", "http-proxy-middleware": "^3.0.5", "ipaddr.js": "^2.3.0", - "serve-static": "^2.2.1", "ws": "^8.19.0" }, "devDependencies": { @@ -82,6 +81,7 @@ "react-refresh": "0.18.0", "require-from-string": "^2.0.2", "selfsigned": "^5.5.0", + "serve-static": "^2.2.1", "simple-git-hooks": "^2.13.1", "style-loader": "^4.0.0", "typescript": "^5.9.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 734c02c..64d45ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,9 +29,6 @@ importers: ipaddr.js: specifier: ^2.3.0 version: 2.3.0 - serve-static: - specifier: ^2.2.1 - version: 2.2.1 ws: specifier: ^8.19.0 version: 8.19.0 @@ -111,6 +108,9 @@ importers: selfsigned: specifier: ^5.5.0 version: 5.5.0 + serve-static: + specifier: ^2.2.1 + version: 2.2.1 simple-git-hooks: specifier: ^2.13.1 version: 2.13.1 diff --git a/rslib.config.ts b/rslib.config.ts index d107ef0..2ec5b84 100644 --- a/rslib.config.ts +++ b/rslib.config.ts @@ -11,7 +11,6 @@ export default defineConfig({ 'connect-history-api-fallback': 'commonjs connect-history-api-fallback', 'http-proxy-middleware': 'commonjs http-proxy-middleware', - 'serve-static': 'commonjs serve-static', selfsigned: 'commonjs selfsigned', }, }, diff --git a/src/server.ts b/src/server.ts index e963bb0..f914aaf 100644 --- a/src/server.ts +++ b/src/server.ts @@ -129,31 +129,11 @@ if (!process.env.WEBPACK_SERVE) { process.env.WEBPACK_SERVE = 'true'; } -type FunctionReturning = () => T; - -const memoize = (fn: FunctionReturning): FunctionReturning => { - let cache = false; - let result: T | undefined; - let fnRef = fn; - return () => { - if (cache) { - return result as T; - } - - result = fnRef(); - cache = true; - // Allow to clean up memory for fn and all dependent resources - fnRef = undefined as unknown as FunctionReturning; - return result as T; - }; -}; - const getConnect = async () => { const { connect } = await import('connect-next'); return connect; }; -const getChokidar = memoize(() => import('chokidar')); -const getServeStatic = memoize(() => require('serve-static')); +const getChokidar = () => import('chokidar'); const encodeOverlaySettings = ( setting?: OverlayMessageOptions, @@ -1892,10 +1872,10 @@ class Server< middlewares.push({ name: 'serve-static', path: publicPath, - middleware: getServeStatic()( + middleware: (await import('serve-static')).default( staticOption.directory, staticOption.staticOptions, - ), + ) as DevServerMiddlewareHandler, }); } } @@ -1938,10 +1918,10 @@ class Server< middlewares.push({ name: 'serve-static', path: publicPath, - middleware: getServeStatic()( + middleware: (await import('serve-static')).default( staticOption.directory, staticOption.staticOptions, - ), + ) as DevServerMiddlewareHandler, }); } }