Fix for production
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* باندل تکفایل برای 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های خارجی باندل
|
||||
const releasePkg = {
|
||||
name: 'lucky-wheel-api-release',
|
||||
private: true,
|
||||
version: '1.0.0',
|
||||
dependencies: {
|
||||
'@prisma/client': '5.22.0',
|
||||
bcrypt: '5.1.1',
|
||||
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);
|
||||
});
|
||||
Reference in New Issue
Block a user