mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 08:13:43 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			2.6 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,
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
const CorsHeaders = [
 | 
						|
  { 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",
 | 
						|
  },
 | 
						|
];
 | 
						|
 | 
						|
if (mode !== "export") {
 | 
						|
  nextConfig.headers = async () => {
 | 
						|
    return [
 | 
						|
      {
 | 
						|
        source: "/api/:path*",
 | 
						|
        headers: CorsHeaders,
 | 
						|
      },
 | 
						|
    ];
 | 
						|
  };
 | 
						|
 | 
						|
  nextConfig.rewrites = async () => {
 | 
						|
    const ret = [
 | 
						|
      // adjust for previous version directly using "/api/proxy/" as proxy base route
 | 
						|
      // {
 | 
						|
      //   source: "/api/proxy/v1/:path*",
 | 
						|
      //   destination: "https://api.openai.com/v1/:path*",
 | 
						|
      // },
 | 
						|
      {
 | 
						|
        // https://{resource_name}.openai.azure.com/openai/deployments/{deploy_name}/chat/completions
 | 
						|
        source:
 | 
						|
          "/api/proxy/azure/:resource_name/deployments/:deploy_name/:path*",
 | 
						|
        destination:
 | 
						|
          "https://:resource_name.openai.azure.com/openai/deployments/:deploy_name/:path*",
 | 
						|
      },
 | 
						|
      {
 | 
						|
        source: "/api/proxy/google/:path*",
 | 
						|
        destination: "https://generativelanguage.googleapis.com/:path*",
 | 
						|
      },
 | 
						|
      {
 | 
						|
        source: "/api/proxy/openai/:path*",
 | 
						|
        destination: "https://api.openai.com/:path*",
 | 
						|
      },
 | 
						|
      {
 | 
						|
        source: "/api/proxy/anthropic/:path*",
 | 
						|
        destination: "https://api.anthropic.com/:path*",
 | 
						|
      },
 | 
						|
      {
 | 
						|
        source: "/google-fonts/:path*",
 | 
						|
        destination: "https://fonts.googleapis.com/:path*",
 | 
						|
      },
 | 
						|
      {
 | 
						|
        source: "/sharegpt",
 | 
						|
        destination: "https://sharegpt.com/api/conversations",
 | 
						|
      },
 | 
						|
      {
 | 
						|
        source: "/api/proxy/alibaba/:path*",
 | 
						|
        destination: "https://dashscope.aliyuncs.com/api/:path*",
 | 
						|
      },
 | 
						|
    ];
 | 
						|
 | 
						|
    return {
 | 
						|
      beforeFiles: ret,
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export default nextConfig;
 |