-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnext.config.mjs
More file actions
60 lines (48 loc) · 1.21 KB
/
Copy pathnext.config.mjs
File metadata and controls
60 lines (48 loc) · 1.21 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
import { readFileSync } from "node:fs";
function packagePath(pkg) {
return `node_modules/${pkg}`;
}
function collectPackageClosure(seedPackages) {
let lock;
try {
lock = JSON.parse(
readFileSync(new URL("./package-lock.json", import.meta.url), "utf8"),
);
} catch {
return seedPackages;
}
const packages = lock.packages ?? {};
const seen = new Set();
function visit(pkg) {
if (seen.has(pkg)) return;
const entry = packages[packagePath(pkg)];
if (!entry) return;
seen.add(pkg);
for (const dep of Object.keys(entry.dependencies ?? {})) {
visit(dep);
}
for (const dep of Object.keys(entry.optionalDependencies ?? {})) {
visit(dep);
}
}
seedPackages.forEach(visit);
return [...new Set([...seedPackages, ...seen])];
}
const tracedPackages = collectPackageClosure([
"lighthouse",
"@paulirish/trace_engine",
"axe-core",
"puppeteer-core",
"@sparticuz/chromium-min",
]);
const nextConfig = {
serverExternalPackages: [
"puppeteer-core",
"@sparticuz/chromium-min",
"lighthouse",
],
outputFileTracingIncludes: {
"/api/scan": tracedPackages.map((pkg) => `./node_modules/${pkg}/**/*`),
},
};
export default nextConfig;