v1.1: Add CIDR subnet filtering and Agent filter in Devices page
This commit is contained in:
commit
966058e2fe
422 files changed
+54656
No files matched your search
+101
@@ -0,0 +1,101 @@
|
||||
// zip-pack.js
|
||||
// Packages the production components into source2-deploy.zip
|
||||
// Excludes development node_modules, local configurations, .git, logs, and temp files,
|
||||
// but retains Next.js standalone server dependencies in .next/standalone/node_modules.
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { ZipArchive } = require('archiver');
|
||||
|
||||
// Target location (parent folder: c:\z_Siregar\Magang DBS\1. BackOne-DPI\source2-deploy.zip)
|
||||
const outputZip = path.join(__dirname, '..', 'source2-deploy.zip');
|
||||
console.log(`[ZIP] Target destination: ${outputZip}`);
|
||||
|
||||
// Create write stream
|
||||
const output = fs.createWriteStream(outputZip);
|
||||
const archive = new ZipArchive({
|
||||
zlib: { level: 9 } // Maximum compression
|
||||
});
|
||||
|
||||
output.on('close', function() {
|
||||
console.log(`[ZIP] ✓ source2-deploy.zip successfully created!`);
|
||||
console.log(`[ZIP] Total size: ${(archive.pointer() / 1024 / 1024).toFixed(2)} MB`);
|
||||
});
|
||||
|
||||
archive.on('warning', function(err) {
|
||||
if (err.code === 'ENOENT') {
|
||||
console.warn('[ZIP] Warning:', err);
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
|
||||
archive.on('error', function(err) {
|
||||
throw err;
|
||||
});
|
||||
|
||||
archive.pipe(output);
|
||||
|
||||
// Whitelisted files to include
|
||||
const filesToInclude = [
|
||||
'package.json',
|
||||
'package-lock.json',
|
||||
'ecosystem.config.js',
|
||||
'deploy-server-setup.sh',
|
||||
'start-with-env.js',
|
||||
'next.config.ts',
|
||||
'postcss.config.mjs',
|
||||
'tsconfig.json',
|
||||
'.htaccess'
|
||||
];
|
||||
|
||||
// Whitelisted directories to include
|
||||
const foldersToInclude = [
|
||||
'.next',
|
||||
'backend',
|
||||
'proxy',
|
||||
'public',
|
||||
'scripts'
|
||||
];
|
||||
|
||||
// Filter function to exclude non-standalone node_modules and Next.js cache/dev folders
|
||||
function filterNodeModules(entry) {
|
||||
const name = entry.name;
|
||||
|
||||
// Exclude node_modules EXCEPT those inside standalone folder
|
||||
if (name.includes('node_modules') && !name.includes('standalone')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Exclude Next.js dev server assets and compiler cache
|
||||
if (name.startsWith('cache/') || name === 'cache' || name.startsWith('dev/') || name === 'dev') {
|
||||
return false;
|
||||
}
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
// Append folders
|
||||
foldersToInclude.forEach(folder => {
|
||||
const folderPath = path.join(__dirname, folder);
|
||||
if (fs.existsSync(folderPath)) {
|
||||
console.log(`[ZIP] Packaging folder: ${folder}`);
|
||||
archive.directory(folderPath, folder, filterNodeModules);
|
||||
} else {
|
||||
console.log(`[ZIP] Folder not found: ${folder}`);
|
||||
}
|
||||
});
|
||||
|
||||
// Append files
|
||||
filesToInclude.forEach(file => {
|
||||
const filePath = path.join(__dirname, file);
|
||||
if (fs.existsSync(filePath)) {
|
||||
console.log(`[ZIP] Packaging file: ${file}`);
|
||||
archive.file(filePath, { name: file });
|
||||
} else {
|
||||
console.log(`[ZIP] File not found: ${file}`);
|
||||
}
|
||||
});
|
||||
|
||||
console.log('[ZIP] Creating archive...');
|
||||
archive.finalize();
|
||||
Reference in new issue
Block a user