Files
Lucky_Wheel/apps/api/scripts/bundle-release.cjs
T

69 lines
2.1 KiB
JavaScript
Raw Normal View History

2026-09-10 22:37:29 +03:30
/**
2026-09-10 23:40:22 +03:30
* باندل تک‌فایل + نصب Prisma لوکال داخل release/
* خروجی کامل برای Docker کپی‌only: app.js + prisma + node_modules
2026-09-10 22:37:29 +03:30
*/
const esbuild = require('esbuild');
2026-09-10 23:40:22 +03:30
const { existsSync, mkdirSync, cpSync, writeFileSync, rmSync } = require('fs');
2026-09-10 22:37:29 +03:30
const path = require('path');
2026-09-10 23:40:22 +03:30
const { execSync } = require('child_process');
2026-09-10 22:37:29 +03:30
const root = path.join(__dirname, '..');
2026-09-10 23:40:22 +03:30
const releaseDir = path.join(root, 'release');
2026-09-10 22:37:29 +03:30
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);
}
2026-09-10 23:40:22 +03:30
mkdirSync(releaseDir, { recursive: true });
2026-09-10 22:37:29 +03:30
2026-09-10 23:40:22 +03:30
const outfile = path.join(root, config.outfile);
2026-09-10 22:37:29 +03:30
await esbuild.build({
...config,
entryPoints: [entry],
outfile,
});
2026-09-10 23:40:22 +03:30
console.log('نوشت:', outfile);
2026-09-10 22:37:29 +03:30
2026-09-10 23:40:22 +03:30
const prismaDest = path.join(releaseDir, 'prisma');
if (existsSync(prismaDest)) {
rmSync(prismaDest, { recursive: true, force: true });
}
cpSync(path.join(root, 'prisma'), prismaDest, { recursive: true });
2026-09-10 22:37:29 +03:30
const releasePkg = {
name: 'lucky-wheel-api-release',
private: true,
version: '1.0.0',
dependencies: {
'@prisma/client': '5.22.0',
prisma: '5.22.0',
},
};
2026-09-10 23:40:22 +03:30
writeFileSync(path.join(releaseDir, 'package.json'), `${JSON.stringify(releasePkg, null, 2)}\n`);
2026-09-10 22:37:29 +03:30
2026-09-10 23:40:22 +03:30
// نصب و generate کاملاً لوکال — ایمیج Docker دیگر npm/apk نمی‌زند
console.log('در حال npm install داخل release (لوکال)...');
execSync('npm install --omit=dev', {
cwd: releaseDir,
stdio: 'inherit',
env: { ...process.env, PRISMA_SKIP_POSTINSTALL_GENERATE: '1' },
});
console.log('در حال prisma generate (باینری لینوکس برای Docker)...');
execSync('npx prisma generate --schema=./prisma/schema.prisma', {
cwd: releaseDir,
stdio: 'inherit',
});
console.log('آماده‌ی کپی‌only:', releaseDir);
2026-09-10 22:37:29 +03:30
}
main().catch((err) => {
console.error(err);
process.exit(1);
});