55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import { withPayload } from "@payloadcms/next/withPayload";
|
|
import type { NextConfig } from "next";
|
|
import path from "path";
|
|
import { fileURLToPath } from "url";
|
|
import { redirects } from "./redirects";
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const dirname = path.dirname(__filename);
|
|
|
|
const NEXT_PUBLIC_SERVER_URL = process.env.VERCEL_PROJECT_PRODUCTION_URL
|
|
? `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}`
|
|
: process.env.__NEXT_PRIVATE_ORIGIN || "http://localhost:3000";
|
|
|
|
const nextConfig: NextConfig = {
|
|
// Temporarily required on Windows until Next.js fixes Turbopack Sass resolution.
|
|
// See: https://github.com/vercel/next.js/issues/86431
|
|
sassOptions: {
|
|
loadPaths: ["./node_modules/@payloadcms/ui/dist/scss/"],
|
|
},
|
|
images: {
|
|
localPatterns: [
|
|
{
|
|
pathname: "/api/media/file/**",
|
|
},
|
|
],
|
|
qualities: [100],
|
|
remotePatterns: [
|
|
...[NEXT_PUBLIC_SERVER_URL /* 'https://example.com' */].map((item) => {
|
|
const url = new URL(item);
|
|
|
|
return {
|
|
hostname: url.hostname,
|
|
protocol: url.protocol.replace(":", "") as "http" | "https",
|
|
};
|
|
}),
|
|
],
|
|
},
|
|
webpack: (webpackConfig) => {
|
|
webpackConfig.resolve.extensionAlias = {
|
|
".cjs": [".cts", ".cjs"],
|
|
".js": [".ts", ".tsx", ".js", ".jsx"],
|
|
".mjs": [".mts", ".mjs"],
|
|
};
|
|
|
|
return webpackConfig;
|
|
},
|
|
reactStrictMode: true,
|
|
redirects,
|
|
turbopack: {
|
|
root: path.resolve(dirname),
|
|
},
|
|
output: "standalone",
|
|
};
|
|
|
|
export default withPayload(nextConfig, { devBundleServerPackages: false });
|