import fs from 'fs' import path from 'path' import { fileURLToPath } from 'url' const __dirname = path.dirname(fileURLToPath(import.meta.url)) const rootDir = path.join(__dirname, '..') const backendSrc = path.join(rootDir, 'backend') const backendDist = path.join(backendSrc, 'dist') console.log('šŸ”Ø Building backend for production...\n') // For JavaScript backend, we just need to copy the source files // and ensure the database directory exists // Create dist directory if (fs.existsSync(backendDist)) { fs.rmSync(backendDist, { recursive: true }) } fs.mkdirSync(backendDist, { recursive: true }) // Copy src directory const srcDir = path.join(backendSrc, 'src') const distSrcDir = path.join(backendDist, 'src') copyDir(srcDir, distSrcDir) console.log('āœ“ Copied source files') // Copy package.json fs.copyFileSync( path.join(backendSrc, 'package.json'), path.join(backendDist, 'package.json') ) console.log('āœ“ Copied package.json') // Create db directory const dbDir = path.join(backendDist, 'db') fs.mkdirSync(dbDir, { recursive: true }) console.log('āœ“ Created database directory') // Create a production start script const startScript = `#!/bin/bash cd "$(dirname "$0")" NODE_ENV=production bun src/index.js ` fs.writeFileSync(path.join(backendDist, 'start.sh'), startScript) fs.chmodSync(path.join(backendDist, 'start.sh'), 0o755) console.log('āœ“ Created start script') console.log('\nāœ… Backend build complete!') console.log(` Output: ${backendDist}`) console.log('\nTo run in production:') console.log(' cd backend/dist') console.log(' ./start.sh') /** * Recursively copy directory */ function copyDir(src, dest) { fs.mkdirSync(dest, { recursive: true }) const entries = fs.readdirSync(src, { withFileTypes: true }) for (const entry of entries) { const srcPath = path.join(src, entry.name) const destPath = path.join(dest, entry.name) if (entry.isDirectory()) { copyDir(srcPath, destPath) } else { fs.copyFileSync(srcPath, destPath) } } }