UNPKG

@binpar/mupx

Version:

Production Quality Meteor Deployments

52 lines (45 loc) 1.47 kB
var spawn = require('child_process').spawn; var archiver = require('archiver'); var fs = require('fs'); var pathResolve = require('path').resolve; var _ = require('underscore'); function bundleSources(appPath, buildLocation, dirExclusions, callback) { try { callback = _.once(callback); var bundlePath = pathResolve(buildLocation, 'bundle.tar.gz'); var sourceDir = pathResolve(process.cwd(), appPath); console.log('Source dir: ', sourceDir); var output = fs.createWriteStream(bundlePath); var archive = archiver('tar', { gzip: true, gzipOptions: { level: 6 } }); archive.pipe(output); output.once('close', callback); archive.once('error', function(err) { console.log("=> Archiving failed:", err.message); callback(err); }); var filenames = fs.readdirSync(sourceDir); for(var i = 0; i < filenames.length; i++) { var filename = filenames[i]; if(filename[0] === '.' || dirExclusions.findIndex(function (exclusion) { return filename === exclusion; }) !== -1) { continue; } var filePath = pathResolve(sourceDir, filename); var stats = fs.statSync(filePath); if(stats.isDirectory()) { archive.directory(filePath, filename); } else if(stats.isFile()) { archive.file(filePath, { name: filename }); } } archive.finalize(); } catch(err) { callback(err); } } module.exports = bundleSources;