rspack.prod.config.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // @ts-nocheck
  2. import { defineConfig } from '@rspack/cli';
  3. import { rspack } from '@rspack/core';
  4. import { merge } from 'webpack-merge';
  5. import { baseConfig } from './rspack.base.config';
  6. export default defineConfig(
  7. merge(baseConfig, {
  8. mode: 'production',
  9. entry: {
  10. main: './src/main.ts',
  11. },
  12. devtool: false,
  13. output: {
  14. clean: true,
  15. filename: '[name].[contenthash].js',
  16. chunkFilename: '[name].[contenthash].js',
  17. },
  18. optimization: {
  19. minimize: true,
  20. minimizer: [
  21. new rspack.SwcJsMinimizerRspackPlugin(),
  22. new rspack.LightningCssMinimizerRspackPlugin(),
  23. ],
  24. splitChunks: {
  25. chunks: 'async',
  26. minChunks: 1,
  27. minSize: 2000,
  28. maxAsyncRequests: 30,
  29. maxInitialRequests: 30,
  30. cacheGroups: {
  31. 'vue-router': {
  32. name: 'vue-router',
  33. test: /[\\/]node_modules[\\/]vue-router[\\/]/,
  34. priority: 120,
  35. chunks: 'all',
  36. reuseExistingChunk: true,
  37. },
  38. vue: {
  39. name: 'vue',
  40. test: /[\\/]node_modules[\\/]vue[\\/]/,
  41. priority: 200,
  42. chunks: 'all',
  43. reuseExistingChunk: true,
  44. },
  45. axios: {
  46. name: 'axios',
  47. test: /[\\/]node_modules[\\/]axios[\\/]/,
  48. priority: 9,
  49. chunks: 'all',
  50. reuseExistingChunk: true,
  51. },
  52. defaultVendors: {
  53. test: /[\\/]node_modules[\\/]/,
  54. priority: -10,
  55. reuseExistingChunk: true,
  56. },
  57. default: {
  58. minChunks: 2,
  59. priority: -20,
  60. reuseExistingChunk: true,
  61. },
  62. },
  63. },
  64. },
  65. }),
  66. );