mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 08:13:43 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import webpack from "webpack";
 | 
						|
 | 
						|
const mode = process.env.BUILD_MODE ?? "standalone";
 | 
						|
console.log("[Next] build mode", mode);
 | 
						|
 | 
						|
const disableChunk = !!process.env.DISABLE_CHUNK || mode === "export";
 | 
						|
console.log("[Next] build with chunk: ", !disableChunk);
 | 
						|
 | 
						|
/** @type {import('next').NextConfig} */
 | 
						|
const nextConfig = {
 | 
						|
  webpack(config) {
 | 
						|
    config.module.rules.push({
 | 
						|
      test: /\.svg$/,
 | 
						|
      use: ["@svgr/webpack"],
 | 
						|
    });
 | 
						|
 | 
						|
    if (disableChunk) {
 | 
						|
      config.plugins.push(
 | 
						|
        new webpack.optimize.LimitChunkCountPlugin({ maxChunks: 1 }),
 | 
						|
      );
 | 
						|
    }
 | 
						|
 | 
						|
    config.resolve.fallback = {
 | 
						|
      child_process: false,
 | 
						|
    };
 | 
						|
 | 
						|
    return config;
 | 
						|
  },
 | 
						|
  output: mode,
 | 
						|
  images: {
 | 
						|
    unoptimized: mode === "export",
 | 
						|
  },
 | 
						|
  experimental: {
 | 
						|
    forceSwcTransforms: true,
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
if (mode !== "export") {
 | 
						|
  nextConfig.headers = async () => {
 | 
						|
    return [
 | 
						|
      {
 | 
						|
        source: "/api/:path*",
 | 
						|
        headers: [
 | 
						|
          { key: "Access-Control-Allow-Credentials", value: "true" },
 | 
						|
          { key: "Access-Control-Allow-Origin", value: "*" },
 | 
						|
          {
 | 
						|
            key: "Access-Control-Allow-Methods",
 | 
						|
            value: "*",
 | 
						|
          },
 | 
						|
          {
 | 
						|
            key: "Access-Control-Allow-Headers",
 | 
						|
            value: "*",
 | 
						|
          },
 | 
						|
          {
 | 
						|
            key: "Access-Control-Max-Age",
 | 
						|
            value: "86400",
 | 
						|
          },
 | 
						|
        ],
 | 
						|
      },
 | 
						|
    ];
 | 
						|
  };
 | 
						|
 | 
						|
  nextConfig.rewrites = async () => {
 | 
						|
    const ret = [
 | 
						|
      {
 | 
						|
        source: "/api/proxy/:path*",
 | 
						|
        destination: "https://api.openai.com/:path*",
 | 
						|
      },
 | 
						|
      {
 | 
						|
        source: "/google-fonts/:path*",
 | 
						|
        destination: "https://fonts.googleapis.com/:path*",
 | 
						|
      },
 | 
						|
      {
 | 
						|
        source: "/sharegpt",
 | 
						|
        destination: "https://sharegpt.com/api/conversations",
 | 
						|
      },
 | 
						|
    ];
 | 
						|
 | 
						|
    const apiUrl = process.env.API_URL;
 | 
						|
    if (apiUrl) {
 | 
						|
      console.log("[Next] using api url ", apiUrl);
 | 
						|
      ret.push({
 | 
						|
        source: "/api/:path*",
 | 
						|
        destination: `${apiUrl}/:path*`,
 | 
						|
      });
 | 
						|
    }
 | 
						|
 | 
						|
    return {
 | 
						|
      beforeFiles: ret,
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export default nextConfig;
 |