- localization-svc: defaultLocale ru, resolveLocale only by geo - web-svc: DEFAULT_LOCALE ru, layout lang=ru, embeddedTranslations fallback ru - countryToLocale: default ru when no country or unknown country Co-authored-by: Cursor <cursoragent@cursor.com>
66 lines
2.5 KiB
JavaScript
66 lines
2.5 KiB
JavaScript
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
import { createRequire } from 'node:module';
|
|
|
|
// Загружаем .env из корня монорепо (apps/frontend -> корень)
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
const rootDir = path.resolve(__dirname, '..', '..');
|
|
const require = createRequire(import.meta.url);
|
|
require('dotenv').config({ path: path.join(rootDir, '.env') });
|
|
|
|
import pkg from './package.json' with { type: 'json' };
|
|
|
|
/** @type {import('next').NextConfig} */
|
|
const nextConfig = {
|
|
output: 'standalone',
|
|
images: {
|
|
remotePatterns: [
|
|
{ hostname: 's2.googleusercontent.com' },
|
|
{ hostname: 'images.unsplash.com' },
|
|
{ hostname: 'placehold.co' },
|
|
],
|
|
},
|
|
serverExternalPackages: ['pdf-parse'],
|
|
outputFileTracingIncludes: {
|
|
'/api/**': [
|
|
'./node_modules/@napi-rs/canvas/**',
|
|
'./node_modules/@napi-rs/canvas-linux-x64-gnu/**',
|
|
'./node_modules/@napi-rs/canvas-linux-x64-musl/**',
|
|
],
|
|
},
|
|
env: {
|
|
NEXT_PUBLIC_VERSION: pkg.version,
|
|
},
|
|
async rewrites() {
|
|
const gateway = process.env.API_GATEWAY_URL ?? 'http://localhost:3015';
|
|
return [
|
|
{ source: '/api/chat', destination: `${gateway}/api/chat` },
|
|
{ source: '/api/v1/:path*', destination: `${gateway}/api/v1/:path*` },
|
|
{ source: '/api/config', destination: `${gateway}/api/v1/config` },
|
|
{ source: '/api/config/:path*', destination: `${gateway}/api/v1/config/:path*` },
|
|
{ source: '/api/providers', destination: `${gateway}/api/v1/providers` },
|
|
{ source: '/api/providers/:path*', destination: `${gateway}/api/v1/providers/:path*` },
|
|
{ source: '/api/weather', destination: `${gateway}/api/v1/weather` },
|
|
{ source: '/api/auth/:path*', destination: `${gateway}/api/auth/:path*` },
|
|
{ source: '/api/locale', destination: `${gateway}/api/locale` },
|
|
{ source: '/api/translations/:path*', destination: `${gateway}/api/translations/:path*` },
|
|
{ source: '/api/geo-context', destination: `${gateway}/api/geo-context` },
|
|
{ source: '/api/images', destination: `${gateway}/api/images` },
|
|
{ source: '/api/videos', destination: `${gateway}/api/videos` },
|
|
{ source: '/api/suggestions', destination: `${gateway}/api/suggestions` },
|
|
];
|
|
},
|
|
};
|
|
|
|
const withPWA = require('@ducanh2912/next-pwa').default({
|
|
dest: 'public',
|
|
disable: process.env.NODE_ENV === 'development',
|
|
register: true,
|
|
skipWaiting: true,
|
|
fallbacks: {
|
|
document: '/offline',
|
|
},
|
|
});
|
|
|
|
export default withPWA(nextConfig);
|