From 1eb1b1f549c24789ea8d9eb703173fb3f1e92870 Mon Sep 17 00:00:00 2001 From: intellild Date: Sat, 9 May 2026 17:08:08 +0800 Subject: [PATCH] fix(rspack): simplify NestJS externals config --- .gitignore | 3 +++ pnpm-lock.yaml | 9 +++++++ rspack/nestjs/package.json | 3 ++- rspack/nestjs/rspack.config.mjs | 46 +++++++-------------------------- 4 files changed, 24 insertions(+), 37 deletions(-) diff --git a/.gitignore b/.gitignore index cf58358f..52f40c05 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ node_modules/ .env.test.local .env.production.local .env.local + +# Jetbrains IDE files +.idea diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7fa20d91..22ee8cd9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2510,6 +2510,9 @@ importers: cross-env: specifier: 10.1.0 version: 10.1.0 + webpack-node-externals: + specifier: 3.0.0 + version: 3.0.0 rspack/next-rspack-app-router: dependencies: @@ -14915,6 +14918,10 @@ packages: webpack-hot-middleware@2.26.1: resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} + webpack-node-externals@3.0.0: + resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} + engines: {node: '>=6'} + webpack-sources@1.4.3: resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} @@ -28457,6 +28464,8 @@ snapshots: html-entities: 2.6.0 strip-ansi: 6.0.1 + webpack-node-externals@3.0.0: {} + webpack-sources@1.4.3: dependencies: source-list-map: 2.0.1 diff --git a/rspack/nestjs/package.json b/rspack/nestjs/package.json index d1201cbe..ad078102 100644 --- a/rspack/nestjs/package.json +++ b/rspack/nestjs/package.json @@ -20,6 +20,7 @@ "@rspack/cli": "2.0.2", "@rspack/core": "2.0.2", "@rspack/dev-server": "2.0.1", - "cross-env": "10.1.0" + "cross-env": "10.1.0", + "webpack-node-externals": "3.0.0" } } diff --git a/rspack/nestjs/rspack.config.mjs b/rspack/nestjs/rspack.config.mjs index 34417bbb..27221f51 100644 --- a/rspack/nestjs/rspack.config.mjs +++ b/rspack/nestjs/rspack.config.mjs @@ -2,12 +2,18 @@ import { defineConfig } from '@rspack/cli'; import { rspack } from '@rspack/core'; import { RunScriptWebpackPlugin } from 'run-script-webpack-plugin'; +import nodeExternals from 'webpack-node-externals'; + +const isProduction = process.env.BUILD === 'true'; export default defineConfig({ context: import.meta.dirname, target: 'node', entry: { - main: ['@rspack/core/hot/poll?100', './src/main.ts'], + main: isProduction ? './src/main.ts' : ['@rspack/core/hot/poll?100', './src/main.ts'], + }, + output: { + clean: true, }, resolve: { extensions: ['...', '.ts', '.tsx', '.jsx'], @@ -67,40 +73,8 @@ export default defineConfig({ }, }, externals: [ - function (obj, callback) { - const resource = obj.request; - const lazyImports = [ - '@nestjs/core', - '@nestjs/microservices', - '@nestjs/platform-express', - 'cache-manager', - 'class-validator', - 'class-transformer', - // ADD THIS - '@nestjs/microservices/microservices-module', - '@nestjs/websockets', - 'socket.io-adapter', - 'utf-8-validate', - 'bufferutil', - 'kerberos', - '@mongodb-js/zstd', - 'snappy', - '@aws-sdk/credential-providers', - 'mongodb-client-encryption', - '@nestjs/websockets/socket-module', - 'bson-ext', - 'snappy/package.json', - 'aws4', - ]; - if (!lazyImports.includes(resource)) { - return callback(); - } - try { - import.meta.resolve(resource); - } catch (err) { - callback(null, resource); - } - callback(); - }, + nodeExternals({ + allowlist: [/@rspack\/core\/hot\/poll/], + }), ], });