-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnext.config.ts
53 lines (39 loc) · 1.28 KB
/
next.config.ts
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
import type { NextConfig } from 'next';
import generateName from 'css-class-generator';
const names = {};
const getLocalIdent = ({resourcePath}: { resourcePath: string; }, _: string, name: string): string => {
const key = `${resourcePath}::${name}`;
if (key in names) {
return names[key];
}
return names[key] = generateName(Object.values(names).length);
};
const config: NextConfig = {
poweredByHeader: false,
reactStrictMode: true,
compiler: {
reactRemoveProperties: true,
removeConsole: false
},
experimental: {
cssChunking: 'strict',
reactCompiler: true
},
output: 'export',
webpack: (config, {}) => {
const rules = config.module.rules
.find(rule => typeof rule.oneOf === 'object')
.oneOf.filter(rule => Array.isArray(rule.use));
rules.forEach(rule => rule.use.forEach(moduleLoader => {
if (!moduleLoader.loader?.includes('css-loader') || moduleLoader.loader?.includes('postcss-loader')) {
return;
}
if (!moduleLoader.options.modules) {
return;
}
moduleLoader.options.modules.getLocalIdent = getLocalIdent;
}));
return config;
}
};
export default config;