mirror of
https://github.com/suitenumerique/docs.git
synced 2026-04-25 17:15:01 +02:00
When developping using the tilt environment, we need to allow the domain docs.127.0.0.1.nip.io in the next configuration. Also the the customization is removed as it is not maintained.
84 lines
2.3 KiB
JavaScript
84 lines
2.3 KiB
JavaScript
const crypto = require('crypto');
|
|
|
|
const { InjectManifest } = require('workbox-webpack-plugin');
|
|
|
|
const buildId = crypto.randomBytes(256).toString('hex').slice(0, 8);
|
|
|
|
/** @type {import('next').NextConfig} */
|
|
const nextConfig = {
|
|
allowedDevOrigins: ['docs.127.0.0.1.nip.io'],
|
|
output: 'export',
|
|
trailingSlash: true,
|
|
images: {
|
|
unoptimized: true,
|
|
},
|
|
compiler: {
|
|
// Enables the styled-components SWC transform
|
|
styledComponents: true,
|
|
},
|
|
experimental: {
|
|
// Tree-shake barrel files for these packages so webpack only bundles the
|
|
// symbols that are actually imported, reducing chunk sizes noticeably for
|
|
// Mantine and the Cunningham design system.
|
|
optimizePackageImports: ['@mantine/core', '@mantine/hooks', 'lodash'],
|
|
},
|
|
generateBuildId: () => buildId,
|
|
env: {
|
|
NEXT_PUBLIC_BUILD_ID: buildId,
|
|
},
|
|
/**
|
|
* In dev mode, Next.js doesn't use Webpack, but Turbopack.
|
|
*/
|
|
turbopack: {
|
|
rules: {
|
|
'*.svg': {
|
|
loaders: ['@svgr/webpack'],
|
|
as: '*.js',
|
|
},
|
|
},
|
|
},
|
|
webpack(config, { isServer }) {
|
|
// Grab the existing rule that handles SVG imports
|
|
const fileLoaderRule = config.module.rules.find((rule) =>
|
|
rule.test?.test?.('.svg'),
|
|
);
|
|
|
|
config.module.rules.push(
|
|
// Reapply the existing rule, but only for svg imports ending in ?url
|
|
{
|
|
...fileLoaderRule,
|
|
test: /\.svg$/i,
|
|
resourceQuery: /url/, // *.svg?url
|
|
},
|
|
// Convert all other *.svg imports to React components
|
|
{
|
|
test: /\.svg$/i,
|
|
issuer: fileLoaderRule.issuer,
|
|
resourceQuery: { not: [...fileLoaderRule.resourceQuery.not, /url/] }, // exclude if *.svg?url
|
|
use: ['@svgr/webpack'],
|
|
},
|
|
);
|
|
|
|
if (!isServer && process.env.NEXT_PUBLIC_SW_DEACTIVATED !== 'true') {
|
|
config.plugins.push(
|
|
new InjectManifest({
|
|
swSrc: './src/features/service-worker/service-worker.ts',
|
|
swDest: '../public/service-worker.js',
|
|
include: [
|
|
({ asset }) => {
|
|
return !!asset.name.match(/.*(static).*/);
|
|
},
|
|
],
|
|
}),
|
|
);
|
|
}
|
|
|
|
// Modify the file loader rule to ignore *.svg, since we have it handled now.
|
|
fileLoaderRule.exclude = /\.svg$/i;
|
|
|
|
return config;
|
|
},
|
|
};
|
|
|
|
module.exports = nextConfig;
|