69 lines
2.1 KiB
JavaScript
69 lines
2.1 KiB
JavaScript
/**
|
|
* باندل تکفایل + نصب Prisma لوکال داخل release/
|
|
* خروجی کامل برای Docker کپیonly: app.js + prisma + node_modules
|
|
*/
|
|
const esbuild = require('esbuild');
|
|
const { existsSync, mkdirSync, cpSync, writeFileSync, rmSync } = require('fs');
|
|
const path = require('path');
|
|
const { execSync } = require('child_process');
|
|
|
|
const root = path.join(__dirname, '..');
|
|
const releaseDir = path.join(root, 'release');
|
|
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);
|
|
}
|
|
|
|
mkdirSync(releaseDir, { recursive: true });
|
|
|
|
const outfile = path.join(root, config.outfile);
|
|
await esbuild.build({
|
|
...config,
|
|
entryPoints: [entry],
|
|
outfile,
|
|
});
|
|
console.log('نوشت:', outfile);
|
|
|
|
const prismaDest = path.join(releaseDir, 'prisma');
|
|
if (existsSync(prismaDest)) {
|
|
rmSync(prismaDest, { recursive: true, force: true });
|
|
}
|
|
cpSync(path.join(root, 'prisma'), prismaDest, { recursive: true });
|
|
|
|
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(releaseDir, 'package.json'), `${JSON.stringify(releasePkg, null, 2)}\n`);
|
|
|
|
// نصب و 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);
|
|
}
|
|
|
|
main().catch((err) => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|