Files
web/next.config.js
2024-05-16 15:22:47 +02:00

146 lines
3.7 KiB
JavaScript

import createJiti from "jiti"
import { login } from "./constants/routes/handleAuth.js"
import {
benefits,
myPages,
overview,
profile,
profileEdit,
stays,
} from "./constants/routes/myPages.js"
const jiti = createJiti(new URL(import.meta.url).pathname)
jiti("./env/server")
jiti("./env/client")
// We define SCANDIC_ENV_URL for stable environments on Netlify:
// production, stage and test. Avoid using SCANDIC_ENV_URL locally.
// For deployments to those branches we have SCANDIC_ENV_URL defined.
// Otherwise we fallback to DEPLOY_PRIME_URL from Netlify built-in variables.
// Locally we set DEPLOY_PRIME_URL
const ENV_URL = process.env.SCANDIC_ENV_URL || process.env.DEPLOY_PRIME_URL
console.log({ config_SCANDIC_ENV_URL: process.env.SCANDIC_ENV_URL })
console.log({ config_DEPLOY_PRIME_URL: process.env.DEPLOY_PRIME_URL })
console.log({ ENV_URL })
// We set NEXTAUTH_URL here because next.config.js is included in Netlify
// functions when bundling. Otherwise we are unable to login on preview
// deployments. Netlify`s Next.js Runtime has built-in support for Next-Auth,
// but Next-Auth v5 is ESM and therefore not yet handle correctly by Netlify.
// This workaround should not be needed once Netlify fixes their code.
/** @type {import('next').NextConfig} */
const nextConfig = {
env: {
URL: ENV_URL,
NEXTAUTH_URL: `${ENV_URL}/api/web/auth`,
},
poweredByHeader: false,
eslint: { ignoreDuringBuilds: true },
images: {
remotePatterns: [
{
protocol: "https",
hostname: "eu-images.contentstack.com",
pathname: "/v3/assets/**",
},
{
protocol: "https",
hostname: "imagevault-stage.scandichotels.com",
},
{
protocol: "https",
hostname: "imagevault.scandichotels.com",
},
],
},
logging: {
fetches: {
fullUrl: true,
},
},
output: "standalone",
webpack: function (config, options) {
config.module.rules.push({
test: /\.(graphql|gql)/,
exclude: /node_modules/,
loader: "graphql-tag/loader",
})
return config
},
redirects() {
return [
{
source: myPages.da,
destination: overview.da,
permanent: false,
},
{
source: myPages.de,
destination: overview.de,
permanent: false,
},
{
source: myPages.en,
destination: overview.en,
permanent: false,
},
{
source: myPages.fi,
destination: overview.fi,
permanent: false,
},
{
source: myPages.no,
destination: overview.no,
permanent: false,
},
{
source: myPages.sv,
destination: overview.sv,
permanent: false,
},
]
},
rewrites() {
return {
beforeFiles: [
{ source: login.da, destination: "/da/login" },
{ source: login.de, destination: "/de/login" },
{ source: login.fi, destination: "/fi/login" },
{ source: login.no, destination: "/no/login" },
{ source: login.sv, destination: "/sv/login" },
{
source: `${myPages.da}/:path*`,
destination: `/da/my-pages/:path*`,
},
{
source: `${myPages.de}/:path*`,
destination: `/de/my-pages/:path*`,
},
{
source: `${myPages.fi}/:path*`,
destination: `/fi/my-pages/:path*`,
},
{
source: `${myPages.no}/:path*`,
destination: `/no/my-pages/:path*`,
},
{
source: `${myPages.sv}/:path*`,
destination: `/sv/my-pages/:path*`,
},
],
}
},
}
console.log({ config_ENVS: nextConfig.env })
export default nextConfig