72 lines
2 KiB
JavaScript
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)
|
|
}
|
|
}
|
|
}
|