UNPKG

1.47 kBJavaScriptView Raw
1var spawn = require('child_process').spawn;
2var archiver = require('archiver');
3var fs = require('fs');
4var pathResolve = require('path').resolve;
5var _ = require('underscore');
6
7function bundleSources(appPath, buildLocation, dirExclusions, callback) {
8 try {
9 callback = _.once(callback);
10 var bundlePath = pathResolve(buildLocation, 'bundle.tar.gz');
11 var sourceDir = pathResolve(process.cwd(), appPath);
12 console.log('Source dir: ', sourceDir);
13
14 var output = fs.createWriteStream(bundlePath);
15 var archive = archiver('tar', {
16 gzip: true,
17 gzipOptions: {
18 level: 6
19 }
20 });
21
22 archive.pipe(output);
23 output.once('close', callback);
24
25 archive.once('error', function(err) {
26 console.log("=> Archiving failed:", err.message);
27 callback(err);
28 });
29
30 var filenames = fs.readdirSync(sourceDir);
31 for(var i = 0; i < filenames.length; i++) {
32 var filename = filenames[i];
33 if(dirExclusions.findIndex(function (exclusion) { return filename === exclusion; }) !== -1) {
34 continue;
35 }
36 var filePath = pathResolve(sourceDir, filename);
37 var stats = fs.statSync(filePath);
38 if(stats.isDirectory() && filename[0] !== '.') {
39 archive.directory(filePath, filename);
40 } else if(stats.isFile()) {
41 archive.file(filePath, { name: filename });
42 }
43 }
44 archive.finalize();
45 }
46 catch(err) {
47 callback(err);
48 }
49}
50
51module.exports = bundleSources;