refactor: add simple mode to releases

This commit is contained in:
alam00000
2026-04-05 13:01:45 +05:30
parent 816179edef
commit 2f0d48c01b
2 changed files with 43 additions and 52 deletions

View File

@@ -8,58 +8,51 @@ import { execSync } from 'child_process';
const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
const version = packageJson.version;
console.log(`📦 Building dist folder for version ${version}...`);
// Run the build command
try {
execSync('npm run build', { stdio: 'inherit' });
console.log('✅ Build completed successfully');
} catch (error) {
console.error('❌ Build failed:', error.message);
process.exit(1);
}
// Package the dist folder into a zip file
import { createWriteStream, existsSync } from 'fs';
import { pipeline } from 'stream';
import { promisify } from 'util';
import archiver from 'archiver';
const distDir = path.resolve('./dist');
const zipPath = path.resolve(`./dist-${version}.zip`);
function buildAndZip(label, envVars, zipName) {
console.log(`📦 Building ${label} dist for version ${version}...`);
// Check if dist directory exists
if (!existsSync(distDir)) {
console.error('❌ dist directory does not exist. Please run build first.');
process.exit(1);
try {
execSync(`${envVars} npm run build`, { stdio: 'inherit', shell: true });
console.log(`${label} build completed successfully`);
} catch (error) {
console.error(`${label} build failed:`, error.message);
process.exit(1);
}
const distDir = path.resolve('./dist');
const zipPath = path.resolve(zipName);
if (!existsSync(distDir)) {
console.error('❌ dist directory does not exist.');
process.exit(1);
}
return new Promise((resolve, reject) => {
const output = createWriteStream(zipPath);
const archive = archiver('zip', { zlib: { level: 9 } });
output.on('close', () => {
console.log(`✅ Created ${zipPath} (${archive.pointer()} bytes)`);
resolve();
});
archive.on('error', (err) => {
console.error('❌ Error creating zip:', err);
reject(err);
});
archive.pipe(output);
archive.directory(distDir, false);
archive.finalize();
});
}
// Create a write stream for the zip file
const output = createWriteStream(zipPath);
const archive = archiver('zip', {
zlib: { level: 9 } // Maximum compression
});
// Event listener for when the archive is finished
output.on('close', () => {
console.log(`✅ Successfully created ${zipPath}. Total bytes: ${archive.pointer()}`);
});
// Event listener for errors
archive.on('error', (err) => {
console.error('❌ Error creating zip:', err);
process.exit(1);
});
// Pipe the archive to the file
archive.pipe(output);
// Append the dist directory to the archive
archive.directory(distDir, false);
// Finalize the archive
archive.finalize();
output.on('close', () => {
console.log(`✅ Successfully created ${zipPath}. Total bytes: ${archive.pointer()}`);
});
await buildAndZip('Full mode', '', `dist-${version}.zip`);
await buildAndZip(
'Simple mode',
'SIMPLE_MODE=true',
`dist-simple-${version}.zip`
);