ente/next.config.js

76 lines
2.7 KiB
JavaScript

const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
});
const withWorkbox = require('@ente-io/next-with-workbox');
// const { withSentryConfig } = require('@sentry/nextjs');
const cp = require('child_process');
const gitSha = cp.execSync('git rev-parse --short HEAD', {
cwd: __dirname,
encoding: 'utf8',
});
const { createSecureHeaders } = require('next-secure-headers');
const { SubresourceIntegrityPlugin } = require('webpack-subresource-integrity');
module.exports = withWorkbox(
// withSentryConfig(
withBundleAnalyzer({
env: {
SENTRY_RELEASE: gitSha,
},
workbox: {
swSrc: 'src/serviceWorker.js',
exclude: [/manifest\.json$/i],
},
// added header for local testing only as they are not exported with the app
headers() {
return [
{
// Apply these headers to all routes in your application....
source: '/(.*)',
headers: [
...createSecureHeaders({
contentSecurityPolicy: {
directives: {
defaultSrc: "'none'",
imgSrc: "'self' blob:",
styleSrc: "'self' 'unsafe-inline'",
fontSrc: "'self'",
scriptSrc: "'self' 'unsafe-eval'",
connectSrc:
"'self' https://api.ente.io data:",
reportURI:
'https://csp-reporter.ente.workers.dev',
reportTo:
'https://csp-reporter.ente.workers.dev',
},
},
}),
],
},
];
},
// https://dev.to/marcinwosinek/how-to-add-resolve-fallback-to-webpack-5-in-nextjs-10-i6j
webpack: (config, { isServer }) => {
if (!isServer) {
config.resolve.fallback.fs = false;
config.output.crossOriginLoading = 'anonymous';
config.plugins = config.plugins || [];
config.plugins.push(
new SubresourceIntegrityPlugin({
hashFuncNames: ['sha256', 'sha384'],
enabled: true,
})
);
}
return config;
},
})
);
/* { release: gitSha }
);*/