EvoCalculator.Client2/apps/web/next.config.js
2023-02-06 12:19:39 +03:00

79 lines
2.1 KiB
JavaScript

const { withPlugins } = require('next-composed-plugins');
const withLess = require('next-with-less');
const fs = require('fs');
const path = require('path');
const { COLORS_DEV, COLORS_PROD } = require('./constants/colors');
const envSchema = require('./config/schema/env');
const urls = require('./constants/urls');
const { devices } = require('./config/ui');
const { publicRuntimeConfigSchema } = require('./config/schema/runtime-config');
const { serverRuntimeConfigSchema } = require('./config/schema/runtime-config');
const env = envSchema.parse(process.env);
const favicons = fs.readdirSync('./public/favicon/prod');
const faviconSubPath = env.USE_DEV_COLORS ? '/favicon/dev' : '/favicon/prod';
function buildFaviconRewrite(source) {
return {
destination: String.prototype.concat(env.BASE_PATH, faviconSubPath, source),
source,
};
}
/** @type {import('next').NextConfig} */
const nextConfig = {
basePath: env.BASE_PATH,
compiler: {
styledComponents: true,
},
eslint: {
ignoreDuringBuilds: true,
},
experimental: {
outputFileTracingRoot: path.join(__dirname, '../../'),
},
images: {
deviceSizes: devices,
},
output: 'standalone',
publicRuntimeConfig: publicRuntimeConfigSchema.parse(env),
reactStrictMode: true,
async rewrites() {
return [
{
destination: env.URL_CRM_GRAPHQL_DIRECT,
source: urls.URL_CRM_GRAPHQL_PROXY,
},
{
destination: env.URL_GET_USER_DIRECT,
source: urls.URL_GET_USER_PROXY,
},
{
destination: env.URL_CORE_FINGAP_DIRECT,
source: urls.URL_CORE_FINGAP_PROXY,
},
...favicons.map((fileName) => buildFaviconRewrite(`/${fileName}`)),
];
},
serverRuntimeConfig: serverRuntimeConfigSchema.parse(env),
swcMinify: true,
transpilePackages: ['ui', 'tools'],
};
const plugins = [withLess];
const colorPrimary = env.USE_DEV_COLORS ? COLORS_DEV.COLOR_PRIMARY : COLORS_PROD.COLOR_PRIMARY;
const config = {
...nextConfig,
lessLoaderOptions: {
lessOptions: {
modifyVars: {
'primary-color': colorPrimary,
},
},
},
};
module.exports = withPlugins(config, plugins);