Switch to static export with build-time data fetching
- Change from server-side rendering to static export - Fetch data at build time and save as JSON - Remove API routes and tests, use static JSON file - Switch back to WEB platform from WEB_COMPUTE - Update build test for static export - Exclude out directory from security scan - Much simpler and more reliable approach
This commit is contained in:
36
scripts/fetch-data.js
Normal file
36
scripts/fetch-data.js
Normal file
@@ -0,0 +1,36 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { fetchFromConfluence } = require('../src/server/confluence.ts');
|
||||
|
||||
async function fetchData() {
|
||||
console.log('Fetching data from Confluence...');
|
||||
|
||||
const env = {
|
||||
CONFLUENCE_API_URL: process.env.CONFLUENCE_API_URL,
|
||||
CONFLUENCE_TOKEN: process.env.CONFLUENCE_TOKEN,
|
||||
CONFLUENCE_PAGE_ID: process.env.CONFLUENCE_PAGE_ID
|
||||
};
|
||||
|
||||
try {
|
||||
const data = await fetchFromConfluence(env);
|
||||
|
||||
// Create public directory if it doesn't exist
|
||||
const publicDir = path.join(__dirname, '..', 'public');
|
||||
if (!fs.existsSync(publicDir)) {
|
||||
fs.mkdirSync(publicDir, { recursive: true });
|
||||
}
|
||||
|
||||
// Write data to public directory
|
||||
fs.writeFileSync(
|
||||
path.join(publicDir, 'data.json'),
|
||||
JSON.stringify(data, null, 2)
|
||||
);
|
||||
|
||||
console.log(`✅ Fetched ${data.length} filaments`);
|
||||
} catch (error) {
|
||||
console.error('❌ Failed to fetch data:', error.message);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
fetchData();
|
||||
@@ -18,6 +18,7 @@ const excludePatterns = [
|
||||
/\.next/,
|
||||
/dist/,
|
||||
/build/,
|
||||
/out/,
|
||||
/terraform\.tfvars$/,
|
||||
/\.env/,
|
||||
/security-check\.js$/,
|
||||
|
||||
@@ -26,8 +26,7 @@ try {
|
||||
// Check for required files
|
||||
console.log('\n🔍 Checking build output...');
|
||||
const checks = [
|
||||
{ path: '.next/standalone/server.js', name: 'Standalone server' },
|
||||
{ path: '.next/standalone/.next/required-server-files.json', name: 'Required server files' },
|
||||
{ path: 'out/index.html', name: 'Static HTML output' },
|
||||
{ path: '.next/static', name: 'Static directory' },
|
||||
];
|
||||
|
||||
@@ -41,26 +40,6 @@ for (const check of checks) {
|
||||
}
|
||||
}
|
||||
|
||||
// Test the copy command
|
||||
console.log('\n📋 Testing copy command...');
|
||||
try {
|
||||
execSync('cp -r .next/static .next/standalone/.next/', { stdio: 'inherit' });
|
||||
console.log('✅ Copy command successful');
|
||||
} catch (e) {
|
||||
console.error('❌ Copy command failed');
|
||||
allPassed = false;
|
||||
}
|
||||
|
||||
// Check final structure
|
||||
console.log('\n📁 Final structure check...');
|
||||
const finalPath = '.next/standalone/.next/static';
|
||||
if (fs.existsSync(finalPath)) {
|
||||
console.log('✅ Static files copied successfully');
|
||||
} else {
|
||||
console.error('❌ Static files not in final location');
|
||||
allPassed = false;
|
||||
}
|
||||
|
||||
if (!allPassed) {
|
||||
console.error('\n❌ Build test failed! Do not push.');
|
||||
process.exit(1);
|
||||
|
||||
Reference in New Issue
Block a user