mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
83 lines
2.6 KiB
JavaScript
83 lines
2.6 KiB
JavaScript
const withBundleAnalyzer = require('@next/bundle-analyzer')({
|
||
enabled: process.env.BUNDLE_ANALYZER === 'true',
|
||
});
|
||
|
||
const withRoutes = require('nextjs-routes/config')({
|
||
outDir: 'nextjs',
|
||
});
|
||
|
||
const headers = require('./nextjs/headers');
|
||
const redirects = require('./nextjs/redirects');
|
||
const rewrites = require('./nextjs/rewrites');
|
||
|
||
/** @type {import('next').NextConfig} */
|
||
const moduleExports = {
|
||
transpilePackages: [
|
||
'react-syntax-highlighter',
|
||
],
|
||
reactStrictMode: true,
|
||
// Turbopack config (Next.js 16 default bundler) – mirrors webpack customizations below
|
||
turbopack: {
|
||
rules: {
|
||
'*.svg': {
|
||
loaders: [ '@svgr/webpack' ],
|
||
as: '*.js',
|
||
},
|
||
},
|
||
// Stub Node built-ins only in browser bundles; Node (SSR, instrumentation) keeps real modules
|
||
resolveAlias: {
|
||
fs: { browser: './nextjs/empty-module.js' },
|
||
net: { browser: './nextjs/empty-module.js' },
|
||
tls: { browser: './nextjs/empty-module.js' },
|
||
},
|
||
},
|
||
// Used when BUNDLE_ANALYZER=true (run: next build --webpack) or for custom webpack tooling
|
||
webpack(config) {
|
||
config.module.rules.push(
|
||
{
|
||
test: /\.svg$/,
|
||
use: [ '@svgr/webpack' ],
|
||
},
|
||
);
|
||
config.resolve.fallback = { fs: false, net: false, tls: false };
|
||
config.externals.push('pino-pretty', 'lokijs', 'encoding');
|
||
|
||
config.experiments = { ...config.experiments, topLevelAwait: true };
|
||
// Tell webpack the target supports async/await so it stops warning about top-level await
|
||
// Top-level await is belong to ES2017 specification that is adopted by all major browsers and Node.js.
|
||
config.output.environment = {
|
||
...config.output.environment,
|
||
asyncFunction: true,
|
||
};
|
||
|
||
return config;
|
||
},
|
||
// NOTE: all config functions should be static and not depend on any environment variables
|
||
// since all variables will be passed to the app only at runtime and there is now way to change Next.js config at this time
|
||
// if you are stuck and strongly believe what you need some sort of flexibility here please fill free to join the discussion
|
||
// https://github.com/blockscout/frontend/discussions/167
|
||
rewrites,
|
||
redirects,
|
||
headers,
|
||
output: 'standalone',
|
||
productionBrowserSourceMaps: false,
|
||
serverExternalPackages: [
|
||
'@opentelemetry/sdk-node',
|
||
'@opentelemetry/auto-instrumentations-node',
|
||
'pino-pretty',
|
||
'lokijs',
|
||
'encoding',
|
||
],
|
||
experimental: {
|
||
staleTimes: {
|
||
dynamic: 30,
|
||
'static': 180,
|
||
},
|
||
},
|
||
|
||
// workaround for passing outDir to nextjs-routes CLI
|
||
outDir: 'nextjs',
|
||
};
|
||
|
||
module.exports = withBundleAnalyzer(withRoutes(moduleExports));
|