braindrops.nicwands.com/bin/buildBackend.js
2026-07-23 15:27:12 -04:00

72 lines
2 KiB
JavaScript

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)
}
}
}