/** @type {import('next').NextConfig} */ const { version } = require('./package.json'); const nextConfig = { output: 'standalone', // Ziel des Builds. update-app.sh baut nach .next-build, damit das laufende .next // waehrend des Builds unberuehrt bleibt, und schaltet erst nach erfolgreichem // Smoke-Test um. Ohne das zerstoert ein fehlgeschlagener Build die laufende App. distDir: process.env.NEXT_DIST_DIR || '.next', eslint: { // Aus: Der Build meldet ESLint-Fehler. Warnungen blockieren ihn nicht, nur Errors. // // Kurzzeitig stand hier wieder true, weil ich ESLint fuer den OOM-Absturz des Builds // auf dem Produktionscontainer verantwortlich hielt. Eine Messung widerlegte das: // Spitzenspeicher mit ESLint 2.590 MB, ohne 2.595 MB -- kein Unterschied. Die Ursache // war Nodes Standard-Heap-Limit von rund 1,5 GB; dafuer setzt scripts/update-app.sh // jetzt NODE_OPTIONS. ignoreDuringBuilds: false, }, typescript: { // Aus: Der Build bricht bei Typfehlern ab. Bis v1.118.1 stand hier true — dadurch // liefen mehrfach fehlende Importe durch, die zur Laufzeit ReferenceError geworfen // haetten, waehrend der Build "erfolgreich" meldete. ignoreBuildErrors: false, }, optimizeFonts: false, env: { NEXT_PUBLIC_APP_VERSION: version, }, experimental: { serverComponentsExternalPackages: ['ical.js', 'tsdav'], }, webpack: (config, { isServer }) => { // Ignore .md files in node_modules (fixes apple-icloud README.md parse error) config.module.rules.push({ test: /\.md$/, include: /node_modules/, type: 'asset/source', }); return config; }, }; module.exports = nextConfig;