Files
AboutMe/scripts/build-with-pagefind.cjs
2026-02-02 22:47:52 +03:00

84 lines
2.0 KiB
JavaScript

/* This is a script to build the site with Pagefind */
const { execSync } = require('child_process');
const { existsSync } = require('fs');
const { join } = require('path');
// Detect the platform
function detectPlatform() {
// Check environment variables
if (process.env.VERCEL) {
return 'vercel';
}
if (process.env.CF_PAGES) {
return 'cloudflare';
}
if (process.env.NETLIFY) {
return 'netlify';
}
if (process.env.GITHUB_ACTIONS) {
return 'github';
}
// Check if specific directories exist
if (existsSync('.vercel')) {
return 'vercel';
}
// Default to standard dist directory
return 'default';
}
// Get Pagefind output directory
function getPagefindOutputDir(platform) {
const outputDirs = {
vercel: '.vercel/output/static',
cloudflare: 'dist',
netlify: 'dist',
github: 'dist',
default: 'dist'
};
return outputDirs[platform] || 'dist';
}
// Main function
function main() {
const platform = detectPlatform();
const outputDir = getPagefindOutputDir(platform);
console.log(`🚀 Detected deployment platform: ${platform}`);
console.log(`📁 Pagefind output directory: ${outputDir}`);
try {
// Run Astro build
console.log('🔨 Running Astro build...');
execSync(`npx astro build`.trim(), {
stdio: 'inherit',
cwd: process.cwd() // Ensure in the correct directory
});
// Check if output directory exists
if (!existsSync(outputDir)) {
console.error(`❌ Output directory does not exist: ${outputDir}`);
process.exit(1);
}
// Run Pagefind
console.log(`🔍 Running Pagefind search index generation...`);
execSync(`npx pagefind --site ${outputDir}`, {
stdio: 'inherit',
cwd: process.cwd() // Ensure in the correct directory
});
console.log('✅ Build completed!');
console.log(`📊 Search index generated at: ${outputDir}/pagefind/`);
} catch (error) {
console.error('❌ Build failed:', error.message);
process.exit(1);
}
}
main();