Update next.config.mjs
This commit is contained in:
parent
0e676fe694
commit
e51d23c5d6
|
|
@ -0,0 +1,136 @@
|
|||
import nextMDX from "@next/mdx";
|
||||
import path from "path";
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {
|
||||
// Turbopack configuration
|
||||
turbopack: {
|
||||
// Configure MDX loader for Turbopack
|
||||
rules: {
|
||||
'*.mdx': {
|
||||
loaders: ['@mdx-js/loader'],
|
||||
as: '*.js',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
experimental: {
|
||||
// Optimize bundling
|
||||
optimizePackageImports: [
|
||||
'lucide-react',
|
||||
'react-icons',
|
||||
'@tabler/icons-react',
|
||||
'framer-motion',
|
||||
'react-hook-form',
|
||||
'@radix-ui/react-label',
|
||||
'@radix-ui/react-slot',
|
||||
],
|
||||
},
|
||||
|
||||
// Suppress hydration warnings globally
|
||||
reactStrictMode: false,
|
||||
|
||||
// Image optimization
|
||||
images: {
|
||||
remotePatterns: [
|
||||
{
|
||||
protocol: 'https',
|
||||
hostname: 'i.pravatar.cc',
|
||||
},
|
||||
{
|
||||
protocol: 'https',
|
||||
hostname: 'images.unsplash.com',
|
||||
},
|
||||
{
|
||||
protocol: 'https',
|
||||
hostname: '*.supabase.co',
|
||||
},
|
||||
{
|
||||
protocol: 'https',
|
||||
hostname: 'www.robot-speed.com',
|
||||
},
|
||||
{
|
||||
protocol: 'https',
|
||||
hostname: 'robot-speed.com',
|
||||
},
|
||||
],
|
||||
formats: ['image/avif', 'image/webp'],
|
||||
loader: 'default',
|
||||
dangerouslyAllowSVG: true,
|
||||
contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;",
|
||||
},
|
||||
|
||||
// Page extensions - include .js/.jsx for compatibility
|
||||
pageExtensions: ["js", "jsx", "ts", "tsx", "mdx"],
|
||||
|
||||
// Performance optimizations
|
||||
poweredByHeader: false,
|
||||
compress: true,
|
||||
|
||||
// TypeScript configuration
|
||||
typescript: {
|
||||
ignoreBuildErrors: false
|
||||
},
|
||||
|
||||
// Compiler optimizations
|
||||
compiler: {
|
||||
// Remove console logs in production
|
||||
removeConsole: process.env.NODE_ENV === 'production',
|
||||
// Remove data-testid in production
|
||||
reactRemoveProperties: process.env.NODE_ENV === 'production' ? { properties: ['^data-testid$'] } : false,
|
||||
},
|
||||
|
||||
// Module transpilation
|
||||
transpilePackages: ['geist', 'cobe'],
|
||||
|
||||
// Webpack configuration for aliases and specific replacements
|
||||
webpack: (config, { webpack }) => {
|
||||
config.resolve.alias = {
|
||||
...config.resolve.alias,
|
||||
'@': path.resolve('.'),
|
||||
};
|
||||
|
||||
const isVercel = process.env.VERCEL === '1' ||
|
||||
process.env.VERCEL === 'true' ||
|
||||
process.env.NEXT_PUBLIC_VERCEL === '1';
|
||||
const isProduction = process.env.NODE_ENV === 'production';
|
||||
|
||||
if (isVercel || isProduction) {
|
||||
config.plugins.push(
|
||||
new webpack.NormalModuleReplacementPlugin(
|
||||
/tailwind-cdn-loader/,
|
||||
path.resolve('./components/empty-loader.tsx')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return config;
|
||||
},
|
||||
|
||||
async headers() {
|
||||
return [
|
||||
{
|
||||
source: '/:path*',
|
||||
headers: [
|
||||
{
|
||||
key: 'X-Frame-Options',
|
||||
value: 'ALLOWALL',
|
||||
},
|
||||
{
|
||||
key: 'Cache-Control',
|
||||
value: 'no-store, no-cache, must-revalidate, proxy-revalidate',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
},
|
||||
};
|
||||
|
||||
const withMDX = nextMDX({
|
||||
extension: /\.mdx?$/,
|
||||
options: {
|
||||
providerImportSource: '@mdx-js/react',
|
||||
},
|
||||
});
|
||||
|
||||
export default withMDX(nextConfig);
|
||||
Loading…
Reference in New Issue