serverless/lib/utils/fs/createZipFile.js
Piotr Grzesik f62fc2ee9c refactor: Revert removal of bluebird from lib/utils
This reverts commit 820cc1f581bfd502e5452f5c9935301ec86f9d14.
2021-03-04 11:06:44 +01:00

40 lines
1.0 KiB
JavaScript

'use strict';
const fs = require('fs');
const path = require('path');
const archiver = require('archiver');
const BbPromise = require('bluebird');
const walkDirSync = require('../fs/walkDirSync');
function createZipFile(srcDirPath, outputFilePath) {
const files = walkDirSync(srcDirPath).map((file) => ({
input: file,
output: file.replace(path.join(srcDirPath, path.sep), ''),
}));
return new BbPromise((resolve, reject) => {
const output = fs.createWriteStream(outputFilePath);
const archive = archiver('zip', {
zlib: { level: 9 },
});
output.on('open', () => {
archive.pipe(output);
files.forEach((file) => {
// TODO: update since this is REALLY slow
if (fs.lstatSync(file.input).isFile()) {
archive.append(fs.createReadStream(file.input), { name: file.output });
}
});
archive.finalize();
});
archive.on('error', (err) => reject(err));
output.on('close', () => resolve(outputFilePath));
});
}
module.exports = createZipFile;