| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import path from 'node:path'
- import { fileURLToPath } from 'node:url'
- import { defineConfig, loadEnv } from '@rsbuild/core'
- import { pluginReact } from '@rsbuild/plugin-react'
- import { pluginTailwindcss } from '@rsbuild/plugin-tailwindcss'
- import { tanstackRouter } from '@tanstack/router-plugin/rspack'
- const __dirname = path.dirname(fileURLToPath(import.meta.url))
- export default defineConfig(({ envMode }) => {
- const env = loadEnv({ mode: envMode, prefixes: ['VITE_'] })
- const serverUrl =
- process.env.VITE_REACT_APP_SERVER_URL ||
- env.rawPublicVars.VITE_REACT_APP_SERVER_URL ||
- // 'http://192.168.100.26:3000',
- 'http://47.117.92.63:8081'
- // 'http://192.168.100.184:3000'
- // 'http://192.168.20.70:3000'
- const isProd = envMode === 'production'
- const devProxy = Object.fromEntries(
- (['/api', '/mj', '/pg'] as const).map((key) => [
- key,
- { target: serverUrl, changeOrigin: true },
- ])
- ) as Record<string, { target: string; changeOrigin: boolean }>
- return {
- plugins: [pluginReact(), pluginTailwindcss({ optimize: false })],
- // Rsbuild 2: replaces deprecated `performance.chunkSplit` (RSPack 2 aligned)
- splitChunks: {
- preset: 'default',
- cacheGroups: {
- 'vendor-react': {
- test: /node_modules[\\/](react|react-dom)[\\/]/,
- name: 'vendor-react',
- chunks: 'all',
- priority: 0,
- enforce: true,
- },
- 'vendor-ui-primitives': {
- test: /node_modules[\\/](@base-ui|@radix-ui)[\\/]/,
- name: 'vendor-ui-primitives',
- chunks: 'all',
- priority: 0,
- enforce: true,
- },
- 'vendor-tanstack': {
- test: /node_modules[\\/]@tanstack[\\/]/,
- name: 'vendor-tanstack',
- chunks: 'all',
- priority: 0,
- enforce: true,
- },
- },
- },
- source: {
- entry: {
- index: './src/main.tsx',
- },
- },
- resolve: {
- alias: {
- '@': path.resolve(__dirname, './src'),
- },
- },
- html: {
- template: './index.html',
- },
- server: {
- host: '0.0.0.0',
- strictPort: false,
- proxy: devProxy,
- },
- output: {
- // Production optimizations
- minify: isProd,
- target: 'web',
- distPath: {
- root: 'dist',
- },
- // Rely on Rsbuild default legalComments ("linked" → per-chunk *.LICENSE.txt) in all modes.
- // Do not set "none" in production: that strips minifier-preserved third-party notices and
- // extracted license files, which some distributions require for open-source compliance.
- },
- performance: {
- // Remove console in production
- removeConsole: isProd ? ['log'] : false,
- buildCache: false,
- },
- tools: {
- rspack: {
- plugins: [
- tanstackRouter({
- target: 'react',
- // Dev: avoid per-route async chunks (reduces white flash on navigation + faster HMR feedback).
- // Prod: keep route-based code splitting.
- autoCodeSplitting: isProd,
- }),
- ],
- },
- },
- }
- })
|