68 lines
1.6 KiB
TypeScript
68 lines
1.6 KiB
TypeScript
import type { NextConfig } from "next";
|
|
|
|
const nextConfig: NextConfig = {
|
|
// Bundle optimization
|
|
experimental: {
|
|
// Optimize package imports for faster builds and smaller bundles
|
|
optimizePackageImports: [
|
|
"lucide-react",
|
|
"@radix-ui/react-dialog",
|
|
"@radix-ui/react-dropdown-menu",
|
|
"@radix-ui/react-select",
|
|
],
|
|
},
|
|
|
|
// Webpack optimization
|
|
webpack: (config, { isServer }) => {
|
|
// Split chunks for better caching
|
|
if (!isServer) {
|
|
config.optimization = {
|
|
...config.optimization,
|
|
splitChunks: {
|
|
chunks: "all",
|
|
cacheGroups: {
|
|
// Vendor chunk for node_modules
|
|
vendor: {
|
|
name: "vendor",
|
|
test: /[\\/]node_modules[\\/]/,
|
|
priority: 10,
|
|
reuseExistingChunk: true,
|
|
},
|
|
// DND kit chunk - heavy library
|
|
dnd: {
|
|
name: "dnd",
|
|
test: /[\\/]node_modules[\\/]@dnd-kit[\\/]/,
|
|
priority: 20,
|
|
reuseExistingChunk: true,
|
|
},
|
|
// Radix UI chunk
|
|
radix: {
|
|
name: "radix",
|
|
test: /[\\/]node_modules[\\/]@radix-ui[\\/]/,
|
|
priority: 15,
|
|
reuseExistingChunk: true,
|
|
},
|
|
},
|
|
},
|
|
};
|
|
}
|
|
return config;
|
|
},
|
|
|
|
// Image optimization
|
|
images: {
|
|
remotePatterns: [],
|
|
},
|
|
|
|
// Compression
|
|
compress: true,
|
|
|
|
// Power optimization - reduce CPU usage
|
|
poweredByHeader: false,
|
|
|
|
// Trailing slashes for SEO
|
|
trailingSlash: false,
|
|
};
|
|
|
|
export default nextConfig;
|