@serverless-rewrite/serverless
Version:
Serverless Framework - Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more
40 lines (31 loc) • 1.05 kB
JavaScript
;
const fs = require('fs');
const path = require('path');
const archiver = require('archiver');
const BbPromise = require('bluebird');
const walkDirSync = require('../fs/walkDirSync');
async 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;