137 lines
3.7 KiB
JavaScript
137 lines
3.7 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
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 { withSentryConfig } = require('@sentry/nextjs');
|
|
|
|
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,
|
|
};
|
|
}
|
|
|
|
module.exports = withSentryConfig(
|
|
{
|
|
basePath: env.BASE_PATH,
|
|
compiler: {
|
|
styledComponents: true,
|
|
},
|
|
eslint: {
|
|
ignoreDuringBuilds: true,
|
|
},
|
|
experimental: {
|
|
outputFileTracingRoot: path.join(__dirname, '../../'),
|
|
proxyTimeout: 1000 * 90,
|
|
},
|
|
images: {
|
|
deviceSizes: devices,
|
|
},
|
|
output: 'standalone',
|
|
publicRuntimeConfig: publicRuntimeConfigSchema.parse(env),
|
|
reactStrictMode: true,
|
|
|
|
async redirects() {
|
|
return [
|
|
{
|
|
source: '/admin',
|
|
destination: '/admin/cache',
|
|
permanent: true,
|
|
},
|
|
];
|
|
},
|
|
|
|
async rewrites() {
|
|
return [
|
|
{
|
|
destination: env.URL_CRM_GRAPHQL_PROXY + '/:path*',
|
|
source: urls.URL_CRM_GRAPHQL_PROXY + '/:path*',
|
|
},
|
|
{
|
|
destination: env.URL_CRM_DOWNLOADKP_BASE + '/:path*',
|
|
source: urls.URL_CRM_DOWNLOADKP_PROXY + '/:path*',
|
|
},
|
|
{
|
|
destination: env.URL_GET_USER_DIRECT,
|
|
source: urls.URL_GET_USER_PROXY,
|
|
},
|
|
{
|
|
destination: env.URL_CORE_FINGAP_DIRECT,
|
|
source: urls.URL_CORE_FINGAP_PROXY,
|
|
},
|
|
{
|
|
destination: env.URL_1C_TRANSTAX_DIRECT,
|
|
source: urls.URL_1C_TRANSTAX_PROXY,
|
|
},
|
|
{
|
|
destination: env.URL_ELT_KASKO_DIRECT,
|
|
source: urls.URL_ELT_KASKO_PROXY,
|
|
},
|
|
{
|
|
destination: env.URL_ELT_OSAGO_DIRECT,
|
|
source: urls.URL_ELT_OSAGO_PROXY,
|
|
},
|
|
{
|
|
destination: env.URL_CACHE_GET_QUERIES_DIRECT,
|
|
source: urls.URL_CACHE_GET_QUERIES_PROXY,
|
|
},
|
|
{
|
|
destination: env.URL_CACHE_DELETE_QUERY_DIRECT + '/:path*',
|
|
source: urls.URL_CACHE_DELETE_QUERY_PROXY + '/:path*',
|
|
},
|
|
{
|
|
destination: env.URL_CACHE_RESET_QUERIES_DIRECT,
|
|
source: urls.URL_CACHE_RESET_QUERIES_PROXY,
|
|
},
|
|
{
|
|
destination: env.URL_CACHE_GET_QUERY_DIRECT,
|
|
source: urls.URL_CACHE_GET_QUERY_PROXY,
|
|
},
|
|
...favicons.map((fileName) => buildFaviconRewrite(`/${fileName}`)),
|
|
];
|
|
},
|
|
sentry: {
|
|
disableClientWebpackPlugin: true,
|
|
disableServerWebpackPlugin: true,
|
|
hideSourceMaps: true,
|
|
tunnelRoute: '/track-error',
|
|
},
|
|
serverRuntimeConfig: serverRuntimeConfigSchema.parse(env),
|
|
swcMinify: true,
|
|
transpilePackages: [
|
|
'ui',
|
|
'tools',
|
|
'antd',
|
|
'@ant-design/icons',
|
|
'rc-pagination',
|
|
'rc-picker',
|
|
'@ant-design',
|
|
'@rc-component',
|
|
'rc-table',
|
|
],
|
|
},
|
|
{
|
|
authToken: env.SENTRY_AUTH_TOKEN,
|
|
org: 'sentry',
|
|
project: 'calculator-client',
|
|
silent: true,
|
|
url: 'https://errors.evoleasing.ru/',
|
|
},
|
|
{
|
|
automaticVercelMonitors: true,
|
|
disableClientWebpackPlugin: true,
|
|
disableLogger: true,
|
|
disableServerWebpackPlugin: true,
|
|
hideSourceMaps: true,
|
|
transpileClientSDK: false,
|
|
tunnelRoute: '/track-error',
|
|
}
|
|
);
|