forked from polarnl/PolarLearn
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnext.config.ts
More file actions
67 lines (54 loc) · 2.18 KB
/
next.config.ts
File metadata and controls
67 lines (54 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import { withSentryConfig } from '@sentry/nextjs';
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
reactStrictMode: false,
experimental: {
optimizePackageImports: ['lucide-react', '@radix-ui/react-icons'],
serverSourceMaps: true,
},
// Webpack configuration for banner injection
webpack: (config, { dev, isServer }) => {
if (!dev && !isServer) {
class BannerInjectorPlugin {
apply(compiler: any) {
compiler.hooks.emit.tapAsync('BannerInjectorPlugin', (compilation: any, callback: any) => {
Object.keys(compilation.assets).forEach((filename) => {
if (filename.endsWith('.js')) {
const asset = compilation.assets[filename];
const originalSource = asset.source();
const banner = `/* PolarLearn is Open-Source: https://github.com/polarnl/polarlearn */\n/* Wat zit je hier te doen tho? */\n`;
compilation.assets[filename] = {
source: () => banner + originalSource,
size: () => banner.length + originalSource.length
};
}
});
callback();
});
}
}
config.plugins.push(new BannerInjectorPlugin());
}
return config;
},
};
// Only apply Sentry config in production
const config = process.env.NODE_ENV === 'production' && process.env.NEXT_PUBLIC_SENTRY_DSN
? withSentryConfig(nextConfig, {
// For all available options, see:
// https://www.npmjs.com/package/@sentry/webpack-plugin#options
org: "polarnl",
project: "polarlearn",
// Only print logs for uploading source maps in CI
silent: !process.env.CI,
// For all available options, see:
// https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
// Upload a larger set of source maps for prettier stack traces (increases build time)
widenClientFileUpload: true,
// Route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers.
tunnelRoute: "/error-report",
// Automatically tree-shake Sentry logger statements to reduce bundle size
disableLogger: true,
})
: nextConfig;
export default config;