/** * باندل تک‌فایل برای Docker (release/app.js) بعد از nest build. * تنظیمات alias در ../esbuild.release.config.cjs */ const esbuild = require('esbuild'); const { existsSync, mkdirSync, cpSync, writeFileSync } = require('fs'); const path = require('path'); const root = path.join(__dirname, '..'); const config = require(path.join(root, 'esbuild.release.config.cjs')); async function main() { const entry = path.join(root, config.entryPoints[0]); if (!existsSync(entry)) { console.error('dist/src/main.js یافت نشد. ابتدا اجرا کنید: pnpm run build'); process.exit(1); } const outfile = path.join(root, config.outfile); mkdirSync(path.dirname(outfile), { recursive: true }); await esbuild.build({ ...config, entryPoints: [entry], outfile, }); // Prisma schema + migrations برای generate/migrate داخل کانتینر const prismaSrc = path.join(root, 'prisma'); const prismaDest = path.join(root, 'release', 'prisma'); cpSync(prismaSrc, prismaDest, { recursive: true }); // فقط native runtimeهای خارجی باندل (Prisma) const releasePkg = { name: 'lucky-wheel-api-release', private: true, version: '1.0.0', dependencies: { '@prisma/client': '5.22.0', prisma: '5.22.0', }, }; writeFileSync( path.join(root, 'release', 'package.json'), `${JSON.stringify(releasePkg, null, 2)}\n`, ); console.log('نوشت:', outfile); console.log('نوشت: release/prisma + release/package.json'); } main().catch((err) => { console.error(err); process.exit(1); });