-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
38 lines (32 loc) · 1.09 KB
/
Copy pathindex.js
File metadata and controls
38 lines (32 loc) · 1.09 KB
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
37
38
const fs = require('fs');
const path = require('path');
const zlib = require('zlib');
const mkdirp = require('mkdirp');
const rimraf = require('rimraf');
const sourceDirectory = 'build';
const distDirectory = 'build-gzip';
const createGZipFile = (dir, file) => {
const sourceFilePath = path.join(dir, file);
const distFilePath = dir.replace(sourceDirectory, distDirectory);
mkdirp.sync(distFilePath);
const gZip = zlib.createGzip();
const inputStream = fs.createReadStream(sourceFilePath);
const outputStream = fs.createWriteStream(`${distFilePath}/${file}.gz`, { encoding: 'utf8' });
inputStream
.pipe(gZip)
.pipe(outputStream);
};
const readSourceDirectory = (dir, fileList = []) => {
fs.readdirSync(dir).forEach(file => {
fs.statSync(path.join(dir, file)).isDirectory()
? readSourceDirectory(path.join(dir, file), fileList)
: createGZipFile(dir, file);
});
};
const createGzipBuild = () => {
if (fs.existsSync(distDirectory)) {
rimraf.sync(distDirectory);
}
readSourceDirectory(sourceDirectory);
};
createGzipBuild();