Files
Lucky_Wheel/apps/api/scripts/bundle-release.cjs
T
2026-09-10 23:10:52 +03:30

56 lines
1.6 KiB
JavaScript

/**
* باندل تک‌فایل برای 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);
});