-
Notifications
You must be signed in to change notification settings - Fork 0
/
compress.js
36 lines (28 loc) · 1.04 KB
/
compress.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { createWriteStream } from "fs";
import archiver from "archiver";
// Define the directory to compress
const sourceDir = "dist";
const archiveName = "dist/dist.zip";
// Create an output stream to the archive file
const output = createWriteStream(archiveName);
const archive = archiver("zip", {
zlib: { level: 9 }, // Maximum compression level
});
// Pipe the output stream to the archive file
archive.pipe(output);
// Add files and subdirectories from the specified directory to the archive
archive.directory(sourceDir, false);
// Start the compression process
console.log(`Starting compression of '${sourceDir}' to '${archiveName}'...`);
// Listen for progress events during compression
archive.on("progress", (progress) => {
const percentComplete =
(progress.entries.processed / progress.entries.total) * 100;
console.log(`Progress: ${percentComplete.toFixed(2)}%`);
});
// Finalize the archive
archive.finalize();
// Print a success message
console.log(
`Files and subdirectories from '${sourceDir}' compressed to '${archiveName}'.`
);