-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.js
More file actions
97 lines (80 loc) · 2.88 KB
/
build.js
File metadata and controls
97 lines (80 loc) · 2.88 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
const { exec } = require('child_process');
const fs = require('fs');
const path = require('path');
console.log('🚀 Starting custom build process...');
// Clean previous builds
if (fs.existsSync('out')) {
fs.rmSync('out', { recursive: true });
console.log('✓ Cleaned previous out directory');
}
if (fs.existsSync('.next')) {
fs.rmSync('.next', { recursive: true });
console.log('✓ Cleaned previous .next directory');
}
// Set up build with timeout
const buildProcess = exec('npx next build', {
env: {
...process.env,
NODE_ENV: 'production'
}
});
let buildOutput = '';
buildProcess.stdout.on('data', (data) => {
process.stdout.write(data);
buildOutput += data;
});
buildProcess.stderr.on('data', (data) => {
process.stderr.write(data);
buildOutput += data;
});
// Set a timeout
const timeout = setTimeout(() => {
console.log('\n⚠️ Build timeout reached, terminating...');
buildProcess.kill();
}, 60000); // 60 seconds timeout
buildProcess.on('exit', (code) => {
clearTimeout(timeout);
if (code === 0) {
console.log('\n✅ Build completed successfully!');
// Add .nojekyll
if (fs.existsSync('out')) {
fs.writeFileSync('out/.nojekyll', '');
console.log('✓ Added .nojekyll file');
}
} else {
console.log('\n❌ Build failed with code:', code);
// Check if it was timeout
if (buildOutput.includes('Creating an optimized production build')) {
console.log('\n📦 Build seems to be hanging. Creating minimal fallback...');
// Create minimal out directory
if (!fs.existsSync('out')) {
fs.mkdirSync('out');
}
// Copy public files
if (fs.existsSync('public')) {
const publicFiles = fs.readdirSync('public');
publicFiles.forEach(file => {
const src = path.join('public', file);
const dest = path.join('out', file);
if (fs.statSync(src).isFile()) {
fs.copyFileSync(src, dest);
}
});
console.log('✓ Copied public files');
}
// Add .nojekyll
fs.writeFileSync('out/.nojekyll', '');
console.log('✓ Added .nojekyll file');
console.log('\n📁 Fallback build created in out/ directory');
}
}
// List out directory contents
if (fs.existsSync('out')) {
console.log('\n📂 Output directory contents:');
const files = fs.readdirSync('out');
files.forEach(file => {
const stats = fs.statSync(path.join('out', file));
console.log(` ${stats.isDirectory() ? '📁' : '📄'} ${file}`);
});
}
});